Skip to content

Commit

Permalink
Revert "[7.x] Extracting dispatcher tests into files (#33203)"
Browse files Browse the repository at this point in the history
This reverts commit 254c482.
  • Loading branch information
driesvints committed Jun 16, 2020
1 parent 3133579 commit a938e20
Show file tree
Hide file tree
Showing 3 changed files with 211 additions and 241 deletions.
211 changes: 211 additions & 0 deletions tests/Events/EventsDispatcherTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,62 @@ public function testMultiplePushedEventsWillGetFlushed()
$this->assertSame('taylor otwell', $_SERVER['__event.test']);
}

public function testWildcardListeners()
{
unset($_SERVER['__event.test']);
$d = new Dispatcher;
$d->listen('foo.bar', function () {
$_SERVER['__event.test'] = 'regular';
});
$d->listen('foo.*', function () {
$_SERVER['__event.test'] = 'wildcard';
});
$d->listen('bar.*', function () {
$_SERVER['__event.test'] = 'nope';
});

$response = $d->dispatch('foo.bar');

$this->assertEquals([null, null], $response);
$this->assertSame('wildcard', $_SERVER['__event.test']);
}

public function testWildcardListenersWithResponses()
{
unset($_SERVER['__event.test']);
$d = new Dispatcher;
$d->listen('foo.bar', function () {
return 'regular';
});
$d->listen('foo.*', function () {
return 'wildcard';
});
$d->listen('bar.*', function () {
return 'nope';
});

$response = $d->dispatch('foo.bar');

$this->assertEquals(['regular', 'wildcard'], $response);
}

public function testWildcardListenersCacheFlushing()
{
unset($_SERVER['__event.test']);
$d = new Dispatcher;
$d->listen('foo.*', function () {
$_SERVER['__event.test'] = 'cached_wildcard';
});
$d->dispatch('foo.bar');
$this->assertSame('cached_wildcard', $_SERVER['__event.test']);

$d->listen('foo.*', function () {
$_SERVER['__event.test'] = 'new_wildcard';
});
$d->dispatch('foo.bar');
$this->assertSame('new_wildcard', $_SERVER['__event.test']);
}

public function testListenersCanBeRemoved()
{
unset($_SERVER['__event.test']);
Expand All @@ -186,6 +242,39 @@ public function testListenersCanBeRemoved()
$this->assertFalse(isset($_SERVER['__event.test']));
}

public function testWildcardListenersCanBeRemoved()
{
unset($_SERVER['__event.test']);
$d = new Dispatcher;
$d->listen('foo.*', function () {
$_SERVER['__event.test'] = 'foo';
});
$d->forget('foo.*');
$d->dispatch('foo.bar');

$this->assertFalse(isset($_SERVER['__event.test']));
}

public function testWildcardCacheIsClearedWhenListenersAreRemoved()
{
unset($_SERVER['__event.test']);

$d = new Dispatcher;
$d->listen('foo*', function () {
$_SERVER['__event.test'] = 'foo';
});
$d->dispatch('foo');

$this->assertSame('foo', $_SERVER['__event.test']);

unset($_SERVER['__event.test']);

$d->forget('foo*');
$d->dispatch('foo');

$this->assertFalse(isset($_SERVER['__event.test']));
}

public function testListenersCanBeFound()
{
$d = new Dispatcher;
Expand All @@ -196,4 +285,126 @@ public function testListenersCanBeFound()
});
$this->assertTrue($d->hasListeners('foo'));
}

public function testWildcardListenersCanBeFound()
{
$d = new Dispatcher;
$this->assertFalse($d->hasListeners('foo.*'));

$d->listen('foo.*', function () {
//
});
$this->assertTrue($d->hasListeners('foo.*'));
$this->assertTrue($d->hasListeners('foo.bar'));
}

public function testEventPassedFirstToWildcards()
{
$d = new Dispatcher;
$d->listen('foo.*', function ($event, $data) {
$this->assertSame('foo.bar', $event);
$this->assertEquals(['first', 'second'], $data);
});
$d->dispatch('foo.bar', ['first', 'second']);

$d = new Dispatcher;
$d->listen('foo.bar', function ($first, $second) {
$this->assertSame('first', $first);
$this->assertSame('second', $second);
});
$d->dispatch('foo.bar', ['first', 'second']);
}

public function testClassesWork()
{
unset($_SERVER['__event.test']);
$d = new Dispatcher;
$d->listen(ExampleEvent::class, function () {
$_SERVER['__event.test'] = 'baz';
});
$d->dispatch(new ExampleEvent);

$this->assertSame('baz', $_SERVER['__event.test']);
}

public function testArrayCallbackListenersAreHandled()
{
unset($_SERVER['__event.ExampleListener']);
$d = new Dispatcher;
$d->listen(ExampleEvent::class, [ExampleListener::class, 'hear']);
$d->dispatch(new ExampleEvent);

$this->assertTrue($_SERVER['__event.ExampleListener']);
}

public function testEventClassesArePayload()
{
unset($_SERVER['__event.test']);
$d = new Dispatcher;
$d->listen(ExampleEvent::class, function ($payload) {
$_SERVER['__event.test'] = $payload;
});
$d->dispatch($e = new ExampleEvent, ['foo']);

$this->assertSame($e, $_SERVER['__event.test']);
}

public function testInterfacesWork()
{
unset($_SERVER['__event.test']);
$d = new Dispatcher;
$d->listen(SomeEventInterface::class, function () {
$_SERVER['__event.test'] = 'bar';
});
$d->dispatch(new AnotherEvent);

$this->assertSame('bar', $_SERVER['__event.test']);
}

public function testBothClassesAndInterfacesWork()
{
unset($_SERVER['__event.test']);
$_SERVER['__event.test'] = [];
$d = new Dispatcher;
$d->listen(AnotherEvent::class, function ($p) {
$_SERVER['__event.test'][] = $p;
$_SERVER['__event.test1'] = 'fooo';
});
$d->listen(SomeEventInterface::class, function ($p) {
$_SERVER['__event.test'][] = $p;
$_SERVER['__event.test2'] = 'baar';
});
$d->dispatch($e = new AnotherEvent, ['foo']);

$this->assertSame($e, $_SERVER['__event.test'][0]);
$this->assertSame($e, $_SERVER['__event.test'][1]);
$this->assertSame('fooo', $_SERVER['__event.test1']);
$this->assertSame('baar', $_SERVER['__event.test2']);

unset($_SERVER['__event.test1']);
unset($_SERVER['__event.test2']);
}
}

class ExampleEvent
{
//
}

interface SomeEventInterface
{
//
}

class AnotherEvent implements SomeEventInterface
{
//
}

class ExampleListener
{
public function hear()
{
$_SERVER['__event.ExampleListener'] = true;
}
}
133 changes: 0 additions & 133 deletions tests/Events/EventsDispatcherWildcardTest.php

This file was deleted.

Loading

0 comments on commit a938e20

Please sign in to comment.