CreditAssignmentCest::createDataProvider()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 34
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 23
c 2
b 0
f 0
nc 1
nop 0
dl 0
loc 34
rs 9.552
1
<?php
2
3
use app\fixtures\{CreditAssignmentFixture, OauthAccessTokensFixture};
4
use Codeception\{Example, Util\HttpCode};
5
use roaresearch\yii2\roa\test\AbstractResourceCest;
6
7
/**
8
 * Cest to stage resource.
9
 *
10
 * @author Carlos (neverabe) Llamosas <[email protected]>
11
 */
12
class CreditAssignmentCest extends AbstractResourceCest
13
{
14
    protected function authToken(ApiTester $I)
15
    {
16
        $I->amBearerAuthenticated(OauthAccessTokensFixture::SIMPLE_TOKEN);
17
    }
18
19
    /**
20
     * @depends CreditCest:fixtures
21
     */
22
    public function fixtures(ApiTester $I)
23
    {
24
        $I->haveFixtures([
25
            'credit_assignment' => [
26
                'class' => CreditAssignmentFixture::class,
27
                'depends' => [],
28
            ]
29
        ]);
30
    }
31
32
    /**
33
     * @param  ApiTester $I
34
     * @param  Example $example
35
     * @dataprovider indexDataProvider
36
     * @depends fixtures
37
     * @before authToken
38
     */
39
    public function index(ApiTester $I, Example $example)
40
    {
41
        $I->wantTo('Retrieve list of Credit Assignment records.');
42
        $this->internalIndex($I, $example);
43
    }
44
45
    /**
46
     * @return array<string,array> for test `index()`.
47
     */
48
    protected function indexDataProvider()
49
    {
50
        return [
51
            'list' => [
52
                'url' => '/v1/credit/1/assignment',
53
                'httpCode' => HttpCode::OK,
54
                'headers' => [
55
                    'X-Pagination-Total-Count' => 1,
56
                ],
57
            ],
58
        ];
59
    }
60
61
    /**
62
     * @param  ApiTester $I
63
     * @param  Example $example
64
     * @dataprovider viewDataProvider
65
     * @depends fixtures
66
     * @before authToken
67
     */
68
    public function view(ApiTester $I, Example $example)
69
    {
70
        $I->wantTo('Retrieve Credit Assignment single record.');
71
        $this->internalView($I, $example);
72
    }
73
74
    /**
75
     * @return array<string,array<string,string>> data for test `view()`.
76
     */
77
    protected function viewDataProvider()
78
    {
79
        return [
80
            'single record' => [
81
                'url' => '/v1/credit/1/assignment/1',
82
                'httpCode' => HttpCode::OK,
83
            ],
84
        ];
85
    }
86
87
    /**
88
     * @param  ApiTester $I
89
     * @param  Example $example
90
     * @dataprovider createDataProvider
91
     * @depends fixtures
92
     * @before authToken
93
     */
94
    public function create(ApiTester $I, Example $example)
95
    {
96
        $I->wantTo('Create a Credit Assignment record.');
97
        $this->internalCreate($I, $example);
98
    }
99
100
    /**
101
     * @return array<string,array> data for test `create()`.
102
     */
103
    protected function createDataProvider()
104
    {
105
        return [
106
            'create assignment' => [
107
                'urlParams' => [
108
                    'process_id' => 2
109
                ],
110
                'data' => [
111
                    'user_id' => 1
112
                ],
113
                'httpCode' => HttpCode::CREATED,
114
            ],
115
            'not found process' => [
116
                'urlParams' => [
117
                    'process_id' => 10
118
                ],
119
                'data' => [
120
                    'user_id' => 1
121
                ],
122
                'httpCode' => HttpCode::NOT_FOUND,
123
                'validationErrors' => [
124
                    'message' => 'process not found',
125
                ],
126
            ],
127
            'unprocessable user' => [
128
                'urlParams' => [
129
                    'process_id' => 2
130
                ],
131
                'data' => [
132
                    'user_id' => 10
133
                ],
134
                'httpCode' => HttpCode::UNPROCESSABLE_ENTITY,
135
                'validationErrors' => [
136
                    'user_id' => 'User ID is invalid.',
137
                ],
138
            ],
139
        ];
140
    }
141
142
    /**
143
     * @param  ApiTester $I
144
     * @param  Example $example
145
     * @dataprovider updateDataProvider
146
     * @depends create
147
     * @before authToken
148
     */
149
    public function update(ApiTester $I, Example $example)
150
    {
151
        $I->wantTo('Update a Credit Assignment record.');
152
        $this->internalUpdate($I, $example);
153
    }
154
155
    /**
156
     * @return array<string,array> data for test `update()`.
157
     */
158
    protected function updateDataProvider()
159
    {
160
        return [
161
            'update credit 1' => [
162
                'url' => '/v1/credit/1/assignment/1',
163
                'data' => [
164
                    'user_id' => 1
165
                ],
166
                'httpCode' => HttpCode::OK,
167
            ],
168
            'update credit error ' => [
169
                'url' => '/v1/credit/1/assignment/1',
170
                'data' => [
171
                    'user_id' => 2
172
                ],
173
                'httpCode' => HttpCode::UNPROCESSABLE_ENTITY,
174
                'validationErrors' => [
175
                    'user_id' => 'User ID is invalid.'
176
                ],
177
            ],
178
        ];
179
    }
180
    /**
181
     * @param  ApiTester $I
182
     * @param  Example $example
183
     * @dataprovider deleteDataProvider
184
     * @depends fixtures
185
     * @before authToken
186
     */
187
    public function delete(ApiTester $I, Example $example)
188
    {
189
        $I->wantTo('Delete a Credit Assignment record.');
190
        $this->internalDelete($I, $example);
191
    }
192
193
    /**
194
     * @return array[] data for test `delete()`.
195
     */
196
    protected function deleteDataProvider()
197
    {
198
        return [
199
            'credit assignment not found' => [
200
                'url' => '/v1/credit/10/assignment/5',
201
                'httpCode' => HttpCode::NOT_FOUND,
202
                'validationErrors' => [
203
                    'name' => 'The record "10" does not exists.'
204
                ],
205
            ],
206
            'credit assigment' => [
207
                'url' => '/v1/credit/1/assignment/1',
208
                'httpCode' => HttpCode::NO_CONTENT,
209
            ],
210
            'not found' => [
211
                'url' => '/v1/credit/1/assignment/1',
212
                'httpCode' => HttpCode::NOT_FOUND,
213
                'validationErrors' => [
214
                    'name' => 'The record "1" does not exists.'
215
                ],
216
            ],
217
        ];
218
    }
219
    /**
220
     * @inheritdoc
221
     */
222
    protected function recordJsonType(): array
223
    {
224
        return [
225
            'process_id' => 'integer:>0|string',
226
            'user_id' => 'integer:>0|string',
227
        ];
228
    }
229
230
    /**
231
     * @inheritdoc
232
     */
233
    protected function getRoutePattern(): string
234
    {
235
        return 'v1/credit/<process_id:\d+>/assignment';
236
    }
237
}
238