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