Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
26 / 26
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3// ╔════════════════════════════════════════════════════════════╗
4// ║ MIT Licence (#Expat) - https://opensource.org/licenses/MIT ║
5// ║ Copyright 2026 Frederic Poeydomenge <dyno@phexium.com>     ║
6// ╚════════════════════════════════════════════════════════════╝
7
8declare(strict_types=1);
9
10pest()->group('integration');
11
12use Nyholm\Psr7\Response;
13use Nyholm\Psr7\ServerRequest;
14use Phexium\Presentation\Middleware\SessionMiddleware;
15use Tests\Phexium\Fake\Plugin\Http\RequestHandler as FakeRequestHandler;
16use Tests\Phexium\Fake\Plugin\Session\Session as FakeSession;
17
18describe('Middleware execution', function (): void {
19    it('starts the session when the middleware is processed', function (): void {
20        $session = new FakeSession();
21        expect($session->isStarted())->toBeFalse();
22
23        $middleware = new SessionMiddleware($session);
24        $request = new ServerRequest('GET', '/');
25        $response = new Response(200);
26        $handler = new FakeRequestHandler($response);
27
28        $result = $middleware->process($request, $handler);
29
30        expect($session->isStarted())->toBeTrue();
31        expect($handler->getHandleCallCount())->toBe(1);
32        expect($result)->toBe($response);
33    });
34
35    it('saves the session after the request is handled', function (): void {
36        $session = new FakeSession();
37        expect($session->getSaveCallCount())->toBe(0);
38
39        $middleware = new SessionMiddleware($session);
40        $request = new ServerRequest('GET', '/');
41        $response = new Response(200);
42        $handler = new FakeRequestHandler($response);
43
44        $result = $middleware->process($request, $handler);
45
46        expect($session->getSaveCallCount())->toBe(1);
47        expect($result)->toBe($response);
48    });
49});