Failed Conditions
Pull Request — experimental/sf (#3236)
by Kentaro
132:46 queued 125:39
created

EA04OrderCest::order_受注編集()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 59

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 59
rs 8.8945
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
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
    /**
47
     * @env firefox
48
     * @env chrome
49
     */
50
    public function order_受注CSVダウンロード(\AcceptanceTester $I)
51
    {
52
        $I->wantTo('EA0401-UC02-T01 受注CSVダウンロード');
53
54
        $findOrders = Fixtures::get('findOrders'); // Closure
55
        $TargetOrders = array_filter($findOrders(), function ($Order) {
56
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
57
        });
58
        $OrderListPage = OrderManagePage::go($I)->検索();
59
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
60
61
        $OrderListPage->受注CSVダウンロード実行();
62
        // make sure wait to download file completely
63
        $I->wait(10);
64
        $OrderCSV = $I->getLastDownloadFile('/^order_\d{14}\.csv$/');
65
        $I->assertGreaterOrEquals(count($TargetOrders), count(file($OrderCSV)), '検索結果以上の行数があるはず');
66
    }
67
68
    public function order_受注情報のCSV出力項目変更設定(\AcceptanceTester $I)
69
    {
70
        $I->wantTo('EA0401-UC02-T02 受注情報のCSV出力項目変更設定');
71
72
        $findOrders = Fixtures::get('findOrders'); // Closure
73
        $TargetOrders = array_filter($findOrders(), function ($Order) {
74
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
75
        });
76
        $OrderListPage = OrderManagePage::go($I)->検索();
77
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
78
79
        /* 項目設定 */
80
        $OrderListPage->受注CSV出力項目設定();
81
82
        CsvSettingsPage::at($I);
83
        $value = $I->grabValueFrom(CsvSettingsPage::$CSVタイプ);
84
        $I->assertEquals(3, $value);
85
    }
86
87
    public function order_受注編集(\AcceptanceTester $I)
88
    {
89
        $I->wantTo('EA0401-UC05-T01(& UC05-T02/UC05-T03/UC06-T01) 受注編集');
90
91
        $findOrders = Fixtures::get('findOrders'); // Closure
92
        $TargetOrders = array_filter($findOrders(), function ($Order) {
93
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
94
        });
95
        $OrderListPage = OrderManagePage::go($I)->検索();
96
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
97
98
        /* 編集 */
99
        $OrderListPage->一覧_編集(1);
100
101
        $OrderRegisterPage = OrderEditPage::at($I)
102
            ->入力_姓('')
103
            ->受注情報登録();
104
105
        /* 異常系 */
106
        $I->see('入力されていません。', OrderEditPage::$姓_エラーメッセージ);
107
108
        /* 正常系 */
109
        $OrderRegisterPage
110
            ->入力_姓('aaa')
111
            ->入力_セイ('アアア')
112
            ->入力_メイ('アアア')
113
            ->入力_郵便番号('060-0000')
114
            ->入力_都道府県(['1' => '北海道'])
115
            ->入力_市区町村名('bbb')
116
            ->入力_番地_ビル名('bbb')
117
            ->入力_電話番号('111-111-111')
118
            ->入力_番地_ビル名('address 2')
119
            ->入力_支払方法(['4' => '郵便振替'])
120
            ->受注情報登録();
121
122
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
123
124
        /* ステータス変更 */
125
        $OrderRegisterPage
126
            ->入力_受注ステータス(['2' => '入金待ち'])
127
            ->受注情報登録();
128
129
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
130
131
        /* 明細の削除 */
132
        $itemName = $OrderRegisterPage->明細の項目名を取得(1);
133
        $OrderRegisterPage->明細を削除(1)
134
            ->acceptDeleteModal(1);
135
        $I->wait(2);
136
137
        // before submit
138
        $I->dontSee($itemName, "#table-form-field");
139
140
        // after submit
141
        $OrderRegisterPage->受注情報登録();
142
        $I->dontSee($itemName, "#table-form-field");
143
144
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
145
    }
146
147
    public function order_受注削除(\AcceptanceTester $I)
148
    {
149
        $I->wantTo('EA0401-UC08-T01(& UC08-T02) 受注削除');
150
151
        $findOrders = Fixtures::get('findOrders'); // Closure
152
        $TargetOrders = array_filter($findOrders(), function ($Order) {
153
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
154
        });
155
156
        $OrderListPage = OrderManagePage::go($I)->検索();
157
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
158
159
        // 削除
160
        $OrderNumForDel = $OrderListPage->一覧_注文番号(1);
161
        $OrderListPage
162
          ->一覧_選択(1)
163
          ->一覧_削除()
164
          ->Accept_削除();
165
166
        $I->see('受注情報を削除しました', ['css' => '#page_admin_order > div > div.c-contentsArea > div.alert.alert-success.alert-dismissible.fade.show.m-3 > span']);
167
        $I->assertNotEquals($OrderNumForDel, $OrderListPage->一覧_注文番号(1));
168
169
        // 削除キャンセル
170
        $OrderNumForDontDel = $OrderListPage->一覧_注文番号(1);
171
        $OrderListPage
172
          ->一覧_選択(1)
173
          ->一覧_削除()
174
          ->Cancel_削除();
175
176
        $I->assertEquals($OrderNumForDontDel, $OrderListPage->一覧_注文番号(1));
177
    }
178
179
    public function order_受注メール通知(\AcceptanceTester $I)
180
    {
181
        $I->wantTo('EA0402-UC01-T01 受注メール通知');
182
183
        $I->resetEmails();
184
        $findOrders = Fixtures::get('findOrders');
185
        $NewOrders = array_filter($findOrders(), function ($Order) {
186
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
187
        });
188
        $Order = array_pop($NewOrders);
189
        $OrderListPage = OrderManagePage::go($I)->検索($Order->getId());
190
        $I->see('検索結果:1件が該当しました', OrderManagePage::$検索結果_メッセージ);
191
192
        $OrderListPage->一覧_メール通知(1);
193
194
        $I->selectOption(['id' => 'template-change'], ['1' => '注文受付メール']);
195
        $I->click(['id' => 'mailConfirm']);
196
        $I->scrollTo(['id' => 'sendMail'], 0, 100);
197
        $I->wait(1);
198
        $I->click(['id' => 'sendMail']);
199
200
        $I->wait(3);
201
        $I->seeEmailCount(2);
202
203
        $I->seeInLastEmailSubjectTo('[email protected]', 'ご注文ありがとうございます');
204
    }
205
206
    public function order_一括メール通知(\AcceptanceTester $I)
207
    {
208
        $I->wantTo('EA0402-UC02-T01(& UC02-T02) 一括メール通知');
209
210
        $I->resetEmails();
211
212
        $config = Fixtures::get('config');
213
        $findOrders = Fixtures::get('findOrders'); // Closure
214
        $TargetOrders = array_filter($findOrders(), function ($Order) use ($config) {
215
            return $Order->getOrderStatus()->getId() != OrderStatus::PROCESSING;
216
        });
217
        $OrderListPage = OrderManagePage::go($I)->検索();
218
        $I->see('検索結果:'.count($TargetOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
219
220
        $OrderListPage
221
            ->一覧_全選択()
222
            ->メール一括通知();
223
224
        $I->selectOption(['id' => 'template-change'], ['1' => '注文受付メール']);
225
        $I->click(['id' => 'mailConfirm']);
226
        $I->scrollTo(['id' => 'sendMail'], 0, 100);
227
        $I->wait(1);
228
        $I->click(['id' => 'sendMail']);
229
230
        $I->wait(5);
231
        $I->seeEmailCount(20);
232
    }
233
234
    public function order_受注登録(\AcceptanceTester $I)
235
    {
236
        $I->wantTo('EA0405-UC01-T01(& UC01-T02) 受注登録');
237
238
        $OrderRegisterPage = OrderEditPage::go($I)->受注情報登録();
239
240
        /* 異常系 */
241
        $I->dontSee('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
242
243
        /* 正常系 */
244
        $OrderRegisterPage
245
            ->入力_受注ステータス(['1' => '新規受付'])
246
            ->入力_姓('order1')
247
            ->入力_名('order1')
248
            ->入力_セイ('アアア')
249
            ->入力_メイ('アアア')
250
            ->入力_郵便番号('060-0000')
251
            ->入力_都道府県(['1' => '北海道'])
252
            ->入力_市区町村名('bbb')
253
            ->入力_番地_ビル名('bbb')
254
            ->入力_Eメール('[email protected]')
255
            ->入力_電話番号('111-111-111')
256
            ->商品検索('パーコレーター')
257
            ->商品検索結果_選択(1)
258
            ->入力_支払方法(['4' => '郵便振替'])
259
            ->受注情報登録();
260
261
        $I->see('受注情報を保存しました。', OrderEditPage::$登録完了メッセージ);
262
    }
263
264
    public function order_ー括受注のステータス変更(\AcceptanceTester $I)
265
    {
266
        $I->wantTo('EA0405-UC06-T01_ー括受注のステータス変更');
267
268
        // 新規受付ステータスをキャンセルに変更する
269
        $entityManager = Fixtures::get('entityManager');
270
        $findOrders = Fixtures::get('findOrders');
271
        $NewOrders = array_filter($findOrders(), function ($Order) {
272
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
273
        });
274
        $CancelStatus = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::CANCEL);
275
        foreach ($NewOrders as $newOrder) {
276
            $newOrder->setOrderStatus($CancelStatus);
277
        }
278
        $entityManager->flush();
279
280
        // 新規受付ステータスの受注を作る
281
        $createCustomer = Fixtures::get('createCustomer');
282
        $createOrders = Fixtures::get('createOrders');
283
        $newOrders = $createOrders($createCustomer(), 2, array());
284
        $Status = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::NEW);
285
        foreach ($newOrders as $newOrder) {
286
            $newOrder->setOrderStatus($Status);
287
        }
288
        $entityManager->flush();
289
290
        $NewOrders = array_filter($findOrders(), function ($Order) {
291
            return $Order->getOrderStatus()->getId() == OrderStatus::NEW;
292
        });
293
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW);
294
        $I->see('検索結果:'.count($NewOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
295
296
        $DeliveredOrders = array_filter($findOrders(), function ($Order) {
297
            return $Order->getOrderStatus()->getId() == OrderStatus::DELIVERED;
298
        });
299
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::DELIVERED);
300
        $I->see('検索結果:'.count($DeliveredOrders).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
301
302
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::NEW)
303
            ->一覧_全選択()
304
            ->受注ステータス変更('発送済み');
305
306
        OrderManagePage::go($I)->受注ステータス検索(OrderStatus::DELIVERED);
307
        $I->see('検索結果:'.(count($DeliveredOrders) + count($NewOrders)).'件が該当しました', OrderManagePage::$検索結果_メッセージ);
308
    }
309
}
310