Completed
Push — 4.0 ( 87d096...bcc1be )
by Kiyotaka
05:44 queued 11s
created

codeception/acceptance/EA04OrderCest.php (1 issue)

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
/*
4
 * This file is part of EC-CUBE
5
 *
6
 * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
7
 *
8
 * http://www.ec-cube.co.jp/
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
use Codeception\Util\Fixtures;
15
use Eccube\Entity\Master\OrderStatus;
16
use Eccube\Entity\Order;
17
use Page\Admin\CsvSettingsPage;
18
use Page\Admin\OrderEditPage;
19
use Page\Admin\OrderManagePage;
20
21
/**
22
 * @group admin
23
 * @group admin01
24
 * @group order
25
 * @group ea4
26
 */
27
class EA04OrderCest
28
{
29
    public function _before(\AcceptanceTester $I)
30
    {
31
        // すべてのテストケース実施前にログインしておく
32
        // ログイン後は管理アプリのトップページに遷移している
33
        $I->loginAsAdmin();
34
    }
35
36
    public function _after(\AcceptanceTester $I)
37
    {
38
    }
39
40
    public function order_受注検索(\AcceptanceTester $I)
41
    {
42
        $I->wantTo('EA0401-UC01-T01(& UC01-T02, UC01-T03) 受注検索');
43
44
        $findOrders = Fixtures::get('findOrders'); // Closure
45
        $TargetOrders = array_filter($findOrders(), function ($Order) {
46
            return !in_array($Order->getOrderStatus()->getId(), [OrderStatus::PROCESSING, OrderStatus::PENDING]);
47
        });
48
        OrderManagePage::go($I)->検索();
49
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
50
51
        OrderManagePage::go($I)->検索('[email protected]');
52
        $I->see('検索結果:0件が該当しました', OrderManagePage::$検索結果_メッセージ);
53
54
        OrderManagePage::go($I)->詳細検索_電話番号('あああ');
55
        $I->see('検索条件に誤りがあります', OrderManagePage::$検索結果_エラーメッセージ);
56
    }
57
58 View Code Duplication
    public function order_受注CSVダウンロード(\AcceptanceTester $I)
59
    {
60
        $I->wantTo('EA0401-UC02-T01 受注CSVダウンロード');
61
62
        $findOrders = Fixtures::get('findOrders'); // Closure
63
        $TargetOrders = array_filter($findOrders(), function ($Order) {
64
            return !in_array($Order->getOrderStatus()->getId(), [OrderStatus::PROCESSING, OrderStatus::PENDING]);
65
        });
66
        $OrderListPage = OrderManagePage::go($I)->検索();
67
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
68
69
        $OrderListPage->受注CSVダウンロード実行();
70
        // make sure wait to download file completely
71
        $I->wait(10);
72
        $OrderCSV = $I->getLastDownloadFile('/^order_\d{14}\.csv$/');
73
        $I->assertGreaterOrEquals(count($TargetOrders), count(file($OrderCSV)), '検索結果以上の行数があるはず');
74
    }
75
76 View Code Duplication
    public function order_受注情報のCSV出力項目変更設定(\AcceptanceTester $I)
77
    {
78
        $I->wantTo('EA0401-UC02-T02 受注情報のCSV出力項目変更設定');
79
80
        $findOrders = Fixtures::get('findOrders'); // Closure
81
        $TargetOrders = array_filter($findOrders(), function ($Order) {
82
            return !in_array($Order->getOrderStatus()->getId(), [OrderStatus::PROCESSING, OrderStatus::PENDING]);
83
        });
84
        $OrderListPage = OrderManagePage::go($I)->検索();
85
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
86
87
        /* 項目設定 */
88
        $OrderListPage->受注CSV出力項目設定();
89
90
        CsvSettingsPage::at($I);
91
        $value = $I->grabValueFrom(CsvSettingsPage::$CSVタイプ);
92
        $I->assertEquals(3, $value);
93
    }
94
95 View Code Duplication
    public function order_配送CSVダウンロード(\AcceptanceTester $I)
96
    {
97
        $I->wantTo('EA0401-UC02-T01 配送CSVダウンロード');
98
99
        $findOrders = Fixtures::get('findOrders'); // Closure
100
        $TargetOrders = array_filter($findOrders(), function ($Order) {
101
            return !in_array($Order->getOrderStatus()->getId(), [OrderStatus::PROCESSING, OrderStatus::PENDING]);
102
        });
103
        $OrderListPage = OrderManagePage::go($I)->検索();
104
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
105
106
        $OrderListPage->配送CSVダウンロード実行();
107
        // make sure wait to download file completely
108
        $I->wait(10);
109
        $OrderCSV = $I->getLastDownloadFile('/^shipping_\d{14}\.csv$/');
110
        $I->assertGreaterOrEquals(count($TargetOrders), count(file($OrderCSV)), '検索結果以上の行数があるはず');
111
    }
112
113 View Code Duplication
    public function order_配送情報のCSV出力項目変更設定(\AcceptanceTester $I)
114
    {
115
        $I->wantTo('EA0401-UC02-T02 配送情報のCSV出力項目変更設定');
116
117
        $findOrders = Fixtures::get('findOrders'); // Closure
118
        $TargetOrders = array_filter($findOrders(), function ($Order) {
119
            return !in_array($Order->getOrderStatus()->getId(), [OrderStatus::PROCESSING, OrderStatus::PENDING]);
120
        });
121
        $OrderListPage = OrderManagePage::go($I)->検索();
122
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
123
124
        /* 項目設定 */
125
        $OrderListPage->配送CSV出力項目設定();
126
127
        CsvSettingsPage::at($I);
128
        $value = $I->grabValueFrom(CsvSettingsPage::$CSVタイプ);
129
        $I->assertEquals(4, $value);
130
    }
131
132
    public function order_受注編集(\AcceptanceTester $I)
133
    {
134
        $I->wantTo('EA0401-UC05-T01(& UC05-T02/UC05-T03/UC06-T01) 受注編集');
135
136
        // 新規受付ステータスの受注を作る
137
        $createCustomer = Fixtures::get('createCustomer');
138
        $createOrders = Fixtures::get('createOrders');
139
        /** @var Order[] $newOrders */
140
        $newOrders = $createOrders($createCustomer(), 1, [], OrderStatus::NEW);
141
142
        $OrderListPage = OrderManagePage::go($I)->検索($newOrders[0]->getOrderNo());
143
144
        $I->see('検索結果:1件が該当しました', OrderManagePage::$検索結果_メッセージ);
145
146
        /* 編集 */
147
        $OrderListPage->一覧_編集(1);
148
149
        $OrderRegisterPage = OrderEditPage::at($I)
150
            ->注文者パネルを開く()
151
            ->入力_姓('')
152
            ->受注情報登録();
153
154
        /* 異常系 */
155
        $I->see('入力されていません。', OrderEditPage::$姓_エラーメッセージ);
156
157
        /* 正常系 */
158
        $OrderRegisterPage
159
            ->入力_姓('aaa')
160
            ->入力_セイ('アアア')
161
            ->入力_メイ('アアア')
162
            ->入力_郵便番号('060-0000')
163
            ->入力_都道府県(['1' => '北海道'])
164
            ->入力_市区町村名('bbb')
165
            ->入力_番地_ビル名('bbb')
166
            ->入力_電話番号('111-111-111')
167
            ->入力_番地_ビル名('address 2')
168
            ->入力_支払方法(['4' => '郵便振替'])
169
            ->受注情報登録();
170
171
        $I->see('保存しました', OrderEditPage::$登録完了メッセージ);
172
173
        /* ステータス変更 */
174
        $OrderRegisterPage
175
            // 新規受付から遷移可能なステータスをセットする.
176
            ->入力_受注ステータス(['3' => '入金済み'])
177
            ->受注情報登録();
178
179
        $I->see('保存しました', OrderEditPage::$登録完了メッセージ);
180
181
        /* 明細の削除 */
182
        $itemName = $OrderRegisterPage->明細の項目名を取得(1);
183
        $OrderRegisterPage->明細を削除(1)
184
            ->acceptDeleteModal(1);
185
        $I->wait(2);
186
187
        // before submit
188
        $I->dontSee($itemName, '#table-form-field');
189
190
        // after submit
191
        $OrderRegisterPage->受注情報登録();
192
        $I->dontSee($itemName, '#table-form-field');
193
194
        $I->see('保存しました', OrderEditPage::$登録完了メッセージ);
195
    }
196
197
    public function order_受注削除(\AcceptanceTester $I)
198
    {
199
        $I->getScenario()->incomplete('未実装:受注削除は未実装');
200
        $I->wantTo('EA0401-UC08-T01(& UC08-T02) 受注削除');
201
202
        $findOrders = Fixtures::get('findOrders'); // Closure
203
        $TargetOrders = array_filter($findOrders(), function ($Order) {
204
            return !in_array($Order->getOrderStatus()->getId(), [OrderStatus::PROCESSING, OrderStatus::PENDING]);
205
        });
206
207
        $OrderListPage = OrderManagePage::go($I)->検索();
208
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
209
210
        // 削除
211
        $OrderNumForDel = $OrderListPage->一覧_注文番号(1);
212
        $OrderListPage
213
            ->一覧_選択(1)
214
            ->一覧_削除()
215
            ->Accept_削除();
216
217
        $I->see('削除しました', ['css' => '#page_admin_order > div > div.c-contentsArea > div.alert.alert-success.alert-dismissible.fade.show.m-3 > span']);
218
        $I->assertNotEquals($OrderNumForDel, $OrderListPage->一覧_注文番号(1));
219
220
        // 削除キャンセル
221
        $OrderNumForDontDel = $OrderListPage->一覧_注文番号(1);
222
        $OrderListPage
223
            ->一覧_選択(1)
224
            ->一覧_削除()
225
            ->Cancel_削除();
226
227
        $I->assertEquals($OrderNumForDontDel, $OrderListPage->一覧_注文番号(1));
228
    }
229
230
    public function order_受注メール通知(\AcceptanceTester $I)
231
    {
232
        $I->wantTo('EA0402-UC01-T01 受注メール通知');
233
234
        $I->resetEmails();
235
236
        OrderManagePage::go($I)
237
            ->一覧_メール通知(1);
238
239
        $I->seeEmailCount(2);
240
241
        $I->seeInLastEmailSubjectTo('[email protected]', '[EC-CUBE SHOP] 商品出荷のお知らせ');
242
    }
243
244
    public function order_一括メール通知(\AcceptanceTester $I)
245
    {
246
        $I->wantTo('EA0402-UC02-T01(& UC02-T02) 一括メール通知');
247
248
        $I->resetEmails();
249
250
        OrderManagePage::go($I)
251
            ->件数変更(10)
252
            ->一覧_全選択()
253
            ->一括メール送信();
254
255
        $I->seeEmailCount(20);
256
    }
257
258
    public function order_受注登録(\AcceptanceTester $I)
259
    {
260
        $I->wantTo('EA0405-UC01-T01(& UC01-T02) 受注登録');
261
262
        $OrderRegisterPage = OrderEditPage::go($I)->受注情報登録();
263
264
        /* 異常系 */
265
        $I->dontSee('保存しました', OrderEditPage::$登録完了メッセージ);
266
267
        /* 正常系 */
268
        $OrderRegisterPage
269
            ->入力_支払方法(['4' => '郵便振替'])
270
            ->入力_姓('order1')
271
            ->入力_名('order1')
272
            ->入力_セイ('アアア')
273
            ->入力_メイ('アアア')
274
            ->入力_郵便番号('060-0000')
275
            ->入力_都道府県(['1' => '北海道'])
276
            ->入力_市区町村名('bbb')
277
            ->入力_番地_ビル名('bbb')
278
            ->入力_Eメール('[email protected]')
279
            ->入力_電話番号('111-111-111')
280
            ->注文者情報をコピー()
281
            ->入力_配送業者([1 => 'サンプル業者'])
282
            ->商品検索('チェリーアイスサンド')
283
            ->商品検索結果_選択(1)
284
            ->受注情報登録();
285
286
        $I->see('保存しました', OrderEditPage::$登録完了メッセージ);
287
    }
288
289
    public function order_pdfページをエクスポートする(\AcceptanceTester $I)
290
    {
291
        $I->wantTo('EA0401-UC02-T01 pdfページをエクスポートする');
292
293
        $findOrders = Fixtures::get('findOrders'); // Closure
294
        $TargetOrders = array_filter($findOrders(), function ($Order) {
295
            return !in_array($Order->getOrderStatus()->getId(), [OrderStatus::PROCESSING, OrderStatus::PENDING]);
296
        });
297
        $OrderListPage = OrderManagePage::go($I)->検索();
298
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
299
300
        $OrderListPage->すべてチェック();
301
        $OrderListPage->要素をクリック('#form_bulk #bulkExportPdf');
302
303
        // 別ウィンドウ
304
        $I->switchToWindow('newwin');
305
306
        // Check redirect to form pdf information
307
        $I->see('納品書出力受注管理', OrderManagePage::$タイトル要素);
308
309
        $I->closeTab();
310
    }
311
312
    public function order_出力pdfダウンロード(\AcceptanceTester $I)
313
    {
314
        $I->wantTo('EA0401-UC02-T01 出力pdfダウンロード');
315
316
        $findOrders = Fixtures::get('findOrders'); // Closure
317
        $TargetOrders = array_filter($findOrders(), function ($Order) {
318
            return !in_array($Order->getOrderStatus()->getId(), [OrderStatus::PROCESSING, OrderStatus::PENDING]);
319
        });
320
        $OrderListPage = OrderManagePage::go($I)->検索();
321
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
322
323
        $OrderListPage->すべてチェック();
324
        $OrderListPage->要素をクリック('#form_bulk #bulkExportPdf');
325
326
        // 別ウィンドウ
327
        $I->switchToWindow('newwin');
328
329
        $I->see('納品書出力受注管理', OrderManagePage::$タイトル要素);
330
331
        $OrderListPage->PDFフォームを入力(['id' => 'order_pdf_note1'], 'Test note first');
332
        $OrderListPage->PDFフォームを入力(['id' => 'order_pdf_note2'], 'Test note second');
333
        $OrderListPage->PDFフォームを入力(['id' => 'order_pdf_note3'], 'Test note third');
334
        $OrderListPage->要素をクリック('#order_pdf_default');
335
        $OrderListPage->要素をクリック('#order_pdf_form .c-conversionArea .justify-content-end button.btn-ec-conversion');
336
        // make sure wait to download file completely
337
        $I->wait(5);
338
        $filename = $I->getLastDownloadFile('/^nouhinsyo\.pdf$/');
339
        $I->assertTrue(file_exists($filename));
340
341
        $I->closeTab();
342
    }
343
344
    public function order_ー括受注のステータス変更(\AcceptanceTester $I)
345
    {
346
        $I->wantTo('EA0405-UC06-T01_ー括受注のステータス変更');
347
348
        // 新規受付ステータスをキャンセルに変更する
349
        $entityManager = Fixtures::get('entityManager');
350
        $findOrders = Fixtures::get('findOrders');
351
        $ExistsNewOrders = array_filter($findOrders(), function ($Order) {
352
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
353
        });
354
        $CancelStatus = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::CANCEL);
355
        foreach ($ExistsNewOrders as $ExistsNewOrder) {
356
            $ExistsNewOrder->setOrderStatus($CancelStatus);
357
        }
358
        $entityManager->flush();
359
360
        // 新規受付ステータスの受注を作る
361
        $createCustomer = Fixtures::get('createCustomer');
362
        $createOrders = Fixtures::get('createOrders');
363
        $NewOrders = $createOrders($createCustomer(), 2, []);
364
        $Status = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::NEW);
365
        foreach ($NewOrders as $NewOrder) {
366
            $NewOrder->setOrderStatus($Status);
367
        }
368
        $entityManager->flush();
369
370
        // 検索し直す
371
        $NewOrders = array_filter($findOrders(), function ($Order) {
372
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
373
        });
374
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW);
375
        $I->comment('新規受付の受注を検索します。想定値: '.count($NewOrders).'件');
376
        $I->see('検索結果:'.count($NewOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
377
378
        $DeliveredOrders = array_filter($findOrders(), function ($Order) {
379
            return $Order->getOrderStatus()->getId() == OrderStatus::DELIVERED;
380
        });
381
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::DELIVERED);
382
        $I->comment('発送済みの受注を検索します。想定値: '.count($DeliveredOrders).'件');
383
        $I->see('検索結果:'.count($DeliveredOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
384
385
        $I->comment('受注ステータスを新規受付から発送済みに変更します');
386
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW)
387
            ->一覧_全選択()
388
            ->受注ステータス変更('発送済み');
0 ignored issues
show
'発送済み' 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...
389
390
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::DELIVERED);
391
        $I->comment('発送済みに変更した件数を確認します。新規受付: '.count($NewOrders).'件 +  発送済み: '.count($DeliveredOrders).'件');
392
        $I->see('検索結果:'.(count($DeliveredOrders) + count($NewOrders)).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
393
    }
394
395
    public function order_個別出荷済みステータス変更(\AcceptanceTester $I)
396
    {
397
        $I->wantTo('EA0405-UC06-T02_個別出荷済みステータス変更');
398
399
        $I->resetEmails();
400
401
        // 新規受付ステータスをキャンセルに変更する
402
        $entityManager = Fixtures::get('entityManager');
403
        $findOrders = Fixtures::get('findOrders');
404
        $ExistsNewOrders = array_filter($findOrders(), function ($Order) {
405
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
406
        });
407
        $CancelStatus = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::CANCEL);
408
        foreach ($ExistsNewOrders as $ExistsNewOrder) {
409
            $ExistsNewOrder->setOrderStatus($CancelStatus);
410
        }
411
        $entityManager->flush();
412
413
        // 新規受付ステータスの受注を作る
414
        $createCustomer = Fixtures::get('createCustomer');
415
        $createOrders = Fixtures::get('createOrders');
416
        $NewOrders = $createOrders($createCustomer(), 2, []);
417
        $Status = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::NEW);
418
        foreach ($NewOrders as $NewOrder) {
419
            $NewOrder->setOrderStatus($Status);
420
        }
421
        $entityManager->flush();
422
423
        $DeliveredOrders = array_filter($findOrders(), function ($Order) {
424
            return $Order->getOrderStatus()->getId() == OrderStatus::DELIVERED;
425
        });
426
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::DELIVERED);
427
        $I->comment('発送済みの受注を検索します。想定値: '.count($DeliveredOrders).'件');
428
        $I->see('検索結果:'.count($DeliveredOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
429
430
        $NewOrders = array_filter($findOrders(), function ($Order) {
431
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
432
        });
433
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW);
434
        $I->comment('新規受付の受注を検索します。想定値: '.count($NewOrders).'件');
435
        $I->see('検索結果:'.count($NewOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
436
437
        $I->comment('出荷済みに変更します');
438
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW)
439
            ->出荷済にする(1);
440
441
        $I->wait(5);
442
        $I->seeEmailCount(2);
443
        $I->seeInLastEmailSubjectTo('[email protected]', '[EC-CUBE SHOP] 商品出荷のお知らせ');
444
445
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW);
446
        $I->see('検索結果:1件が該当しました', OrderManagePage::$検索結果_メッセージ);
447
    }
448
}
449