Blame view
tests/TestCase.php
2.37 KB
e77200db5 Initial commit |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
<?php namespace FootyRoom\Tests; use Illuminate\Events\Dispatcher; use PHPUnit\Framework\MockObject\MockObject; use FootyRoom\Providers\EventServiceProvider; use AlbertCht\Lumen\Testing\TestCase as AlbertChtTestCase; abstract class TestCase extends AlbertChtTestCase { /** * Creates the application. * * @return \Laravel\Lumen\Application */ public function createApplication() { $app = require __DIR__.'/../bootstrap/app.php'; $app->make('url')->forceRootUrl( 'http://'.$app->make(\FootyRoom\Config::class)->get('domain') ); return $app; } public function setUp() { parent::setUp(); $uses = array_flip(class_uses_recursive(get_class($this))); if (isset($uses[SetsUpFixtures::class])) { $this->setUpFixtures(); } } /** * Tests that a specified listener in app's EventServiceProvider is called. */ protected function expectListenerCalled(string $listener): MockObject { [$class, $method] = explode('@', $listener); $method = $method ?: 'handle'; $instance = $this->getMockBuilder($class) ->setMethods([$method]) ->disableOriginalConstructor() ->getMock(); $instance->expects($this->once())->method($method); $this->app->instance($class, $instance); // Create a new dispatcher that will register only one listener that we are interested in. $dispatcher = new class(app()) extends Dispatcher { public function listen($events, $listener) { if ($listener === $this->expectedListener) { parent::listen($events, $listener); } } }; $dispatcher->expectedListener = $listener; $this->app->instance('events', $dispatcher); // Register all listeners again, because we replaced dispatcher with new empty instance. (new EventServiceProvider($this->app))->boot(); return $instance; } public function assertArrayHaveKeys(array $keys, $data) { foreach($keys as $key){ $this->assertArrayHasKey($key, $data); } } public function assertObjectHaveAttributes(array $keys, $data) { foreach($keys as $key){ $this->assertObjectHasAttribute($key, $data); } } } |