app = new class extends ApplicationAbstract { protected $appName = 'Api'; }; $this->app->router = new Router(); $this->app->dispatcher = new Dispatcher($this->app); } public function testAttributes() { self::assertObjectHasAttribute('controllers', $this->app->dispatcher); } public function testClosure() { $localization = new Localization(); self::assertTrue( !empty( $this->app->dispatcher->dispatch( function($req, $resp, $data = null) { return true; }, new Request(new Http(''), $localization), new Response($localization) ) ) ); } public function testPathMethod() { $localization = new Localization(); self::assertTrue( !empty( $this->app->dispatcher->dispatch( 'phpOMS\tests\Dispatcher\TestController:testFunction', new Request(new Http(''), $localization), new Response($localization) ) ) ); } public function testPathMethodInArray() { $localization = new Localization(); self::assertTrue( !empty( $this->app->dispatcher->dispatch( ['dest' => 'phpOMS\tests\Dispatcher\TestController:testFunction'], new Request(new Http(''), $localization), new Response($localization) ) ) ); } public function testPathStatic() { $localization = new Localization(); self::assertTrue( !empty( $this->app->dispatcher->dispatch( 'phpOMS\tests\Dispatcher\TestController::testFunctionStatic', new Request(new Http(''), $localization), new Response($localization) ) ) ); } public function testArray() { $localization = new Localization(); self::assertTrue( !empty( $this->app->dispatcher->dispatch( [ function($req, $resp, $data = null) { return true; }, 'phpOMS\tests\Dispatcher\TestController:testFunction', 'phpOMS\tests\Dispatcher\TestController::testFunctionStatic', ], new Request(new Http(''), $localization), new Response($localization) ) ) ); } /** * @expectedException \UnexpectedValueException */ public function testInvalidDestination() { $this->app->dispatcher->dispatch(true); } /** * @expectedException \phpOMS\System\File\PathException */ public function testInvalidControllerPath() { $this->app->dispatcher->dispatch('phpOMS\tests\Dispatcher\TestControllers::testFunctionStatic'); } /** * @expectedException \Exception */ public function testInvalidControllerFunction() { $this->app->dispatcher->dispatch('phpOMS\tests\Dispatcher\TestController::testFunctionStaticINVALID'); } /** * @expectedException \UnexpectedValueException */ public function testInvalidControllerString() { $this->app->dispatcher->dispatch('phpOMS\tests\Dispatcher\TestController::testFunctionStatic:failure'); } }