Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
46 / 46
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('unit');
11
12use Phexium\Plugin\Session\Adapter\OdanFlash;
13use Tests\Phexium\Fake\Plugin\Session\OdanFlash as FakeOdanFlash;
14
15beforeEach(function (): void {
16    $this->odanFlash = new FakeOdanFlash();
17    $this->flashAdapter = new OdanFlash($this->odanFlash);
18});
19
20describe('Flash messages', function (): void {
21    it('delegates add to Odan FlashInterface', function (): void {
22        $this->flashAdapter->add('success', 'Operation successful');
23
24        expect($this->odanFlash->wasMethodCalled('add', ['success', 'Operation successful']))->toBeTrue();
25    });
26
27    it('retrieves messages from Odan FlashInterface', function (): void {
28        $expectedMessages = ['Message 1', 'Message 2'];
29
30        $this->odanFlash->setMessages('error', $expectedMessages);
31
32        $result = $this->flashAdapter->get('error');
33
34        expect($result)->toBe($expectedMessages);
35        expect($this->odanFlash->wasMethodCalled('get', ['error']))->toBeTrue();
36    });
37
38    it('retrieves all messages from Odan FlashInterface', function (): void {
39        $expectedMessages = [
40            'success' => ['Success message'],
41            'error' => ['Error message 1', 'Error message 2'],
42        ];
43
44        $this->odanFlash->setMessages('success', ['Success message']);
45        $this->odanFlash->setMessages('error', ['Error message 1', 'Error message 2']);
46
47        $result = $this->flashAdapter->all();
48
49        expect($result)->toBe($expectedMessages);
50        expect($this->odanFlash->wasMethodCalled('all'))->toBeTrue();
51    });
52
53    it('returns true when level has messages', function (): void {
54        $this->odanFlash->setMessages('warning', ['A warning message']);
55
56        $result = $this->flashAdapter->has('warning');
57
58        expect($result)->toBeTrue();
59        expect($this->odanFlash->wasMethodCalled('has', ['warning']))->toBeTrue();
60    });
61
62    it('returns false when level does not exist', function (): void {
63        $result = $this->flashAdapter->has('info');
64
65        expect($result)->toBeFalse();
66        expect($this->odanFlash->wasMethodCalled('has', ['info']))->toBeTrue();
67    });
68});
69
70describe('Lifecycle', function (): void {
71    it('delegates clear to Odan FlashInterface', function (): void {
72        $this->flashAdapter->clear();
73
74        expect($this->odanFlash->wasMethodCalled('clear'))->toBeTrue();
75    });
76});