@@ -88,6 +88,77 @@ public function itCanBeConstructedValidTemplateModels(DynamicTemplateModel $temp
88
88
$ this ->assertFalse ($ validatedMessage ->isInvalid ());
89
89
}
90
90
91
+ public function emptyBodyModels (): Generator
92
+ {
93
+ yield 'Response model with empty text ' => [
94
+ new DynamicResponseModel ([
95
+ 'AllContentIsValid ' => true ,
96
+ 'Subject ' => [
97
+ 'RenderedContent ' => $ subject = 'Some rendered subject ' ,
98
+ ],
99
+ 'HtmlBody ' => [
100
+ 'RenderedContent ' => $ htmlBody = 'Some rendered HTML ' ,
101
+ ],
102
+ 'TextBody ' => null ,
103
+ ]),
104
+ compact ('subject ' , 'htmlBody ' ) + ['textBody ' => '' ],
105
+ ];
106
+
107
+ yield 'Response model with empty html ' => [
108
+ new DynamicResponseModel ([
109
+ 'AllContentIsValid ' => true ,
110
+ 'Subject ' => [
111
+ 'RenderedContent ' => $ subject = 'Some rendered subject ' ,
112
+ ],
113
+ 'HtmlBody ' => null ,
114
+ 'TextBody ' => [
115
+ 'RenderedContent ' => $ textBody = 'Some rendered text ' ,
116
+ ],
117
+ ]),
118
+ compact ('subject ' , 'textBody ' ) + ['htmlBody ' => '' ],
119
+ ];
120
+
121
+ yield 'Response model with empty html and text ' => [
122
+ new DynamicResponseModel ([
123
+ 'AllContentIsValid ' => true ,
124
+ 'Subject ' => [
125
+ 'RenderedContent ' => $ subject = 'Some rendered subject ' ,
126
+ ],
127
+ 'HtmlBody ' => null ,
128
+ 'TextBody ' => null ,
129
+ ]),
130
+ compact ('subject ' ) + ['htmlBody ' => '' , 'textBody ' => '' ],
131
+ ];
132
+ }
133
+
134
+ /**
135
+ * @test
136
+ * @dataProvider emptyBodyModels
137
+ */
138
+ public function itCanHandleEmptyBodyValues (DynamicResponseModel $ renderedTemplate , array $ expectations ): void
139
+ {
140
+ $ this ->setupFaker ();
141
+ $ templateModel = DynamicTemplateModel::fromVariables ([
142
+ 'project ' => $ this ->faker ->name ,
143
+ 'user ' => [
144
+ 'email ' => $ this ->faker ->email ,
145
+ 'name ' => $ this ->faker ->firstName ,
146
+ 'preferences ' => [],
147
+ ],
148
+ 'list ' => [],
149
+ ]);
150
+ $ suggestedModel = new DynamicResponseModel (self ::SUGGESTED_MODEL );
151
+
152
+ $ validatedMessage = ValidatedTemplateMessage::validate ($ renderedTemplate , $ templateModel , $ suggestedModel );
153
+
154
+ $ this ->assertSame ($ expectations ['subject ' ], $ validatedMessage ->subject );
155
+ $ this ->assertSame ($ expectations ['htmlBody ' ], $ validatedMessage ->htmlBody );
156
+ $ this ->assertSame ($ expectations ['textBody ' ], $ validatedMessage ->textBody );
157
+ $ this ->assertEmpty ($ validatedMessage ->missingVariables );
158
+ $ this ->assertEmpty ($ validatedMessage ->invalidVariables );
159
+ $ this ->assertFalse ($ validatedMessage ->isInvalid ());
160
+ }
161
+
91
162
public function invalidTemplateModels (): Generator
92
163
{
93
164
$ this ->setupFaker ();
0 commit comments