GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 1cc351...4e4839 )
by Bart
9s
created

OrderStatusesTest::getMockOrderStatus()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 26
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 18
nc 1
nop 1
1
<?php
2
3
namespace NerdsAndCompany\Schematic\Commerce\Services;
4
5
use Craft\BaseTest;
6
use Craft\Commerce_OrderStatusModel;
7
use Craft\Commerce_OrderStatusesService;
8
use Craft\Commerce_EmailsService;
9
use Craft\Craft;
10
use Craft\DbCommand;
11
use Craft\DbConnection;
12
use NerdsAndCompany\Schematic\Models\Result;
13
use PHPUnit_Framework_MockObject_MockObject as Mock;
14
15
/**
16
 * Class OrderStatusesTest.
17
 *
18
 * @author    Nerds & Company
19
 * @copyright Copyright (c) 2015-2017, Nerds & Company
20
 * @license   MIT
21
 *
22
 * @see      http://www.nerds.company
23
 *
24
 * @coversDefaultClass \NerdsAndCompany\Schematic\Commerce\Services\OrderStatuses
25
 * @covers ::__construct
26
 * @covers ::<!public>
27
 */
28
class OrderStatusesTest extends BaseTest
29
{
30
    //==============================================================================================================
31
    //=================================================  TESTS  ====================================================
32
    //==============================================================================================================
33
34
    /**
35
     * @covers ::export
36
     * @dataProvider provideValidOrderStatuses
37
     *
38
     * @param OrderStatusModel[] $types
39
     * @param array              $expectedResult
40
     */
41
    public function testSuccessfulExport(array $types, array $expectedResult = [])
42
    {
43
        $schematicOrderStatusesService = new OrderStatuses();
44
45
        $actualResult = $schematicOrderStatusesService->export($types);
46
47
        $this->assertSame($expectedResult, $actualResult);
48
    }
49
50
    /**
51
     * @covers ::import
52
     * @dataProvider provideValidOrderStatusDefinitions
53
     *
54
     * @param array $statusDefinitions
55
     */
56
    public function testSuccessfulImport(array $statusDefinitions)
57
    {
58
        $this->setMockOrderStatusesService();
59
        $this->setMockEmailsService();
60
        $this->setMockDbConnection();
61
62
        $schematicOrderStatusesService = new OrderStatuses();
63
64
        $import = $schematicOrderStatusesService->import($statusDefinitions);
65
66
        $this->assertInstanceOf(Result::class, $import);
67
        $this->assertFalse($import->hasErrors());
68
    }
69
70
    /**
71
     * @covers ::import
72
     * @dataProvider provideValidOrderStatusDefinitions
73
     *
74
     * @param array $statusDefinitions
75
     */
76
    public function testImportWithForceOption(array $statusDefinitions)
77
    {
78
        $this->setMockOrderStatusesService();
79
        $this->setMockEmailsService();
80
        $this->setMockDbConnection();
81
82
        $schematicOrderStatusesService = new OrderStatuses();
83
84
        $import = $schematicOrderStatusesService->import($statusDefinitions, true);
85
86
        $this->assertInstanceOf(Result::class, $import);
87
        $this->assertFalse($import->hasErrors());
88
    }
89
90
    //==============================================================================================================
91
    //==============================================  PROVIDERS  ===================================================
92
    //==============================================================================================================
93
94
    /**
95
     * @return array
96
     */
97
    public function provideValidOrderStatuses()
98
    {
99
        return [
100
            'single status' => [
101
                'OrderStatuses' => [
102
                    'status1' => $this->getMockOrderStatus(1),
103
                ],
104
                'expectedResult' => [
105
                    'statusHandle1' => [
106
                        'name' => 'statusName1',
107
                        'color' => null,
108
                        'sortOrder' => null,
109
                        'default' => null,
110
                        'emails' => [],
111
                    ],
112
                ],
113
            ],
114
            'multiple statuses' => [
115
                'OrderStatuses' => [
116
                    'status1' => $this->getMockOrderStatus(1),
117
                    'status2' => $this->getMockOrderStatus(2),
118
                ],
119
                'expectedResult' => [
120
                    'statusHandle1' => [
121
                        'name' => 'statusName1',
122
                        'color' => null,
123
                        'sortOrder' => null,
124
                        'default' => null,
125
                        'emails' => [],
126
                    ],
127
                    'statusHandle2' => [
128
                        'name' => 'statusName2',
129
                        'color' => null,
130
                        'sortOrder' => null,
131
                        'default' => null,
132
                        'emails' => [],
133
                    ],
134
                ],
135
            ],
136
        ];
137
    }
138
139
    /**
140
     * @return array
141
     */
142
    public function provideValidOrderStatusDefinitions()
143
    {
144
        return [
145
            'emptyArray' => [
146
                'statusDefinitions' => [],
147
            ],
148
            'single type' => [
149
                'statusDefinitions' => [
150
                    'statusHandle1' => [
151
                        'name' => 'statusName1',
152
                        'color' => null,
153
                        'sortOrder' => null,
154
                        'default' => null,
155
                        'emails' => [],
156
                    ],
157
                ],
158
            ],
159
        ];
160
    }
161
162
    //==============================================================================================================
163
    //=================================================  MOCKS  ====================================================
164
    //==============================================================================================================
165
166
    /**
167
     * @param string $statusId
168
     *
169
     * @return Mock|Commerce_OrderStatusModel
170
     */
171
    private function getMockOrderStatus($statusId)
172
    {
173
        $mockOrderStatus = $this->getMockBuilder(Commerce_OrderStatusModel::class)
174
            ->disableOriginalConstructor()
175
            ->getMock();
176
177
        $mockOrderStatus->expects($this->any())
178
            ->method('__get')
179
            ->willReturnMap([
180
                ['id', $statusId],
181
                ['handle', 'statusHandle'.$statusId],
182
                ['name', 'statusName'.$statusId],
183
            ]);
184
185
        $mockOrderStatus->expects($this->any())
186
            ->method('getAllErrors')
187
            ->willReturn([
188
                'ohnoes' => 'horrible error',
189
            ]);
190
191
        $mockOrderStatus->expects($this->any())
192
            ->method('getEmails')
193
            ->willReturn([]);
194
195
        return $mockOrderStatus;
196
    }
197
198
    /**
199
     * @return Mock|Commerce_OrderStatusesService
200
     */
201
    private function setMockOrderStatusesService()
202
    {
203
        $mockOrderStatusesService = $this->getMockBuilder(Commerce_OrderStatusesService::class)
204
            ->disableOriginalConstructor()
205
            ->setMethods(['getAllOrderStatuses', 'saveOrderStatus', 'deleteOrderStatusById'])
206
            ->getMock();
207
208
        $mockOrderStatusesService->expects($this->any())
209
            ->method('getAllOrderStatuses')
210
            ->willReturn([]);
211
212
        $this->setComponent(Craft::app(), 'commerce_orderStatuses', $mockOrderStatusesService);
213
214
        return $mockOrderStatusesService;
215
    }
216
217
    /**
218
     * @return Mock|Commerce_EmailsService
219
     */
220
    private function setMockEmailsService()
221
    {
222
        $mockEmailsService = $this->getMockBuilder(Commerce_EmailsService::class)
223
            ->disableOriginalConstructor()
224
            ->setMethods(['getAllEmails', 'saveEmail', 'deleteEmailById'])
225
            ->getMock();
226
227
        $mockEmailsService->expects($this->any())
228
            ->method('getAllEmails')
229
            ->willReturn([]);
230
231
        $this->setComponent(Craft::app(), 'commerce_emails', $mockEmailsService);
232
233
        return $mockEmailsService;
234
    }
235
236
    /**
237
     * @return Mock|DbConnection
238
     */
239
    private function setMockDbConnection()
240
    {
241
        $mockDbConnection = $this->getMockBuilder(DbConnection::class)
242
            ->disableOriginalConstructor()
243
            ->setMethods(['createCommand'])
244
            ->getMock();
245
        $mockDbConnection->autoConnect = false; // Do not auto connect
246
247
        $mockDbCommand = $this->getMockDbCommand();
248
        $mockDbConnection->expects($this->any())->method('createCommand')->willReturn($mockDbCommand);
249
250
        Craft::app()->setComponent('db', $mockDbConnection);
251
252
        return $mockDbConnection;
253
    }
254
255
    /**
256
     * @return Mock|DbCommand
257
     */
258
    private function getMockDbCommand()
259
    {
260
        $mockDbCommand = $this->getMockBuilder(DbCommand::class)
261
            ->disableOriginalConstructor()
262
            ->setMethods(['insertOrUpdate'])
263
            ->getMock();
264
265
        return $mockDbCommand;
266
    }
267
}
268