ServicesTest::test_address_all()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 6
c 0
b 0
f 0
dl 0
loc 8
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Lifeboat\Tests\Services;
4
5
use Lifeboat\Exceptions\InvalidArgumentException;
6
use Lifeboat\Resource\ListResource;
7
use Lifeboat\Resource\SimpleList;
8
use Lifeboat\Services\Addresses;
9
use Lifeboat\Services\Collections;
10
use Lifeboat\Services\Customers;
11
use Lifeboat\Services\CustomPages;
12
use Lifeboat\Services\DeliveryZones;
13
use Lifeboat\Services\Orders;
14
use Lifeboat\Services\Pages;
15
use Lifeboat\Tests\TestCase;
16
17
/**
18
 * Class ServicesTest
19
 * @package Lifeboat\Tests
20
 */
21
class ServicesTest extends TestCase {
22
23
    /**
24
     * @test
25
     *
26
     * @covers \Lifeboat\Resource\ListResource::__construct
27
     * @covers \Lifeboat\Resource\ListResource::getClient
28
     * @covers \Lifeboat\Resource\ListResource::setClient
29
     * @covers \Lifeboat\Resource\ListResource::getURL
30
     * @covers \Lifeboat\Resource\ListResource::setURL
31
     * @covers \Lifeboat\Resource\ListResource::getParams
32
     * @covers \Lifeboat\Resource\ListResource::setParams
33
     *
34
     * @covers \Lifeboat\Services\Addresses::__construct
35
     * @covers \Lifeboat\Services\Addresses::setClient
36
     * @covers \Lifeboat\Services\Addresses::getClient
37
     * @covers \Lifeboat\Services\Addresses::all
38
     */
39
    public function test_address_all()
40
    {
41
        $service = new Addresses($this->getMockClient());
42
        $this->check_curl_all(
43
            $service->all('xxx'),
44
            'api/addresses/all',
45
            ListResource::class,
46
            ['search' => 'xxx']
47
        );
48
    }
49
50
    /**
51
     * @test
52
     *
53
     * @covers \Lifeboat\Resource\ListResource::__construct
54
     * @covers \Lifeboat\Resource\ListResource::getClient
55
     * @covers \Lifeboat\Resource\ListResource::setClient
56
     * @covers \Lifeboat\Resource\ListResource::getURL
57
     * @covers \Lifeboat\Resource\ListResource::setURL
58
     * @covers \Lifeboat\Resource\ListResource::getParams
59
     * @covers \Lifeboat\Resource\ListResource::setParams
60
     *
61
     * @covers \Lifeboat\Services\Collections::__construct
62
     * @covers \Lifeboat\Services\Collections::setClient
63
     * @covers \Lifeboat\Services\Collections::getClient
64
     * @covers \Lifeboat\Services\Collections::all
65
     */
66
    public function test_collections_all()
67
    {
68
        $service = new Collections($this->getMockClient());
69
        $this->check_curl_all($service->all(), 'api/collections/all');
70
    }
71
72
    /**
73
     * @test
74
     *
75
     * @covers \Lifeboat\Resource\ListResource::__construct
76
     * @covers \Lifeboat\Resource\ListResource::getClient
77
     * @covers \Lifeboat\Resource\ListResource::setClient
78
     * @covers \Lifeboat\Resource\ListResource::getURL
79
     * @covers \Lifeboat\Resource\ListResource::setURL
80
     * @covers \Lifeboat\Resource\ListResource::getParams
81
     * @covers \Lifeboat\Resource\ListResource::setParams
82
     *
83
     * @covers \Lifeboat\Services\Customers::__construct
84
     * @covers \Lifeboat\Services\Customers::setClient
85
     * @covers \Lifeboat\Services\Customers::getClient
86
     * @covers \Lifeboat\Services\Customers::all
87
     */
88
    public function test_customers_all()
89
    {
90
        $service = new Customers($this->getMockClient());
91
        $this->check_curl_all(
92
            $service->all('xxx'),
93
            'api/customers/all',
94
            ListResource::class,
95
            ['search' => 'xxx']
96
        );
97
    }
98
99
    /**
100
     * @test
101
     *
102
     * @covers \Lifeboat\Resource\ListResource::__construct
103
     * @covers \Lifeboat\Resource\ListResource::getClient
104
     * @covers \Lifeboat\Resource\ListResource::setClient
105
     * @covers \Lifeboat\Resource\ListResource::getURL
106
     * @covers \Lifeboat\Resource\ListResource::setURL
107
     * @covers \Lifeboat\Resource\ListResource::getParams
108
     * @covers \Lifeboat\Resource\ListResource::setParams
109
     *
110
     * @covers \Lifeboat\Services\CustomPages::__construct
111
     * @covers \Lifeboat\Services\CustomPages::setClient
112
     * @covers \Lifeboat\Services\CustomPages::getClient
113
     * @covers \Lifeboat\Services\CustomPages::all
114
     */
115
    public function test_custom_pages_all()
116
    {
117
        $service = new CustomPages($this->getMockClient());
118
        $this->check_curl_all(
119
            $service->all('xxx'),
120
            'api/pages/page/all',
121
            ListResource::class,
122
            ['search' => 'xxx', 'sort' => CustomPages::SORT_DEFAULT]
123
        );
124
125
        try {
126
            $service->all('xxx', 'xxx');
127
            $this->fail('CustomPages::all() parameter 2 should be a valid sort');
128
        } catch (InvalidArgumentException $e) {
129
            // Error should have been thrown
130
        }
131
    }
132
133
    /**
134
     * @test
135
     *
136
     * @covers \Lifeboat\Resource\ListResource::__construct
137
     * @covers \Lifeboat\Resource\ListResource::getClient
138
     * @covers \Lifeboat\Resource\ListResource::setClient
139
     * @covers \Lifeboat\Resource\ListResource::getURL
140
     * @covers \Lifeboat\Resource\ListResource::setURL
141
     * @covers \Lifeboat\Resource\ListResource::getParams
142
     * @covers \Lifeboat\Resource\ListResource::setParams
143
     *
144
     * @covers \Lifeboat\Services\DeliveryZones::__construct
145
     * @covers \Lifeboat\Services\DeliveryZones::setClient
146
     * @covers \Lifeboat\Services\DeliveryZones::getClient
147
     * @covers \Lifeboat\Services\DeliveryZones::all
148
     */
149
    public function test_delivery_zones_all()
150
    {
151
        $service = new DeliveryZones($this->getMockClient());
152
        $this->check_curl_all($service->all(), 'api/delivery-zones/all');
153
    }
154
155
    /**
156
     * @test
157
     *
158
     * @covers \Lifeboat\Resource\ListResource::__construct
159
     * @covers \Lifeboat\Resource\ListResource::getClient
160
     * @covers \Lifeboat\Resource\ListResource::setClient
161
     * @covers \Lifeboat\Resource\ListResource::getURL
162
     * @covers \Lifeboat\Resource\ListResource::setURL
163
     * @covers \Lifeboat\Resource\ListResource::getParams
164
     * @covers \Lifeboat\Resource\ListResource::setParams
165
     *
166
     * @covers \Lifeboat\Services\Orders::__construct
167
     * @covers \Lifeboat\Services\Orders::setClient
168
     * @covers \Lifeboat\Services\Orders::getClient
169
     * @covers \Lifeboat\Services\Orders::all
170
     */
171
    public function test_orders_all()
172
    {
173
        $params = [
174
            'period'        => Orders::PERIOD_7,
175
            'status'        => Orders::STATUS_PAID,
176
            'fulfillment'   => Orders::FULFILLMENT_PENDING,
177
            'search'        => ''
178
        ];
179
180
        $service = new Orders($this->getMockClient());
181
        $this->check_curl_all($service->all(), 'api/orders/all', ListResource::class, $params);
182
183
        try {
184
            $service->all('xxx');
185
            $this->fail('Orders::all expects parameter 1 to be a valid period');
186
        } catch (InvalidArgumentException $e) {
187
            // Error should have been thrown
188
        }
189
190
        try {
191
            $service->all(Orders::PERIOD_7, -1);
192
            $this->fail('Orders::all expects parameter 2 to be a valid status');
193
        } catch (InvalidArgumentException $e) {
194
            // Error should have been thrown
195
        }
196
197
        try {
198
            $service->all(Orders::PERIOD_7, Orders::STATUS_PAID, -1);
199
            $this->fail('Orders::all expects parameter 3 to be a valid fulfillment status');
200
        } catch (InvalidArgumentException $e) {
201
            // Error should have been thrown
202
        }
203
    }
204
205
    /**
206
     * @test
207
     *
208
     * @covers \Lifeboat\Resource\SimpleList::__construct
209
     * @covers \Lifeboat\Resource\SimpleList::getClient
210
     * @covers \Lifeboat\Resource\SimpleList::setClient
211
     * @covers \Lifeboat\Resource\SimpleList::getURL
212
     * @covers \Lifeboat\Resource\SimpleList::setURL
213
     * @covers \Lifeboat\Resource\SimpleList::getParams
214
     * @covers \Lifeboat\Resource\SimpleList::setParams
215
     *
216
     * @covers \Lifeboat\Services\Pages::__construct
217
     * @covers \Lifeboat\Services\Pages::setClient
218
     * @covers \Lifeboat\Services\Pages::getClient
219
     * @covers \Lifeboat\Services\Pages::all
220
     */
221
    public function test_pages_all()
222
    {
223
        $service = new Pages($this->getMockClient());
224
        $this->check_curl_all($service->all(), 'api/pages/all', SimpleList::class);
225
    }
226
227
    /**
228
     * @param ListResource $all
229
     * @param string $list_class
230
     * @param string $url
231
     * @param array $params
232
     */
233
    private function check_curl_all(
234
        ListResource $all,
235
        string $url,
236
        string $list_class = ListResource::class,
237
        array $params = []
238
    ){
239
        $this->assertInstanceOf($list_class, $all);
240
        $this->assertEquals($url, $all->getURL());
241
        $this->assertEquals($this->getMockClient(), $all->getClient());
242
        $this->assertEquals($params, $all->getParams());
243
    }
244
}
245