Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
23 / 23
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
10use Nyholm\Psr7\Response;
11use Nyholm\Psr7\ServerRequest;
12use Phexium\Presentation\Middleware\SessionMiddleware;
13use Tests\Phexium\Fake\Plugin\Http\RequestHandler as FakeRequestHandler;
14use Tests\Phexium\Fake\Plugin\Session\Session as FakeSession;
15
16test('Start the session when middleware is processed', function (): void {
17    $session = new FakeSession();
18    expect($session->isStarted())->toBeFalse();
19
20    $middleware = new SessionMiddleware($session);
21    $request = new ServerRequest('GET', '/');
22    $response = new Response(200);
23    $handler = new FakeRequestHandler($response);
24
25    $result = $middleware->process($request, $handler);
26
27    expect($session->isStarted())->toBeTrue();
28    expect($handler->getHandleCallCount())->toBe(1);
29    expect($result)->toBe($response);
30});
31
32test('Save the session after request is handled', function (): void {
33    $session = new FakeSession();
34    expect($session->getSaveCallCount())->toBe(0);
35
36    $middleware = new SessionMiddleware($session);
37    $request = new ServerRequest('GET', '/');
38    $response = new Response(200);
39    $handler = new FakeRequestHandler($response);
40
41    $result = $middleware->process($request, $handler);
42
43    expect($session->getSaveCallCount())->toBe(1);
44    expect($result)->toBe($response);
45});