@@ -39,7 +39,40 @@ public function dontSeeOrphanEvent(array|object|string $expected = null): void
3939 if ($ expected === null ) {
4040 $ this ->assertSame (0 , $ data ->count ());
4141 } 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 );
4376 }
4477 }
4578
@@ -123,6 +156,35 @@ public function seeOrphanEvent(array|object|string $expected): void
123156 $ this ->assertEventTriggered ($ data , $ expected );
124157 }
125158
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+
126188 /**
127189 * Verifies that one or more event listeners were called during the test.
128190 *
@@ -177,33 +239,38 @@ public function seeEventListenerIsCalled(
177239 $ this ->assertListenerCalled ($ data , $ expected , $ withEvents );
178240 }
179241
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 ));
192250
193- protected function assertEventTriggered (Data $ data , array $ expected ): void
194- {
195- if ($ data ->count () === 0 ) {
251+ if ($ assertTrue && $ totalEvents === 0 ) {
196252 $ this ->fail ('No event was triggered ' );
197253 }
198254
199- $ actual = $ data ->getValue (true );
255+ $ actualEventsCollection = array_map ( static fn ( Data $ data) => $ data ->getValue (true ), $ data );
200256
201257 foreach ($ expected as $ expectedEvent ) {
202258 $ 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+ }
207274 }
208275 }
209276
@@ -246,13 +313,11 @@ protected function eventWasTriggered(array $actual, string $expectedEvent): bool
246313
247314 foreach ($ actual as $ actualEvent ) {
248315 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 ) {
254317 $ triggered = true ;
255318 }
319+ } elseif ($ actualEvent === $ expectedEvent ) { // Orphan Events
320+ $ triggered = true ;
256321 }
257322 }
258323
0 commit comments