Passed
Pull Request — master (#97)
by Maximilian
03:52
created

SettingsTest   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 137
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 71
dl 0
loc 137
rs 10
c 1
b 0
f 1
wmc 13

13 Methods

Rating   Name   Duplication   Size   Complexity  
A testJsonSerializeWithZeroIdleTimeout() 0 7 1
A testJsonSerializeWithPartialProperties() 0 10 1
A testJsonSerializeWithDefaultValues() 0 9 1
A testJsonSerializeWithPseudoLocalizationOnly() 0 10 1
A testJsonSerializeWithAllProperties() 0 11 1
A testConstructorWithDefaultParameters() 0 7 1
A testJsonSerializeWithIntegerIdleTimeout() 0 8 1
A testJsonSerializeWithSupportsResizingTrue() 0 9 1
A testJsonSerializeWithFloatIdleTimeout() 0 8 1
A testImplementsJsonSerializable() 0 5 1
A testJsonSerializePropertyOrder() 0 10 1
A testJsonSerializeWithSupportsResizingFalse() 0 6 1
A testConstructorWithAllParameters() 0 11 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace MaxBeckers\AmazonAlexa\Test\Response\Directives\APL\Document;
6
7
use MaxBeckers\AmazonAlexa\Response\Directives\APL\Document\PseudoLocalization;
8
use MaxBeckers\AmazonAlexa\Response\Directives\APL\Document\Settings;
9
use PHPUnit\Framework\TestCase;
10
11
class SettingsTest extends TestCase
12
{
13
    public function testConstructorWithAllParameters(): void
14
    {
15
        $idleTimeout = 5000;
16
        $pseudoLocalization = $this->createMock(PseudoLocalization::class);
17
        $supportsResizing = true;
18
19
        $settings = new Settings($idleTimeout, $pseudoLocalization, $supportsResizing);
20
21
        $this->assertSame($idleTimeout, $settings->idleTimeout);
22
        $this->assertSame($pseudoLocalization, $settings->pseudoLocalization);
23
        $this->assertTrue($settings->supportsResizing);
24
    }
25
26
    public function testConstructorWithDefaultParameters(): void
27
    {
28
        $settings = new Settings();
29
30
        $this->assertNull($settings->idleTimeout);
31
        $this->assertNull($settings->pseudoLocalization);
32
        $this->assertFalse($settings->supportsResizing);
33
    }
34
35
    public function testJsonSerializeWithAllProperties(): void
36
    {
37
        $idleTimeout = 3000;
38
        $pseudoLocalization = $this->createMock(PseudoLocalization::class);
39
40
        $settings = new Settings($idleTimeout, $pseudoLocalization, true);
41
        $result = $settings->jsonSerialize();
42
43
        $this->assertSame($idleTimeout, $result['idleTimeout']);
44
        $this->assertSame($pseudoLocalization, $result['pseudoLocalization']);
45
        $this->assertTrue($result['supportsResizing']);
46
    }
47
48
    public function testJsonSerializeWithDefaultValues(): void
49
    {
50
        $settings = new Settings();
51
        $result = $settings->jsonSerialize();
52
53
        $this->assertEmpty($result);
54
        $this->assertArrayNotHasKey('idleTimeout', $result);
55
        $this->assertArrayNotHasKey('pseudoLocalization', $result);
56
        $this->assertArrayNotHasKey('supportsResizing', $result);
57
    }
58
59
    public function testJsonSerializeWithIntegerIdleTimeout(): void
60
    {
61
        $settings = new Settings(10000);
62
        $result = $settings->jsonSerialize();
63
64
        $this->assertArrayHasKey('idleTimeout', $result);
65
        $this->assertSame(10000, $result['idleTimeout']);
66
        $this->assertIsInt($result['idleTimeout']);
67
    }
68
69
    public function testJsonSerializeWithFloatIdleTimeout(): void
70
    {
71
        $settings = new Settings(2500.5);
72
        $result = $settings->jsonSerialize();
73
74
        $this->assertArrayHasKey('idleTimeout', $result);
75
        $this->assertSame(2500.5, $result['idleTimeout']);
76
        $this->assertIsFloat($result['idleTimeout']);
77
    }
78
79
    public function testJsonSerializeWithPseudoLocalizationOnly(): void
80
    {
81
        $pseudoLocalization = $this->createMock(PseudoLocalization::class);
82
        $settings = new Settings(null, $pseudoLocalization);
83
        $result = $settings->jsonSerialize();
84
85
        $this->assertArrayHasKey('pseudoLocalization', $result);
86
        $this->assertSame($pseudoLocalization, $result['pseudoLocalization']);
87
        $this->assertArrayNotHasKey('idleTimeout', $result);
88
        $this->assertArrayNotHasKey('supportsResizing', $result);
89
    }
90
91
    public function testJsonSerializeWithSupportsResizingTrue(): void
92
    {
93
        $settings = new Settings(null, null, true);
94
        $result = $settings->jsonSerialize();
95
96
        $this->assertArrayHasKey('supportsResizing', $result);
97
        $this->assertTrue($result['supportsResizing']);
98
        $this->assertArrayNotHasKey('idleTimeout', $result);
99
        $this->assertArrayNotHasKey('pseudoLocalization', $result);
100
    }
101
102
    public function testJsonSerializeWithSupportsResizingFalse(): void
103
    {
104
        $settings = new Settings(null, null, false);
105
        $result = $settings->jsonSerialize();
106
107
        $this->assertArrayNotHasKey('supportsResizing', $result);
108
    }
109
110
    public function testJsonSerializeWithZeroIdleTimeout(): void
111
    {
112
        $settings = new Settings(0);
113
        $result = $settings->jsonSerialize();
114
115
        $this->assertArrayHasKey('idleTimeout', $result);
116
        $this->assertSame(0, $result['idleTimeout']);
117
    }
118
119
    public function testJsonSerializeWithPartialProperties(): void
120
    {
121
        $settings = new Settings(1500, null, true);
122
        $result = $settings->jsonSerialize();
123
124
        $this->assertArrayHasKey('idleTimeout', $result);
125
        $this->assertArrayHasKey('supportsResizing', $result);
126
        $this->assertArrayNotHasKey('pseudoLocalization', $result);
127
        $this->assertSame(1500, $result['idleTimeout']);
128
        $this->assertTrue($result['supportsResizing']);
129
    }
130
131
    public function testJsonSerializePropertyOrder(): void
132
    {
133
        $pseudoLocalization = $this->createMock(PseudoLocalization::class);
134
        $settings = new Settings(2000, $pseudoLocalization, true);
135
        $result = $settings->jsonSerialize();
136
137
        $keys = array_keys($result);
138
        $this->assertSame('idleTimeout', $keys[0]);
139
        $this->assertSame('pseudoLocalization', $keys[1]);
140
        $this->assertSame('supportsResizing', $keys[2]);
141
    }
142
143
    public function testImplementsJsonSerializable(): void
144
    {
145
        $settings = new Settings();
146
147
        $this->assertInstanceOf(\JsonSerializable::class, $settings);
148
    }
149
}
150