@@ -39,7 +39,40 @@ public function dontSeeOrphanEvent(array|object|string $expected = null): void
39
39
if ($ expected === null ) {
40
40
$ this ->assertSame (0 , $ data ->count ());
41
41
} else {
42
- $ this ->assertEventNotTriggered ($ data , $ expected );
42
+ $ this ->assertEventTriggered ($ data , $ expected , true );
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Verifies that there were no events during the test.
48
+ * Both regular and orphan events are checked.
49
+ *
50
+ * ```php
51
+ * <?php
52
+ * $I->dontSeeEvent();
53
+ * $I->dontSeeEvent('App\MyEvent');
54
+ * $I->dontSeeEvent(new App\Events\MyEvent());
55
+ * $I->dontSeeEvent(['App\MyEvent', 'App\MyOtherEvent']);
56
+ * ```
57
+ *
58
+ * @param array|object|string|null $expected
59
+ */
60
+ public function dontSeeEvent (array |object |string $ expected = null ): void
61
+ {
62
+ $ eventCollector = $ this ->grabEventCollector (__FUNCTION__ );
63
+
64
+ $ data = [
65
+ $ eventCollector ->getOrphanedEvents (),
66
+ $ eventCollector ->getCalledListeners (),
67
+ ];
68
+ $ expected = is_array ($ expected ) ? $ expected : [$ expected ];
69
+
70
+ if ($ expected === null ) {
71
+ foreach ($ data as $ dataItem ) {
72
+ $ this ->assertSame (0 , $ dataItem ->count ());
73
+ }
74
+ } else {
75
+ $ this ->assertEventTriggered ($ data , $ expected , true );
43
76
}
44
77
}
45
78
@@ -123,6 +156,35 @@ public function seeOrphanEvent(array|object|string $expected): void
123
156
$ this ->assertEventTriggered ($ data , $ expected );
124
157
}
125
158
159
+ /**
160
+ * Verifies that one or more events were dispatched during the test.
161
+ * Both regular and orphan events are checked.
162
+ *
163
+ * If you need to verify that expected event is not orphan,
164
+ * add `dontSeeOrphanEvent` call.
165
+ *
166
+ * ```php
167
+ * <?php
168
+ * $I->seeEvent('App\MyEvent');
169
+ * $I->seeEvent(new App\Events\MyEvent());
170
+ * $I->seeEvent(['App\MyEvent', 'App\MyOtherEvent']);
171
+ * ```
172
+ *
173
+ * @param array|object|string $expected
174
+ */
175
+ public function seeEvent (array |object |string $ expected ): void
176
+ {
177
+ $ eventCollector = $ this ->grabEventCollector (__FUNCTION__ );
178
+
179
+ $ data = [
180
+ $ eventCollector ->getOrphanedEvents (),
181
+ $ eventCollector ->getCalledListeners (),
182
+ ];
183
+ $ expected = is_array ($ expected ) ? $ expected : [$ expected ];
184
+
185
+ $ this ->assertEventTriggered ($ data , $ expected );
186
+ }
187
+
126
188
/**
127
189
* Verifies that one or more event listeners were called during the test.
128
190
*
@@ -177,33 +239,38 @@ public function seeEventListenerIsCalled(
177
239
$ this ->assertListenerCalled ($ data , $ expected , $ withEvents );
178
240
}
179
241
180
- protected function assertEventNotTriggered (Data $ data , array $ expected ): void
181
- {
182
- $ actual = $ data ->getValue (true );
183
-
184
- foreach ($ expected as $ expectedEvent ) {
185
- $ expectedEvent = is_object ($ expectedEvent ) ? $ expectedEvent ::class : $ expectedEvent ;
186
- $ this ->assertFalse (
187
- $ this ->eventWasTriggered ($ actual , (string )$ expectedEvent ),
188
- "The ' {$ expectedEvent }' event triggered "
189
- );
190
- }
191
- }
242
+ protected function assertEventTriggered (
243
+ array |Data $ data ,
244
+ array $ expected ,
245
+ bool $ invertAssertion = false
246
+ ): void {
247
+ $ assertTrue = !$ invertAssertion ;
248
+ $ data = is_array ($ data ) ? $ data : [$ data ];
249
+ $ totalEvents = array_sum (array_map ('count ' , $ data ));
192
250
193
- protected function assertEventTriggered (Data $ data , array $ expected ): void
194
- {
195
- if ($ data ->count () === 0 ) {
251
+ if ($ assertTrue && $ totalEvents === 0 ) {
196
252
$ this ->fail ('No event was triggered ' );
197
253
}
198
254
199
- $ actual = $ data ->getValue (true );
255
+ $ actualEventsCollection = array_map ( static fn ( Data $ data) => $ data ->getValue (true ), $ data );
200
256
201
257
foreach ($ expected as $ expectedEvent ) {
202
258
$ expectedEvent = is_object ($ expectedEvent ) ? $ expectedEvent ::class : $ expectedEvent ;
203
- $ this ->assertTrue (
204
- $ this ->eventWasTriggered ($ actual , (string )$ expectedEvent ),
205
- "The ' {$ expectedEvent }' event did not trigger "
206
- );
259
+ $ message = $ assertTrue
260
+ ? "The ' {$ expectedEvent }' event did not trigger "
261
+ : "The ' {$ expectedEvent }' event triggered " ;
262
+
263
+ $ eventTriggered = false ;
264
+
265
+ foreach ($ actualEventsCollection as $ actualEvents ) {
266
+ $ eventTriggered = $ eventTriggered || $ this ->eventWasTriggered ($ actualEvents , (string )$ expectedEvent );
267
+ }
268
+
269
+ if ($ assertTrue ) {
270
+ $ this ->assertTrue ($ eventTriggered , $ message );
271
+ } else {
272
+ $ this ->assertFalse ($ eventTriggered , $ message );
273
+ }
207
274
}
208
275
}
209
276
@@ -246,13 +313,11 @@ protected function eventWasTriggered(array $actual, string $expectedEvent): bool
246
313
247
314
foreach ($ actual as $ actualEvent ) {
248
315
if (is_array ($ actualEvent )) { // Called Listeners
249
- if (str_starts_with ($ actualEvent ['pretty ' ], $ expectedEvent )) {
250
- $ triggered = true ;
251
- }
252
- } else { // Orphan Events
253
- if ($ actualEvent === $ expectedEvent ) {
316
+ if ($ actualEvent ['event ' ] === $ expectedEvent ) {
254
317
$ triggered = true ;
255
318
}
319
+ } elseif ($ actualEvent === $ expectedEvent ) { // Orphan Events
320
+ $ triggered = true ;
256
321
}
257
322
}
258
323
0 commit comments