Completed
Push — master ( 7a3efc...f79493 )
by Al3x
02:58
created

ModuleOptionsTest::testCreateEmptyToken()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
c 0
b 0
f 0
rs 9.4285
cc 1
eloc 7
nc 1
nop 0
1
<?php
2
declare(strict_types=1);
3
4
namespace InvoiceNinjaModuleTest\Options;
5
6
use InvoiceNinjaModule\Options\Interfaces\AuthOptionsInterface;
7
use InvoiceNinjaModule\Options\ModuleOptions;
8
use InvoiceNinjaModule\Module;
9
use PHPUnit\Framework\TestCase;
10
11
class ModuleOptionsTest extends TestCase
12
{
13
    /**
14
     * @expectedException \InvoiceNinjaModule\Exception\InvalidParameterException
15
     */
16
    public function testCreateEmptySettings() :void
17
    {
18
        new ModuleOptions([], $this->createMock(AuthOptionsInterface::class));
19
    }
20
21
    /**
22
     * @expectedException \InvoiceNinjaModule\Exception\InvalidParameterException
23
     */
24
    public function testCreateEmptyToken() :void
25
    {
26
        $settings = [
27
            Module::TOKEN => '',
28
            Module::TOKEN_TYPE => 'testtokentype',
29
            Module::API_TIMEOUT => 100,
30
            Module::HOST_URL => 'http://test.dev',
31
        ];
32
33
        new ModuleOptions($settings, $this->createMock(AuthOptionsInterface::class));
34
    }
35
36
    /**
37
     * @expectedException \InvoiceNinjaModule\Exception\InvalidParameterException
38
     */
39
    public function testCreateMissingToken() :void
40
    {
41
        $settings = [
42
            Module::TOKEN_TYPE => 'testtokentype',
43
            Module::API_TIMEOUT => 100,
44
            Module::HOST_URL => 'http://test.dev',
45
        ];
46
47
        new ModuleOptions($settings, $this->createMock(AuthOptionsInterface::class));
48
    }
49
50
    /**
51
     * @expectedException \InvoiceNinjaModule\Exception\InvalidParameterException
52
     */
53
    public function testCreateEmptyTokenType() :void
54
    {
55
        $settings = [
56
            Module::TOKEN => 'testtoken',
57
            Module::TOKEN_TYPE => '',
58
            Module::API_TIMEOUT => 100,
59
            Module::HOST_URL => 'http://test.dev',
60
        ];
61
62
        new ModuleOptions($settings, $this->createMock(AuthOptionsInterface::class));
63
    }
64
65
    /**
66
     * @expectedException \InvoiceNinjaModule\Exception\InvalidParameterException
67
     */
68
    public function testCreateMissingTokenType() :void
69
    {
70
        $settings = [
71
            Module::TOKEN => 'testtoken',
72
            Module::API_TIMEOUT => 100,
73
            Module::HOST_URL => 'http://test.dev',
74
        ];
75
76
        new ModuleOptions($settings, $this->createMock(AuthOptionsInterface::class));
77
    }
78
79
    /**
80
     * @expectedException \InvoiceNinjaModule\Exception\InvalidParameterException
81
     */
82
    public function testCreateEmptyTimeout() :void
83
    {
84
        $settings = [
85
            Module::TOKEN => 'testtoken',
86
            Module::TOKEN_TYPE => 'testtokentype',
87
            Module::API_TIMEOUT => null,
88
            Module::HOST_URL => 'http://test.dev',
89
        ];
90
91
        new ModuleOptions($settings, $this->createMock(AuthOptionsInterface::class));
92
    }
93
94
    /**
95
     * @expectedException \InvoiceNinjaModule\Exception\InvalidParameterException
96
     */
97
    public function testCreateNegativeTimeout() :void
98
    {
99
        $settings = [
100
            Module::TOKEN => 'testtoken',
101
            Module::TOKEN_TYPE => 'testtokentype',
102
            Module::API_TIMEOUT => -1,
103
            Module::HOST_URL => 'http://test.dev',
104
        ];
105
106
        new ModuleOptions($settings, $this->createMock(AuthOptionsInterface::class));
107
    }
108
109
    /**
110
     * @expectedException \InvoiceNinjaModule\Exception\InvalidParameterException
111
     */
112
    public function testCreateMissingTimeout() :void
113
    {
114
        $settings = [
115
            Module::TOKEN => 'testtoken',
116
            Module::TOKEN_TYPE => 'testtokentype',
117
            Module::HOST_URL => 'http://test.dev',
118
        ];
119
120
        new ModuleOptions($settings, $this->createMock(AuthOptionsInterface::class));
121
    }
122
123
    /**
124
     * @expectedException \InvoiceNinjaModule\Exception\InvalidParameterException
125
     */
126
    public function testCreateEmptyHostUrl() :void
127
    {
128
        $settings = [
129
            Module::TOKEN => 'testtoken',
130
            Module::TOKEN_TYPE => 'testtokentype',
131
            Module::API_TIMEOUT => 100,
132
            Module::HOST_URL => '',
133
        ];
134
135
        new ModuleOptions($settings, $this->createMock(AuthOptionsInterface::class));
136
    }
137
138
    /**
139
     * @expectedException \InvoiceNinjaModule\Exception\InvalidParameterException
140
     */
141
    public function testCreateMissingHostUrl() :void
142
    {
143
        $settings = [
144
            Module::TOKEN => 'testtoken',
145
            Module::TOKEN_TYPE => 'testtokentype',
146
            Module::API_TIMEOUT => 100,
147
        ];
148
149
        new ModuleOptions($settings, $this->createMock(AuthOptionsInterface::class));
150
    }
151
152
    public function testCreate() :void
153
    {
154
        $authOptions = $this->createMock(AuthOptionsInterface::class);
155
        $settingsArr = [
156
            Module::TOKEN => 'testtoken',
157
            Module::TOKEN_TYPE => 'testtokentype',
158
            Module::API_TIMEOUT => 0,
159
            Module::HOST_URL => 'http://test.dev',
160
        ];
161
        $moduleOptions = new ModuleOptions($settingsArr, $authOptions);
162
        self::assertInstanceOf(ModuleOptions::class, $moduleOptions);
163
        self::assertSame($settingsArr[Module::TOKEN], $moduleOptions->getToken());
164
        self::assertSame($settingsArr[Module::TOKEN_TYPE], $moduleOptions->getTokenType());
165
        self::assertSame($settingsArr[Module::API_TIMEOUT], $moduleOptions->getTimeout());
166
        self::assertSame($settingsArr[Module::HOST_URL], $moduleOptions->getHostUrl());
167
        self::assertSame($authOptions, $moduleOptions->getAuthOptions());
168
    }
169
}
170