summaryrefslogtreecommitdiff
path: root/tests/Unit/RouteDefinitionTest.php
blob: 6e3900e247ed625335ed93eb6cfc63d60f68e28e (plain)
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
<?php

declare(strict_types=1);

use Lightscale\Router\Enums\HttpMethod;
use Lightscale\Router\Group;
use Lightscale\Router\Route;
use Lightscale\Router\RouteDefinition;
use Lightscale\Router\Router;
use Lightscale\Router\Test\Utils\TestMiddleware;

it('initalizes')
    ->expect(fn () => new RouteDefinition(
        new Router(),
        new Route(HttpMethod::Get, fn () => null),
    ))
    ->toBeInstanceOf(RouteDefinition::class);

it('adds route to named routes', function () {
    $router = new Router();
    $route = new Route(HttpMethod::Get, fn () => null);
    $definition = new RouteDefinition($router, $route);
    expect($definition->name('testing'))->toBe($definition);
    expect($router->getNamedRoute('testing'))->toBe($route);
});

it('adds route to named routes in a group', function () {
    $router = new Router();
    $route = new Route(HttpMethod::Get, fn () => null);
    (new RouteDefinition($router, $route))
        ->inGroup((new Group($router, null))->name('test.'))
        ->name('testing');

    expect($router->getNamedRoute('test.testing'))->toBe($route);
});

it('gets the route', function () {
    $def = new RouteDefinition(
        new Router(),
        $route = new Route(HttpMethod::Get, fn () => null),
    );

    expect($def->getRoute())->toBe($route);
});

it('adds middleware to route', function () {
    $def = new RouteDefinition(
        new Router(),
        $route = new Route(HttpMethod::Get, fn () => null),
    );

    $mw = new TestMiddleware();
    expect($def->middleware($mw))->toBe($def);
    expect($route->getMiddleware())
        ->toHaveCount(1)
        ->{0}->toBe($mw);
});