Passed
Push — main ( 0248dd...9953bb )
by Dylan
02:22
created

ServicesTest::test_collections_all()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

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