summaryrefslogtreecommitdiff
path: root/tests/Unit/BasicStrategyTest.php
blob: 2a0b550364d6aa995d90ae81c8967f1673be5cfb (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
<?php

use Lightscale\Router\BasicStrategy;
use Lightscale\Router\Enums\HttpMethod;
use Lightscale\Router\Exceptions\NotFoundException;
use Lightscale\Router\Route;
use Lightscale\Router\RouteCall;
use Lightscale\Router\Test\Utils\TestCallable;
use Nyholm\Psr7\Factory\Psr17Factory;

it('initialises')
    ->expect(fn() => new BasicStrategy)
    ->toBeInstanceOf(BasicStrategy::class);

it('throws on not found', function() {
    (new BasicStrategy)->notFound(
        (new Psr17Factory)->createServerRequest(
            HttpMethod::Get->value,
            '/testing/testing'
        )
    );
})->throws(NotFoundException::class);

it('calls route', function () {
    $factory = new Psr17Factory;
    $response = $factory->createResponse(200, 'OK');
    $cb = TestCallable::make(fn () => $response);
    $res = (new BasicStrategy)->runRoute($rc = new RouteCall(
        $factory->createServerRequest(
            HttpMethod::Get->value,
            '/testing/testing'
        ),
        new Route(
            HttpMethod::Get,
            $cb
        ),
        []
    ));

    $cb->assertIsCalled();
    $call = $cb->getLastCall();
    expect($call->args[0] ?? null)->toBe($rc);
    expect($res)->toBe($response);
});