Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
21 / 21
100.00% covered (success)
100.00%
1 / 1
CRAP
n/a
0 / 0
getAbstractDomainExceptionClass
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
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\Domain\Exception\AbstractDomainException;
13
14function getAbstractDomainExceptionClass(string $message, array $context = []): AbstractDomainException
15{
16    return new class($message, $context) extends AbstractDomainException {};
17}
18
19describe('Properties', function (): void {
20    it('returns provided context data', function (): void {
21        $context = ['userId' => '123', 'bookId' => '456'];
22        $exception = getAbstractDomainExceptionClass('dummy', $context);
23
24        expect($exception->getContext())->toBe($context);
25    });
26
27    it('returns exception data as array', function (): void {
28        $message = 'Test error message';
29        $context = ['userId' => '123', 'bookId' => '456'];
30        $exception = getAbstractDomainExceptionClass($message, $context);
31
32        $result = $exception->toArray();
33
34        expect($result)->toBeArray();
35        expect($result['message'])->toBe($message);
36        expect($result['context'])->toBe($context);
37        expect($result['code'])->toBe(0);
38        expect($result['file'])->toContain('AbstractDomainExceptionTest.php');
39        expect($result['line'])->toBeGreaterThan(0);
40    });
41});