5
5
namespace JeroenG \Autowire \Tests \Unit ;
6
6
7
7
use Generator ;
8
+ use JeroenG \Autowire \Attribute \Autowire ;
9
+ use JeroenG \Autowire \Attribute \Configure ;
10
+ use JeroenG \Autowire \Attribute \Listen ;
8
11
use JeroenG \Autowire \ConfigurationType ;
9
12
use JeroenG \Autowire \ConfigurationValue ;
10
13
use JeroenG \Autowire \Crawler ;
14
17
use JeroenG \Autowire \Tests \Support \Attributes \CustomAutowire ;
15
18
use JeroenG \Autowire \Tests \Support \Attributes \CustomConfigure ;
16
19
use JeroenG \Autowire \Tests \Support \Attributes \CustomListen ;
20
+ use JeroenG \Autowire \Tests \Support \Attributes \EmptyClass ;
21
+ use JeroenG \Autowire \Tests \Support \Attributes \NotAnAttribute ;
22
+ use JeroenG \Autowire \Tests \Support \Attributes \WrongAttribute ;
17
23
use JeroenG \Autowire \Tests \Support \Subject \Contracts \GoodbyeInterface ;
18
24
use JeroenG \Autowire \Tests \Support \Subject \Contracts \HelloInterface ;
19
25
use JeroenG \Autowire \Tests \Support \Subject \Contracts \HowDoYouDoInterface ;
@@ -118,32 +124,7 @@ public function test_it_throws_exception_when_implementation_can_not_be_configur
118
124
$ this ->expectExceptionMessage ('No JeroenG\Autowire\Attribute\Configure found in ' .GoodbyeInterface::class);
119
125
$ electrician ->configure (GoodbyeInterface::class);
120
126
}
121
-
122
- /** @dataProvider invalidAutowireAttributeProvider */
123
- public function test_it_throws_an_exception_on_an_invalid_custom_autowire_attribute (string $ invalidAttribute ): void
124
- {
125
- $ crawler = Crawler::in ([SubjectDirectory::ALL ]);
126
127
127
- $ this ->expectException (InvalidAttributeException::class);
128
-
129
- new Electrician ($ crawler , $ invalidAttribute );
130
- }
131
-
132
- public function invalidAutowireAttributeProvider (): Generator
133
- {
134
- yield 'text ' => [
135
- 'Hello, World! ' ,
136
- ];
137
-
138
- yield 'non-attribute class ' => [
139
- HowDoYouDoInterface::class,
140
- ];
141
-
142
- yield 'wrong attribute class ' => [
143
- CustomConfigure::class,
144
- ];
145
- }
146
-
147
128
public function test_it_can_tell_if_class_has_custom_autowire_attribute (): void
148
129
{
149
130
$ crawler = Crawler::in ([SubjectDirectory::ALL ]);
@@ -163,29 +144,55 @@ public function test_it_can_connect_implementation_with_custom_autowire_attribut
163
144
self ::assertEquals (HowDoYouDoInterface::class, $ wire ->interface );
164
145
self ::assertEquals (MoonClass::class, $ wire ->implementation );
165
146
}
166
-
167
- /** @dataProvider invalidConfigureAttributeProvider */
168
- public function test_it_throws_an_exception_on_an_invalid_custom_configure_attribute (string $ invalidAttribute ): void
147
+
148
+ /** @dataProvider invalidAttributeProvider */
149
+ public function test_it_throws_an_exception_on_an_invalid_custom_autowire_attribute (string $ invalidAttribute, string $ message ): void
169
150
{
170
151
$ crawler = Crawler::in ([SubjectDirectory::ALL ]);
171
152
172
153
$ this ->expectException (InvalidAttributeException::class);
154
+ $ this ->expectExceptionMessage (sprintf ($ message , Autowire::class));
173
155
174
- $ electrician = new Electrician (crawler: $ crawler , configureAttribute : $ invalidAttribute );
156
+ new Electrician (crawler: $ crawler , autowireAttribute : $ invalidAttribute );
175
157
}
176
-
177
- public function invalidConfigureAttributeProvider (): Generator
158
+
159
+ /** @dataProvider invalidAttributeProvider */
160
+ public function test_it_throws_an_exception_on_an_invalid_custom_configure_attribute (string $ invalidAttribute , string $ message ): void
178
161
{
179
- yield 'text ' => [
162
+ $ crawler = Crawler::in ([SubjectDirectory::ALL ]);
163
+
164
+ $ this ->expectException (InvalidAttributeException::class);
165
+ $ this ->expectExceptionMessage (sprintf ($ message , Configure::class));
166
+
167
+ new Electrician (crawler: $ crawler , configureAttribute: $ invalidAttribute );
168
+ }
169
+
170
+ /** @dataProvider invalidAttributeProvider */
171
+ public function test_it_throws_an_exception_on_an_invalid_custom_listen_attribute (string $ invalidAttribute , string $ message ): void
172
+ {
173
+ $ crawler = Crawler::in ([SubjectDirectory::ALL ]);
174
+
175
+ $ this ->expectException (InvalidAttributeException::class);
176
+ $ this ->expectExceptionMessage (sprintf ($ message , Listen::class));
177
+
178
+ new Electrician (crawler: $ crawler , listenAttribute: $ invalidAttribute );
179
+ }
180
+
181
+ public function invalidAttributeProvider (): Generator
182
+ {
183
+ yield 'This is text, what are you doing? ' => [
180
184
'Hello, World! ' ,
185
+ 'Class Hello, World! does not exist '
181
186
];
182
-
183
- yield 'non-attribute class ' => [
184
- HowDoYouDoInterface::class,
187
+
188
+ yield 'This is a class, but not an attribute. ' => [
189
+ EmptyClass::class,
190
+ 'Class JeroenG\Autowire\Tests\Support\Attributes\EmptyClass is not an attribute '
185
191
];
186
-
187
- yield 'wrong attribute class ' => [
188
- CustomAutowire::class,
192
+
193
+ yield 'Wrong attribute class. ' => [
194
+ WrongAttribute::class,
195
+ 'Class JeroenG\Autowire\Tests\Support\Attributes\WrongAttribute does not implement %s '
189
196
];
190
197
}
191
198
@@ -233,15 +240,6 @@ public function test_it_can_retrieve_events_from_listener(): void
233
240
], $ events );
234
241
}
235
242
236
- public function test_it_throws_an_exception_on_an_invalid_custom_listen_attribute (): void
237
- {
238
- $ crawler = Crawler::in ([SubjectDirectory::ALL ]);
239
-
240
- $ this ->expectException (InvalidAttributeException::class);
241
-
242
- new Electrician (crawler: $ crawler , listenAttribute: HelloInterface::class);
243
- }
244
-
245
243
public function test_it_throws_exception_on_a_class_missing_listeners (): void
246
244
{
247
245
$ this ->expectException (FaultyWiringException::class);
0 commit comments