Failed Conditions
Pull Request — experimental/sf (#31)
by Kentaro
06:59
created

codeception/acceptance/EA04OrderCest.php (4 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

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
16
{
17
    public function _before(\AcceptanceTester $I)
18
    {
19
        // すべてのテストケース実施前にログインしておく
20
        // ログイン後は管理アプリのトップページに遷移している
21
        $I->loginAsAdmin();
22
    }
23
24
    public function _after(\AcceptanceTester $I)
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
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
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
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
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
        /* 異常系 */
142
        $I->see('入力されていません。', OrderEditPage::$姓_エラーメッセージ);
143
144
        /* 正常系 */
145
        $OrderRegisterPage
146
            ->入力_姓('aaa')
147
            ->入力_セイ('アアア')
148
            ->入力_メイ('アアア')
149
            ->入力_郵便番号('060-0000')
150
            ->入力_都道府県(['1' => '北海道'])
151
            ->入力_市区町村名('bbb')
152
            ->入力_番地_ビル名('bbb')
153
            ->入力_電話番号('111-111-111')
154
            ->入力_番地_ビル名('address 2')
155
            ->入力_支払方法(['4' => '郵便振替'])
156
            ->受注情報登録();
157
158
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
159
160
        /* ステータス変更 */
161
        $OrderRegisterPage
162
            // 新規受付から遷移可能なステータスをセットする.
163
            ->入力_受注ステータス(['3' => '入金済み'])
164
            ->受注情報登録();
165
166
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
167
168
        /* 明細の削除 */
169
        $itemName = $OrderRegisterPage->明細の項目名を取得(1);
170
        $OrderRegisterPage->明細を削除(1)
171
            ->acceptDeleteModal(1);
172
        $I->wait(2);
173
174
        // before submit
175
        $I->dontSee($itemName, "#table-form-field");
176
177
        // after submit
178
        $OrderRegisterPage->受注情報登録();
179
        $I->dontSee($itemName, "#table-form-field");
180
181
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
182
    }
183
184
    public function order_受注削除(\AcceptanceTester $I)
185
    {
186
        $I->wantTo('EA0401-UC08-T01(& UC08-T02) 受注削除');
187
188
        $findOrders = Fixtures::get('findOrders'); // Closure
189
        $TargetOrders = array_filter($findOrders(), function ($Order) {
190
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
191
        });
192
193
        $OrderListPage = OrderManagePage::go($I)->検索();
194
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
195
196
        // 削除
197
        $OrderNumForDel = $OrderListPage->一覧_注文番号(1);
198
        $OrderListPage
199
            ->一覧_選択(1)
200
            ->一覧_削除()
201
            ->Accept_削除();
202
203
        $I->see('受注情報を削除しました', ['css' => '#page_admin_order > div > div.c-contentsArea > div.alert.alert-success.alert-dismissible.fade.show.m-3 > span']);
204
        $I->assertNotEquals($OrderNumForDel, $OrderListPage->一覧_注文番号(1));
205
206
        // 削除キャンセル
207
        $OrderNumForDontDel = $OrderListPage->一覧_注文番号(1);
208
        $OrderListPage
209
            ->一覧_選択(1)
210
            ->一覧_削除()
211
            ->Cancel_削除();
212
213
        $I->assertEquals($OrderNumForDontDel, $OrderListPage->一覧_注文番号(1));
214
    }
215
216
    public function order_受注メール通知(\AcceptanceTester $I)
217
    {
218
        $I->wantTo('EA0402-UC01-T01 受注メール通知');
219
220
        $I->resetEmails();
221
222
        OrderManagePage::go($I)
223
            ->一覧_メール通知(1);
224
225
        $I->seeEmailCount(2);
226
227
        $I->seeInLastEmailSubjectTo('[email protected]', '[EC-CUBE SHOP] 商品出荷のお知らせ');
228
    }
229
230
    public function order_一括メール通知(\AcceptanceTester $I)
231
    {
232
        $I->wantTo('EA0402-UC02-T01(& UC02-T02) 一括メール通知');
233
234
        $I->resetEmails();
235
236
        OrderManagePage::go($I)
237
            ->一覧_全選択()
238
            ->一括メール送信();
239
240
        $I->seeEmailCount(20);
241
    }
242
243
    public function order_受注登録(\AcceptanceTester $I)
244
    {
245
        $I->wantTo('EA0405-UC01-T01(& UC01-T02) 受注登録');
246
247
        $OrderRegisterPage = OrderEditPage::go($I)->受注情報登録();
248
249
        /* 異常系 */
250
        $I->dontSee('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
251
252
        /* 正常系 */
253
        $OrderRegisterPage
254
            ->入力_支払方法(['4' => '郵便振替'])
255
            ->入力_姓('order1')
256
            ->入力_名('order1')
257
            ->入力_セイ('アアア')
258
            ->入力_メイ('アアア')
259
            ->入力_郵便番号('060-0000')
260
            ->入力_都道府県(['1' => '北海道'])
261
            ->入力_市区町村名('bbb')
262
            ->入力_番地_ビル名('bbb')
263
            ->入力_Eメール('[email protected]')
264
            ->入力_電話番号('111-111-111')
265
            ->注文者情報をコピー()
266
            ->入力_配送業者([1 => 'サンプル業者'])
267
            ->商品検索('パーコレーター')
268
            ->商品検索結果_選択(1)
269
            ->受注情報登録();
270
271
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
272
    }
273
274
    public function order_pdfページをエクスポートする(\AcceptanceTester $I)
275
    {
276
        $I->wantTo('EA0401-UC02-T01 pdfページをエクスポートする');
277
278
        $findOrders = Fixtures::get('findOrders'); // Closure
279
        $TargetOrders = array_filter($findOrders(), function ($Order) {
280
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
281
        });
282
        $OrderListPage = OrderManagePage::go($I)->検索();
283
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
284
285
        $OrderListPage->すべてチェック();
286
        $OrderListPage->要素をクリック('#form_bulk #bulkExportPdf');
287
288
        // 別ウィンドウ
289
        $I->switchToWindow('newwin');
290
291
        // Check redirect to form pdf information
292
        $I->see('受注管理帳票出力', OrderManagePage::$タイトル要素);
293
294
        $I->closeTab();
295
    }
296
297
    public function order_出力pdfダウンロード(\AcceptanceTester $I)
298
    {
299
        $I->wantTo('EA0401-UC02-T01 出力pdfダウンロード');
300
301
        $findOrders = Fixtures::get('findOrders'); // Closure
302
        $TargetOrders = array_filter($findOrders(), function ($Order) {
303
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
304
        });
305
        $OrderListPage = OrderManagePage::go($I)->検索();
306
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
307
308
        $OrderListPage->すべてチェック();
309
        $OrderListPage->要素をクリック('#form_bulk #bulkExportPdf');
310
311
        // 別ウィンドウ
312
        $I->switchToWindow('newwin');
313
314
        $I->see('受注管理帳票出力', OrderManagePage::$タイトル要素);
315
316
        $OrderListPage->PDFフォームを入力(['id' => 'order_pdf_note1'], 'Test note first');
317
        $OrderListPage->PDFフォームを入力(['id' => 'order_pdf_note2'], 'Test note second');
318
        $OrderListPage->PDFフォームを入力(['id' => 'order_pdf_note3'], 'Test note third');
319
        $OrderListPage->要素をクリック('#order_pdf_default');
320
        $OrderListPage->要素をクリック('#order_pdf_form .c-conversionArea .justify-content-end button.btn-ec-conversion');
321
        // make sure wait to download file completely
322
        $I->wait(5);
323
        $filename = $I->getLastDownloadFile('/^nouhinsyo\.pdf$/');
324
        $I->assertTrue(file_exists($filename));
325
326
        $I->closeTab();
327
    }
328
329
    public function order_ー括受注のステータス変更(\AcceptanceTester $I)
330
    {
331
        $I->wantTo('EA0405-UC06-T01_ー括受注のステータス変更');
332
333
        // 新規受付ステータスをキャンセルに変更する
334
        $entityManager = Fixtures::get('entityManager');
335
        $findOrders = Fixtures::get('findOrders');
336
        $NewOrders = array_filter($findOrders(), function ($Order) {
337
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
338
        });
339
        $CancelStatus = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::CANCEL);
340
        foreach ($NewOrders as $newOrder) {
341
            $newOrder->setOrderStatus($CancelStatus);
342
        }
343
        $entityManager->flush();
344
345
        // 新規受付ステータスの受注を作る
346
        $createCustomer = Fixtures::get('createCustomer');
347
        $createOrders = Fixtures::get('createOrders');
348
        $newOrders = $createOrders($createCustomer(), 2, array());
349
        $Status = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::NEW);
350
        foreach ($newOrders as $newOrder) {
351
            $newOrder->setOrderStatus($Status);
352
        }
353
        $entityManager->flush();
354
355
        $NewOrders = array_filter($findOrders(), function ($Order) {
356
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
357
        });
358
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW);
359
        $I->see('検索結果:'.count($NewOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
360
361
        $DeliveredOrders = array_filter($findOrders(), function ($Order) {
362
            return $Order->getOrderStatus()->getId() == OrderStatus::DELIVERED;
363
        });
364
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::DELIVERED);
365
        $I->see('検索結果:'.count($DeliveredOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
366
367
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW)
368
            ->一覧_全選択()
369
            ->受注ステータス変更('発送済み');
370
371
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::DELIVERED);
372
        $I->see('検索結果:'.(count($DeliveredOrders) + count($NewOrders)).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
373
    }
374
375
    public function order_個別出荷済みステータス変更(\AcceptanceTester $I)
376
    {
377
        $I->wantTo('EA0405-UC06-T02_個別出荷済みステータス変更');
378
379
        $I->resetEmails();
380
381
        // 新規受付ステータスをキャンセルに変更する
382
        $entityManager = Fixtures::get('entityManager');
383
        $findOrders = Fixtures::get('findOrders');
384
        $NewOrders = array_filter($findOrders(), function ($Order) {
385
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
386
        });
387
        $CancelStatus = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::CANCEL);
388
        foreach ($NewOrders as $newOrder) {
389
            $newOrder->setOrderStatus($CancelStatus);
390
        }
391
        $entityManager->flush();
392
393
        // 新規受付ステータスの受注を作る
394
        $createCustomer = Fixtures::get('createCustomer');
395
        $createOrders = Fixtures::get('createOrders');
396
        $newOrders = $createOrders($createCustomer(), 2, array());
397
        $Status = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::NEW);
398
        foreach ($newOrders as $newOrder) {
399
            $newOrder->setOrderStatus($Status);
400
        }
401
        $entityManager->flush();
402
403
        $DeliveredOrders = array_filter($findOrders(), function ($Order) {
404
            return $Order->getOrderStatus()->getId() == OrderStatus::DELIVERED;
405
        });
406
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::DELIVERED);
407
        $I->see('検索結果:'.count($DeliveredOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
408
409
        $NewOrders = array_filter($findOrders(), function ($Order) {
410
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
411
        });
412
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW);
413
        $I->see('検索結果:'.count($NewOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
414
415
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW)
416
            ->出荷済にする(1);
417
418
        $I->seeEmailCount(2);
419
        $I->seeInLastEmailSubjectTo('[email protected]', '[EC-CUBE SHOP] 商品出荷のお知らせ');
420
421
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW);
422
        $I->see('検索結果:1件が該当しました', OrderManagePage::$検索結果_メッセージ);
423
    }
424
}
425
426
427
428
429
430
431
432
433