. */ declare(strict_types=1); namespace SP\Tests\Core\Bootstrap; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\TestCase; use RuntimeException; use SP\Core\Bootstrap\RouteContext; /** * Class RouteContextTest */ #[Group('unitary')] class RouteContextTest extends TestCase { public static function wrongRouteProvider(): array { return [ ['testController_1'], ['testController/action_1'] ]; } public function testGetRouteContextData() { $route = 'testController/testAction/param1/param2'; $out = RouteContext::getRouteContextData($route); $this->assertEquals('testController', $out->controller); $this->assertEquals('testAction', $out->actionName); $this->assertEquals('testActionAction', $out->methodName); $this->assertEquals('param1', $out->methodParams[0]); $this->assertEquals('param2', $out->methodParams[1]); } public function testGetRouteContextDataWithNoaction() { $route = 'testController'; $out = RouteContext::getRouteContextData($route); $this->assertEquals('testController', $out->controller); $this->assertEquals('index', $out->actionName); $this->assertEquals('indexAction', $out->methodName); $this->assertCount(0, $out->methodParams); } public function testGetRouteContextDataWithActionAndNoParam() { $route = 'testController/testAction'; $out = RouteContext::getRouteContextData($route); $this->assertEquals('testController', $out->controller); $this->assertEquals('testAction', $out->actionName); $this->assertEquals('testActionAction', $out->methodName); $this->assertCount(0, $out->methodParams); } #[DataProvider('wrongRouteProvider')] public function testGetRouteContextDataWithException(string $route) { $this->expectException(RuntimeException::class); $this->expectExceptionMessage('Invalid route'); RouteContext::getRouteContextData($route); } }