TrackedChangeTest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 24
c 1
b 0
f 1
dl 0
loc 41
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testFromAmazonRequestInvalidEnumValues() 0 9 1
A testFromAmazonRequestFullMapping() 0 17 1
A testFromAmazonRequestMissingFields() 0 9 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace MaxBeckers\AmazonAlexa\Test\Request;
6
7
use MaxBeckers\AmazonAlexa\Request\MediaState;
8
use MaxBeckers\AmazonAlexa\Request\TrackedChange;
9
use PHPUnit\Framework\TestCase;
10
11
class TrackedChangeTest extends TestCase
12
{
13
    public function testFromAmazonRequestFullMapping(): void
14
    {
15
        $request = [
16
            'uid' => 'u123',
17
            'name' => 'PlaybackState',
18
            'from' => MediaState::PLAYING->value,
19
            'to' => MediaState::PAUSED->value,
20
            'utcTime' => '2024-12-01T12:34:56Z',
21
        ];
22
23
        $change = TrackedChange::fromAmazonRequest($request);
24
25
        $this->assertSame('u123', $change->uid);
26
        $this->assertSame('PlaybackState', $change->name);
27
        $this->assertSame(MediaState::PLAYING, $change->from);
28
        $this->assertSame(MediaState::PAUSED, $change->to);
29
        $this->assertSame('2024-12-01T12:34:56Z', $change->utcTime);
30
    }
31
32
    public function testFromAmazonRequestMissingFields(): void
33
    {
34
        $change = TrackedChange::fromAmazonRequest([]);
35
36
        $this->assertNull($change->uid);
37
        $this->assertNull($change->name);
38
        $this->assertNull($change->from);
39
        $this->assertNull($change->to);
40
        $this->assertNull($change->utcTime);
41
    }
42
43
    public function testFromAmazonRequestInvalidEnumValues(): void
44
    {
45
        $change = TrackedChange::fromAmazonRequest([
46
            'from' => 'NOPE',
47
            'to' => 'NAH',
48
        ]);
49
50
        $this->assertNull($change->from);
51
        $this->assertNull($change->to);
52
    }
53
}
54