testApplicationInboundEvent()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 20
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 11
c 1
b 0
f 0
nc 4
nop 4
dl 0
loc 20
rs 9.9
1
<?php
2
3
namespace App\Tests\Infrastructure\Events;
4
5
use PHPUnit\Framework\TestCase;
6
use Symfony\Component\Uid\Ulid;
7
8
class ApplicationInboundEventSpec extends TestCase
9
{
10
    /**
11
     * @param mixed $val
12
     * @param string $methodName
13
     * @param bool $nullable
14
     * @param mixed $expectedVal
15
     *
16
     * @dataProvider getInboundData
17
     */
18
    public function testApplicationInboundEvent(mixed $val, string $methodName, bool $nullable, mixed $expectedVal)
19
    {
20
        //given:
21
        $event = new TestApplicationInboundEvent(["val" => $val, "_eventId" => new Ulid()]);
22
23
24
        //when:
25
        $resultVal = null;
26
        $exception = null;
27
        try {
28
            $resultVal = $event->$methodName("val", $nullable);
29
        } catch (\Exception $e) {
30
            $exception = $e;
31
        }
32
33
        //then:
34
        if (!$nullable && $resultVal == null) {
35
            self::assertNotNull($exception);
36
        } else {
37
            self::assertEquals($expectedVal, $resultVal);
38
        }
39
40
    }
41
42
    public function getInboundData(): array
43
    {
44
        $dt = new \DateTime();
45
        $ulid = new Ulid();
46
        $dtStr = $dt->format("Y-m-d H:i:s");
47
        $dt = \DateTime::createFromFormat("Y-m-d H:i:s", $dtStr);
48
        return [
49
            ['val', 'string', false, 'val'],
50
            [null, 'string', false, 'val'],
51
            [null, 'string', true, null],
52
53
            [1, 'int', false, 1],
54
            ['1', 'int', false, 1],
55
            [null, 'int', false, 1],
56
            [null, 'int', true, null],
57
58
            [$ulid, 'ulid', false, $ulid],
59
            [(string)$ulid, 'ulid', false, $ulid],
60
            [null, 'ulid', false, $ulid],
61
            [null, 'ulid', true, null],
62
63
            [$dt, 'dateTime', false, $dt],
64
            [$dtStr, 'dateTime', false, $dt],
65
            [null, 'dateTime', false, $dt],
66
            [null, 'dateTime', true, null],
67
68
            [['val'], 'array', false, ['val']],
69
            [null, 'array', false, ['val']],
70
            [null, 'array', true, null],
71
        ];
72
    }
73
}