Completed
Push — apply-codeceptions ( 341052...a29855 )
by Kentaro
53:23 queued 21:51
created

EA04OrderCest::order_受注編集()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 64

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 64
rs 8.7853
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
use Codeception\Util\Fixtures;
4
use Eccube\Entity\Master\OrderStatus;
5
use Page\Admin\CsvSettingsPage;
6
use Page\Admin\OrderEditPage;
7
use Page\Admin\OrderManagePage;
8
9
/**
10
 * @group admin
11
 * @group admin01
12
 * @group order
13
 * @group ea4
14
 */
15
class EA04OrderCest
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
16
{
17
    public function _before(\AcceptanceTester $I)
18
    {
19
        // すべてのテストケース実施前にログインしておく
20
        // ログイン後は管理アプリのトップページに遷移している
21
        $I->loginAsAdmin();
22
    }
23
24
    public function _after(\AcceptanceTester $I)
0 ignored issues
show
Unused Code introduced by
The parameter $I is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
25
    {
26
    }
27
28
    public function order_受注検索(\AcceptanceTester $I)
29
    {
30
        $I->wantTo('EA0401-UC01-T01(& UC01-T02, UC01-T03) 受注検索');
31
32
        $findOrders = Fixtures::get('findOrders'); // Closure
33
        $TargetOrders = array_filter($findOrders(), function ($Order) {
34
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
35
        });
36
        OrderManagePage::go($I)->検索();
37
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
38
39
        OrderManagePage::go($I)->検索('[email protected]');
40
        $I->see('検索結果:0件が該当しました', OrderManagePage::$検索結果_メッセージ);
41
42
        OrderManagePage::go($I)->詳細検索_電話番号('あああ');
43
        $I->see('検索条件に誤りがあります。', OrderManagePage::$検索結果_エラーメッセージ);
44
    }
45
46 View Code Duplication
    public function order_受注CSVダウンロード(\AcceptanceTester $I)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
47
    {
48
        $I->wantTo('EA0401-UC02-T01 受注CSVダウンロード');
49
50
        $findOrders = Fixtures::get('findOrders'); // Closure
51
        $TargetOrders = array_filter($findOrders(), function ($Order) {
52
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
53
        });
54
        $OrderListPage = OrderManagePage::go($I)->検索();
55
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
56
57
        $OrderListPage->受注CSVダウンロード実行();
58
        // make sure wait to download file completely
59
        $I->wait(10);
60
        $OrderCSV = $I->getLastDownloadFile('/^order_\d{14}\.csv$/');
61
        $I->assertGreaterOrEquals(count($TargetOrders), count(file($OrderCSV)), '検索結果以上の行数があるはず');
62
    }
63
64 View Code Duplication
    public function order_受注情報のCSV出力項目変更設定(\AcceptanceTester $I)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
65
    {
66
        $I->wantTo('EA0401-UC02-T02 受注情報のCSV出力項目変更設定');
67
68
        $findOrders = Fixtures::get('findOrders'); // Closure
69
        $TargetOrders = array_filter($findOrders(), function ($Order) {
70
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
71
        });
72
        $OrderListPage = OrderManagePage::go($I)->検索();
73
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
74
75
        /* 項目設定 */
76
        $OrderListPage->受注CSV出力項目設定();
77
78
        CsvSettingsPage::at($I);
79
        $value = $I->grabValueFrom(CsvSettingsPage::$CSVタイプ);
80
        $I->assertEquals(3, $value);
81
    }
82
83 View Code Duplication
    public function order_配送CSVダウンロード(\AcceptanceTester $I)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
84
    {
85
        $I->wantTo('EA0401-UC02-T01 配送CSVダウンロード');
86
87
        $findOrders = Fixtures::get('findOrders'); // Closure
88
        $TargetOrders = array_filter($findOrders(), function ($Order) {
89
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
90
        });
91
        $OrderListPage = OrderManagePage::go($I)->検索();
92
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
93
94
        $OrderListPage->配送CSVダウンロード実行();
95
        // make sure wait to download file completely
96
        $I->wait(10);
97
        $OrderCSV = $I->getLastDownloadFile('/^shipping_\d{14}\.csv$/');
98
        $I->assertGreaterOrEquals(count($TargetOrders), count(file($OrderCSV)), '検索結果以上の行数があるはず');
99
    }
100
101 View Code Duplication
    public function order_配送情報のCSV出力項目変更設定(\AcceptanceTester $I)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
102
    {
103
        $I->wantTo('EA0401-UC02-T02 配送情報のCSV出力項目変更設定');
104
105
        $findOrders = Fixtures::get('findOrders'); // Closure
106
        $TargetOrders = array_filter($findOrders(), function ($Order) {
107
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
108
        });
109
        $OrderListPage = OrderManagePage::go($I)->検索();
110
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
111
112
        /* 項目設定 */
113
        $OrderListPage->配送CSV出力項目設定();
114
115
        CsvSettingsPage::at($I);
116
        $value = $I->grabValueFrom(CsvSettingsPage::$CSVタイプ);
117
        $I->assertEquals(4, $value);
118
    }
119
120
    public function order_受注編集(\AcceptanceTester $I)
121
    {
122
        $I->wantTo('EA0401-UC05-T01(& UC05-T02/UC05-T03/UC06-T01) 受注編集');
123
124
        // 新規受付ステータスの受注を作る
125
        $createCustomer = Fixtures::get('createCustomer');
126
        $createOrders = Fixtures::get('createOrders');
127
        $newOrders = $createOrders($createCustomer(), 1, array(), OrderStatus::NEW);
128
129
        $OrderListPage = OrderManagePage::go($I)->検索($newOrders[0]->getOrderNo());
130
131
        $I->see('検索結果:1件が該当しました', OrderManagePage::$検索結果_メッセージ);
132
133
        /* 編集 */
134
        $OrderListPage->一覧_編集(1);
135
136
        $OrderRegisterPage = OrderEditPage::at($I)
137
            ->注文者パネルを開く()
138
            ->入力_姓('')
139
            ->受注情報登録();
140
141
        $OrderRegisterPage->注文者パネルを開く();
142
        /* 異常系 */
143
        $I->see('入力されていません。', OrderEditPage::$姓_エラーメッセージ);
144
145
        /* 正常系 */
146
        $OrderRegisterPage
147
            ->入力_姓('aaa')
148
            ->入力_セイ('アアア')
149
            ->入力_メイ('アアア')
150
            ->入力_郵便番号('060-0000')
151
            ->入力_都道府県(['1' => '北海道'])
152
            ->入力_市区町村名('bbb')
153
            ->入力_番地_ビル名('bbb')
154
            ->入力_電話番号('111-111-111')
155
            ->入力_番地_ビル名('address 2')
156
            ->入力_支払方法(['4' => '郵便振替'])
157
            ->受注情報登録();
158
159
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
160
161
        /* ステータス変更 */
162
        $OrderRegisterPage
163
            // 新規受付から遷移可能なステータスをセットする.
164
            ->入力_受注ステータス(['3' => '入金済み'])
165
            ->受注情報登録();
166
167
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
168
169
        /* 明細の削除 */
170
        $itemName = $OrderRegisterPage->明細の項目名を取得(1);
171
        $OrderRegisterPage->明細を削除(1)
172
            ->acceptDeleteModal(1);
173
        $I->wait(2);
174
175
        // before submit
176
        $I->dontSee($itemName, "#table-form-field");
177
178
        // after submit
179
        $OrderRegisterPage->受注情報登録();
180
        $I->dontSee($itemName, "#table-form-field");
181
182
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
183
    }
184
185
    public function order_受注削除(\AcceptanceTester $I)
186
    {
187
        $I->wantTo('EA0401-UC08-T01(& UC08-T02) 受注削除');
188
189
        $findOrders = Fixtures::get('findOrders'); // Closure
190
        $TargetOrders = array_filter($findOrders(), function ($Order) {
191
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
192
        });
193
194
        $OrderListPage = OrderManagePage::go($I)->検索();
195
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
196
197
        // 削除
198
        $OrderNumForDel = $OrderListPage->一覧_注文番号(1);
199
        $OrderListPage
200
          ->一覧_選択(1)
201
          ->一覧_削除()
202
          ->Accept_削除();
203
204
        $I->see('受注情報を削除しました', ['css' => '#page_admin_order > div > div.c-contentsArea > div.alert.alert-success.alert-dismissible.fade.show.m-3 > span']);
205
        $I->assertNotEquals($OrderNumForDel, $OrderListPage->一覧_注文番号(1));
206
207
        // 削除キャンセル
208
        $OrderNumForDontDel = $OrderListPage->一覧_注文番号(1);
209
        $OrderListPage
210
          ->一覧_選択(1)
211
          ->一覧_削除()
212
          ->Cancel_削除();
213
214
        $I->assertEquals($OrderNumForDontDel, $OrderListPage->一覧_注文番号(1));
215
    }
216
217
    public function order_受注メール通知(\AcceptanceTester $I)
218
    {
219
        $I->wantTo('EA0402-UC01-T01 受注メール通知');
220
221
        $I->resetEmails();
222
223
        OrderManagePage::go($I)
224
            ->一覧_メール通知(1);
225
226
        $I->seeEmailCount(2);
227
228
        $I->seeInLastEmailSubjectTo('[email protected]', '[EC-CUBE SHOP] 商品出荷のお知らせ');
229
    }
230
231
    public function order_一括メール通知(\AcceptanceTester $I)
232
    {
233
        $I->wantTo('EA0402-UC02-T01(& UC02-T02) 一括メール通知');
234
235
        $I->resetEmails();
236
237
        OrderManagePage::go($I)
238
            ->一覧_全選択()
239
            ->一括メール送信();
240
241
        $I->seeEmailCount(20);
242
    }
243
244
    public function order_受注登録(\AcceptanceTester $I)
245
    {
246
        $I->wantTo('EA0405-UC01-T01(& UC01-T02) 受注登録');
247
248
        $OrderRegisterPage = OrderEditPage::go($I)->受注情報登録();
249
250
        /* 異常系 */
251
        $I->dontSee('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
252
253
        /* 正常系 */
254
        $OrderRegisterPage
255
            ->入力_支払方法(['4' => '郵便振替'])
256
            ->入力_姓('order1')
257
            ->入力_名('order1')
258
            ->入力_セイ('アアア')
259
            ->入力_メイ('アアア')
260
            ->入力_郵便番号('060-0000')
261
            ->入力_都道府県(['1' => '北海道'])
262
            ->入力_市区町村名('bbb')
263
            ->入力_番地_ビル名('bbb')
264
            ->入力_Eメール('[email protected]')
265
            ->入力_電話番号('111-111-111')
266
            ->注文者情報をコピー()
267
            ->入力_配送業者([1 => 'サンプル業者'])
268
            ->商品検索('パーコレーター')
269
            ->商品検索結果_選択(1)
270
            ->受注情報登録();
271
272
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
273
    }
274
275
    public function order_pdfページをエクスポートする(\AcceptanceTester $I)
276
    {
277
        $I->wantTo('EA0401-UC02-T01 pdfページをエクスポートする');
278
279
        $findOrders = Fixtures::get('findOrders'); // Closure
280
        $TargetOrders = array_filter($findOrders(), function ($Order) {
281
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
282
        });
283
        $OrderListPage = OrderManagePage::go($I)->検索();
284
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
285
286
        $OrderListPage->すべてチェック();
287
        $OrderListPage->要素をクリック('#form_bulk #bulkExportPdf');
288
289
        // 別ウィンドウ
290
        $I->switchToWindow('newwin');
291
292
        // Check redirect to form pdf information
293
        $I->see('受注管理帳票出力', OrderManagePage::$タイトル要素);
294
295
        $I->closeTab();
296
    }
297
298
    public function order_出力pdfダウンロード(\AcceptanceTester $I)
299
    {
300
        $I->wantTo('EA0401-UC02-T01 出力pdfダウンロード');
301
302
        $findOrders = Fixtures::get('findOrders'); // Closure
303
        $TargetOrders = array_filter($findOrders(), function ($Order) {
304
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
305
        });
306
        $OrderListPage = OrderManagePage::go($I)->検索();
307
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
308
309
        $OrderListPage->すべてチェック();
310
        $OrderListPage->要素をクリック('#form_bulk #bulkExportPdf');
311
312
        // 別ウィンドウ
313
        $I->switchToWindow('newwin');
314
315
        $I->see('受注管理帳票出力', OrderManagePage::$タイトル要素);
316
317
        $OrderListPage->PDFフォームを入力(['id' => 'order_pdf_note1'], 'Test note first');
318
        $OrderListPage->PDFフォームを入力(['id' => 'order_pdf_note2'], 'Test note second');
319
        $OrderListPage->PDFフォームを入力(['id' => 'order_pdf_note3'], 'Test note third');
320
        $OrderListPage->要素をクリック('#order_pdf_default');
321
        $OrderListPage->要素をクリック('#order_pdf_form .c-conversionArea .justify-content-end button.btn-ec-conversion');
322
        // make sure wait to download file completely
323
        $I->wait(5);
324
        $filename = $I->getLastDownloadFile('/^nouhinsyo\.pdf$/');
325
        $I->assertTrue(file_exists($filename));
326
327
        $I->closeTab();
328
    }
329
330
    public function order_ー括受注のステータス変更(\AcceptanceTester $I)
331
    {
332
        $I->wantTo('EA0405-UC06-T01_ー括受注のステータス変更');
333
334
        // 新規受付ステータスをキャンセルに変更する
335
        $entityManager = Fixtures::get('entityManager');
336
        $findOrders = Fixtures::get('findOrders');
337
        $NewOrders = array_filter($findOrders(), function ($Order) {
338
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
339
        });
340
        $CancelStatus = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::CANCEL);
341
        foreach ($NewOrders as $newOrder) {
342
            $newOrder->setOrderStatus($CancelStatus);
343
        }
344
        $entityManager->flush();
345
346
        // 新規受付ステータスの受注を作る
347
        $createCustomer = Fixtures::get('createCustomer');
348
        $createOrders = Fixtures::get('createOrders');
349
        $newOrders = $createOrders($createCustomer(), 2, array());
350
        $Status = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::NEW);
351
        foreach ($newOrders as $newOrder) {
352
            $newOrder->setOrderStatus($Status);
353
        }
354
        $entityManager->flush();
355
356
        $NewOrders = array_filter($findOrders(), function ($Order) {
357
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
358
        });
359
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW);
360
        $I->see('検索結果:'.count($NewOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
361
362
        $DeliveredOrders = array_filter($findOrders(), function ($Order) {
363
            return $Order->getOrderStatus()->getId() == OrderStatus::DELIVERED;
364
        });
365
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::DELIVERED);
366
        $I->see('検索結果:'.count($DeliveredOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
367
368
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW)
369
            ->一覧_全選択()
370
            ->受注ステータス変更('発送済み');
0 ignored issues
show
Documentation introduced by
'発送済み' is of type string, but the function expects a array.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
371
372
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::DELIVERED);
373
        $I->see('検索結果:'.(count($DeliveredOrders) + count($NewOrders)).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
374
    }
375
376
    public function order_個別出荷済みステータス変更(\AcceptanceTester $I)
377
    {
378
        $I->wantTo('EA0405-UC06-T02_個別出荷済みステータス変更');
379
380
        $I->resetEmails();
381
382
        // 新規受付ステータスをキャンセルに変更する
383
        $entityManager = Fixtures::get('entityManager');
384
        $findOrders = Fixtures::get('findOrders');
385
        $NewOrders = array_filter($findOrders(), function ($Order) {
386
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
387
        });
388
        $CancelStatus = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::CANCEL);
389
        foreach ($NewOrders as $newOrder) {
390
            $newOrder->setOrderStatus($CancelStatus);
391
        }
392
        $entityManager->flush();
393
394
        // 新規受付ステータスの受注を作る
395
        $createCustomer = Fixtures::get('createCustomer');
396
        $createOrders = Fixtures::get('createOrders');
397
        $newOrders = $createOrders($createCustomer(), 2, array());
398
        $Status = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::NEW);
399
        foreach ($newOrders as $newOrder) {
400
            $newOrder->setOrderStatus($Status);
401
        }
402
        $entityManager->flush();
403
404
        $DeliveredOrders = array_filter($findOrders(), function ($Order) {
405
            return $Order->getOrderStatus()->getId() == OrderStatus::DELIVERED;
406
        });
407
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::DELIVERED);
408
        $I->see('検索結果:'.count($DeliveredOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
409
410
        $NewOrders = array_filter($findOrders(), function ($Order) {
411
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
412
        });
413
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW);
414
        $I->see('検索結果:'.count($NewOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
415
416
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW)
417
            ->出荷済にする(1);
418
419
        $I->seeEmailCount(2);
420
        $I->seeInLastEmailSubjectTo('[email protected]', '[EC-CUBE SHOP] 商品出荷のお知らせ');
421
422
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW);
423
        $I->see('検索結果:1件が該当しました', OrderManagePage::$検索結果_メッセージ);
424
    }
425
}
426
427
428
429
430
431
432
433
434