Failed Conditions
Push — experimental/sf ( 350ddf...26236d )
by chihiro
166:47 queued 159:16
created

EA09ShippingCest::shipping_出荷CSV登録失敗()   B

Complexity

Conditions 3
Paths 16

Size

Total Lines 66

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
nc 16
nop 1
dl 0
loc 66
rs 8.7418
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\Customer;
5
use Eccube\Entity\Order;
6
use Eccube\Entity\Master\OrderStatus;
7
use Page\Admin\OrderEditPage;
8
use Page\Admin\OrderManagePage;
9
use Page\Admin\ShippingCsvUploadPage;
10
use Page\Admin\ShippingEditPage;
11
use Page\Admin\ShippingManagePage;
12
13
/**
14
 * @group admin
15
 * @group admin01
16
 * @group shipping
17
 * @group ea9
18
 */
19
class EA09ShippingCest
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...
20
{
21
    public function _before(\AcceptanceTester $I)
22
    {
23
        // すべてのテストケース実施前にログインしておく
24
        // ログイン後は管理アプリのトップページに遷移している
25
        $I->loginAsAdmin();
26
    }
27
28
    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...
29
    {
30
    }
31
32
    public function shipping出荷検索(\AcceptanceTester $I)
0 ignored issues
show
Coding Style introduced by
Method name "EA09ShippingCest::shipping出荷検索" is not in camel caps format
Loading history...
33
    {
34
        $I->getScenario()->incomplete('受注管理画面に統合');
35
        $I->wantTo('EA0901-UC01-T01(& UC01-T02, UC01-T3) 出荷検索');
36
37
        $TargetShippings = Fixtures::get('findShippings'); // Closure
38
        $Shippings = $TargetShippings();
39
        ShippingManagePage::go($I);
40
        $I->see('検索結果 : '.count($Shippings).' 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
41
42
        ShippingManagePage::go($I)->検索('[email protected]');
43
        $I->see('検索結果 : 0 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
44
45
        ShippingManagePage::go($I)->詳細検索_電話番号('あああ');
46
        $I->see('検索条件に誤りがあります', ShippingManagePage::$検索結果_エラーメッセージ);
47
    }
48
49
    public function shipping出荷編集(\AcceptanceTester $I)
0 ignored issues
show
Coding Style introduced by
Method name "EA09ShippingCest::shipping出荷編集" is not in camel caps format
Loading history...
50
    {
51
        $I->getScenario()->incomplete('受注管理画面に統合');
52
        $I->wantTo('EA0901-UC03-T01(& UC03-T02) 出荷編集');
53
54
        $I->getScenario()->skip('お届け日を編集時にJSが走らない問題がありskip');
55
56
        $I->resetEmails();
57
58
        $TargetShippings = Fixtures::get('findShippings'); // Closure
59
        $Shippings = $TargetShippings();
60
        $ShippingListPage = ShippingManagePage::go($I);
61
        $I->see('検索結果 : '.count($Shippings).' 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
62
63
        /* 編集 */
64
        $ShippingListPage->一覧_編集(1);
65
66
        $ShippingRegisterPage = ShippingEditPage::at($I)
67
            ->お届け先編集()
68
            ->入力_姓('')
69
            ->出荷情報登録();
70
71
        /* 異常系 */
72
        // FIXME お届け先編集が閉じてしまうため、エラーメッセージが表示されない
73
        // $I->see('入力されていません。', ShippingEditPage::$姓_エラーメッセージ);
74
75
        /* 正常系 */
76
        $ShippingRegisterPage
77
            ->お届け先編集()
78
            ->入力_姓('aaa')
79
            ->入力_セイ('アアア')
80
            ->入力_メイ('アアア')
81
            ->入力_郵便番号('060-0000')
82
            ->入力_都道府県(['1' => '北海道'])
83
            ->入力_市区町村名('bbb')
84
            ->入力_番地_ビル名('bbb')
85
            ->入力_電話番号('111-111-111')
86
            ->入力_番地_ビル名('address 2')
87
            ->出荷情報登録();
88
89
        $I->see('出荷情報を登録しました。', ShippingEditPage::$登録完了メッセージ);
90
91
        /* 出荷済みに変更 */
92
        $ShippingRegisterPage
93
            ->入力_出荷日('2018-09-04')
94
            ->出荷情報登録()
95
            ->変更を確定();
96
        $I->wait(1);
97
        $I->see('出荷情報を登録しました。', ShippingEditPage::$登録完了メッセージ);
98
99
        $I->wait(3);
100
        $I->seeEmailCount(2);
101
    }
102
103
    public function shipping出荷削除(\AcceptanceTester $I)
0 ignored issues
show
Coding Style introduced by
Method name "EA09ShippingCest::shipping出荷削除" is not in camel caps format
Loading history...
104
    {
105
        $I->getScenario()->incomplete('受注管理画面に統合');
106
        $I->wantTo('EA0901-UC04-T01(& UC04-T02) 出荷削除');
107
108
        $TargetShippings = Fixtures::get('findShippings'); // Closure
109
        $Shippings = $TargetShippings();
110
        $ShippingListPage = ShippingManagePage::go($I);
111
        $I->see('検索結果 : '.count($Shippings).' 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
112
113
        // 削除
114
        $ShippingListPage->一覧_チェックボックス(1);
115
        $ShippingListPage->一覧_削除();
116
117
        $I->waitForElementVisible(['xpath' => '//*[@id="page_admin_shipping"]/div[1]/div[3]/div[2]/span']);
118
        $I->see('出荷情報を削除しました。', ['xpath' => '//*[@id="page_admin_shipping"]/div[1]/div[3]/div[2]/span']);
119
120
        // 削除キャンセル
121
        $ShippingListPage->一覧_チェックボックス(1);
122
        $ShippingListPage->一覧_削除キャンセル();
123
    }
124
125
    public function shipping一括発送済み更新(\AcceptanceTester $I)
0 ignored issues
show
Coding Style introduced by
Method name "EA09ShippingCest::shipping一括発送済み更新" is not in camel caps format
Loading history...
126
    {
127
        $I->getScenario()->incomplete('受注管理画面に統合');
128
        $I->wantTo('EA0902-UC01-T01 一括発送済み更新');
129
130
        // 一括操作用の受注を生成しておく
131
        $createCustomer = Fixtures::get('createCustomer');
132
        $createOrders = Fixtures::get('createOrders');
133
        $createOrders($createCustomer(), 10, array());
134
135
        $I->resetEmails();
136
137
        $config = Fixtures::get('config');
0 ignored issues
show
Unused Code introduced by
$config is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
138
        // 未出荷にリセット
139
        $resetShippingDate = Fixtures::get('resetShippingDate'); // Closure
140
        $resetShippingDate();
141
142
        $TargetShippings = Fixtures::get('findShippings'); // Closure
143
        $Shippings = $TargetShippings();
144
        $ShippingListPage = ShippingManagePage::go($I);
145
        $I->see('検索結果 : '.count($Shippings).' 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
146
147
        $ShippingListPage
148
            ->一覧_全選択()
149
            ->一括発送済み更新();
150
151
        $I->wait(5);
152
        $I->waitForElementVisible(['xpath' => '//*[@id="sentUpdateModal"]/div/div/div[2]/p']);
153
        $I->see('処理完了。10件のメールを送信しました', ['xpath' => '//*[@id="sentUpdateModal"]/div/div/div[2]/p']);
154
        $I->seeEmailCount(20);
155
156
        $I->click(['id' => 'bulkChangeComplete']);
157
    }
158
159
    public function shipping出荷登録(\AcceptanceTester $I)
0 ignored issues
show
Coding Style introduced by
Method name "EA09ShippingCest::shipping出荷登録" is not in camel caps format
Loading history...
160
    {
161
        $I->getScenario()->incomplete('受注管理画面に統合');
162
        $I->wantTo('EA0903-UC01-T01(& UC01-T02) 出荷登録');
163
164
        $OrderRegisterPage = OrderEditPage::go($I)->受注情報登録();
165
166
        /* 正常系 */
167
        $OrderRegisterPage
168
            ->入力_受注ステータス(['1' => '新規受付'])
169
            ->入力_姓('order1')
170
            ->入力_名('order1')
171
            ->入力_セイ('アアア')
172
            ->入力_メイ('アアア')
173
            ->入力_郵便番号('060-0000')
174
            ->入力_都道府県(['1' => '北海道'])
175
            ->入力_市区町村名('bbb')
176
            ->入力_番地_ビル名('bbb')
177
            ->入力_Eメール('[email protected]')
178
            ->入力_電話番号('111-111-111')
179
            ->商品検索('パーコレーター')
180
            ->商品検索結果_選択(1)
181
            ->入力_支払方法(['4'=> '郵便振替'])
182
            ->受注情報登録();
183
184
        $ShippingRegisterPage = ShippingEditPage::go($I)->出荷情報登録();
185
186
        /* 異常系 */
187
        $I->dontSee('出荷情報を保存しました。', ShippingEditPage::$登録完了メッセージ);
188
189
190
        /* 正常系 */
191
        $ShippingRegisterPage
192
            ->入力_姓('shipping1')
193
            ->入力_名('shipping1')
194
            ->入力_セイ('アアア')
195
            ->入力_メイ('アアア')
196
            ->入力_郵便番号('060-0000')
197
            ->入力_都道府県(['1' => '北海道'])
198
            ->入力_市区町村名('bbb')
199
            ->入力_番地_ビル名('bbb')
200
            ->入力_電話番号('111-111-111')
201
            ->入力_出荷伝票番号('1111-1111-1111')
202
            ->入力_配送業者([1 => 'サンプル業者'])
203
            ->入力_配達用メモ('メモ')
204
            ->商品検索()
205
            ->商品検索結果_選択(1)
206
            ->出荷情報登録();
207
208
        $I->see('出荷情報を登録しました。', ShippingEditPage::$登録完了メッセージ);
209
    }
210
211
    public function shipping_出荷CSV登録(\AcceptanceTester $I)
0 ignored issues
show
Coding Style introduced by
Method name "EA09ShippingCest::shipping_出荷CSV登録" is not in camel caps format
Loading history...
212
    {
213
        $I->wantTo('EA0903-UC04-T01 出荷CSV登録');
214
215
        $entityManager = Fixtures::get('entityManager');
216
        /* @var Customer $Customer */
217
        $Customer = (Fixtures::get('createCustomer'))();
218
        /* @var Order[] $Orders */
219
        $Orders = (Fixtures::get('createOrders'))($Customer, 3);
220
        // 入金済みに更新しておく
221
        $Status = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::PAID);
222
        foreach ($Orders as $newOrder) {
223
            $newOrder->setOrderStatus($Status);
224
        }
225
        $entityManager->flush();
226
227
        /*
228
         * 出荷再検索 出荷日/伝票番号が登録されていないことを確認
229
         */
230
231
        $OrderManagePage = OrderManagePage::go($I)
232
            ->詳細検索設定()
233
            ->入力_ご注文者お名前($Customer->getName01().$Customer->getName02())
234
            ->入力_ご注文者お名前フリガナ($Customer->getKana01().$Customer->getKana02())
235
            ->検索();
236
237
        $I->see('検索結果:3件が該当しました', OrderManagePage::$検索結果_メッセージ);
238
239
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(1));
240
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(2));
241
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(3));
242
        $I->assertEquals('未発送', $OrderManagePage->取得_出荷日(1));
243
        $I->assertEquals('未発送', $OrderManagePage->取得_出荷日(2));
244
        $I->assertEquals('未発送', $OrderManagePage->取得_出荷日(3));
245
246
        /*
247
         * 出荷CSV登録
248
         */
249
250
        $csv = implode(PHP_EOL, [
251
            '出荷ID,出荷伝票番号,出荷日',
252
            $Orders[0]->getShippings()[0]->getId().',00001,2018-01-01',
253
            $Orders[1]->getShippings()[0]->getId().',00002,2018-02-02',
254
            $Orders[2]->getShippings()[0]->getId().',00003,2018-03-03',
255
        ]);
256
257
        $csvFileName = codecept_data_dir().'/shipping.csv';
258
        file_put_contents($csvFileName, $csv);
259
260
        try {
261
            ShippingCsvUploadPage::go($I)
262
                ->入力_CSVファイル('shipping.csv')
263
                ->CSVアップロード();
264
265
            $I->see('出荷登録CSVファイルをアップロードしました。', ShippingCsvUploadPage::$完了メッセージ);
266
267
            /*
268
             * 出荷再検索 出荷日/伝票番号が登録されたことを確認
269
             */
270
271
            $OrderManagePage = OrderManagePage::go($I)
272
            ->詳細検索設定()
273
            ->入力_ご注文者お名前($Customer->getName01().$Customer->getName02())
274
            ->入力_ご注文者お名前フリガナ($Customer->getKana01().$Customer->getKana02())
275
            ->検索();
276
277
            $I->see('検索結果:3件が該当しました', OrderManagePage::$検索結果_メッセージ);
278
279
            $I->assertEquals('00003', $OrderManagePage->取得_出荷伝票番号(1));
280
            $I->assertEquals('00002', $OrderManagePage->取得_出荷伝票番号(2));
281
            $I->assertEquals('00001', $OrderManagePage->取得_出荷伝票番号(3));
282
            $I->assertEquals('2018/03/03', $OrderManagePage->取得_出荷日(1));
283
            $I->assertEquals('2018/02/02', $OrderManagePage->取得_出荷日(2));
284
            $I->assertEquals('2018/01/01', $OrderManagePage->取得_出荷日(3));
285
            $I->assertEquals('発送済み', $OrderManagePage->取得_ステータス(1));
286
            $I->assertEquals('発送済み', $OrderManagePage->取得_ステータス(2));
287
            $I->assertEquals('発送済み', $OrderManagePage->取得_ステータス(3));
288
        } finally {
289
            if (file_exists($csvFileName)) {
290
                unlink($csvFileName);
291
            }
292
        }
293
    }
294
295
    public function shipping_出荷CSV登録失敗(\AcceptanceTester $I)
0 ignored issues
show
Coding Style introduced by
Method name "EA09ShippingCest::shipping_出荷CSV登録失敗" is not in camel caps format
Loading history...
296
    {
297
        $I->wantTo('EA0903-UC04-T02 出荷CSV登録失敗');
298
299
        $entityManager = Fixtures::get('entityManager');
300
        /* @var Customer $Customer */
301
        $Customer = (Fixtures::get('createCustomer'))();
302
        /* @var Order[] $Orders */
303
        $Orders = (Fixtures::get('createOrders'))($Customer, 3);
304
        // 決済処理中に更新しておく
305
        $Status = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::PENDING);
306
        foreach ($Orders as $newOrder) {
307
            $newOrder->setOrderStatus($Status);
308
        }
309
        $entityManager->flush();
310
311
        /*
312
         * 出荷再検索 出荷日/伝票番号が登録されていないことを確認
313
         */
314
315
        $OrderManagePage = OrderManagePage::go($I)
316
            ->詳細検索設定()
317
            ->入力_ご注文者お名前($Customer->getName01().$Customer->getName02())
318
            ->入力_ご注文者お名前フリガナ($Customer->getKana01().$Customer->getKana02())
319
            ->検索();
320
321
        $I->see('検索結果:3件が該当しました', OrderManagePage::$検索結果_メッセージ);
322
323
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(1));
324
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(2));
325
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(3));
326
        $I->assertEquals('未発送', $OrderManagePage->取得_出荷日(1));
327
        $I->assertEquals('未発送', $OrderManagePage->取得_出荷日(2));
328
        $I->assertEquals('未発送', $OrderManagePage->取得_出荷日(3));
329
330
        /*
331
         * 出荷CSV登録
332
         */
333
334
        $csv = implode(PHP_EOL, [
335
            '出荷ID,出荷伝票番号,出荷日',
336
            $Orders[0]->getShippings()[0]->getId().',00001,2018-01-01',
337
            $Orders[1]->getShippings()[0]->getId().',00002,2018-02-02',
338
            $Orders[2]->getShippings()[0]->getId().',00003,2018-03-03',
339
        ]);
340
341
        $csvFileName = codecept_data_dir().'/shipping.csv';
342
        file_put_contents($csvFileName, $csv);
343
344
        try {
345
            ShippingCsvUploadPage::go($I)
346
                ->入力_CSVファイル('shipping.csv')
347
                ->CSVアップロード();
348
349
            $I->see(sprintf('%s: %s から %s へステータス変更できませんでした', $Orders[0]->getShippings()[0]->getId(), '決済処理中', '発送済み'),
350
                    '#upload_file_box__upload_error--1');
351
            $I->see(sprintf('%s: %s から %s へステータス変更できませんでした', $Orders[1]->getShippings()[0]->getId(), '決済処理中', '発送済み'),
352
                    '#upload_file_box__upload_error--2');
353
            $I->see(sprintf('%s: %s から %s へステータス変更できませんでした', $Orders[2]->getShippings()[0]->getId(), '決済処理中', '発送済み'),
354
                    '#upload_file_box__upload_error--3');
355
        } finally {
356
            if (file_exists($csvFileName)) {
357
                unlink($csvFileName);
358
            }
359
        }
360
    }
361
362 View Code Duplication
    public function shipping_出荷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...
Coding Style introduced by
Method name "EA09ShippingCest::shipping_出荷CSV雛形ファイルダウンロード" is not in camel caps format
Loading history...
363
    {
364
        $I->wantTo('EA0093-UC04-T02 出荷CSV雛形ファイルのダウンロード');
365
366
        ShippingCsvUploadPage::go($I)->雛形ダウンロード();
367
        $csv = $I->getLastDownloadFile('/^shipping\.csv$/');
368
        $I->assertEquals(mb_convert_encoding(file_get_contents($csv), 'UTF-8', 'Shift_JIS'), '出荷ID,出荷伝票番号,出荷日'.PHP_EOL);
369
    }
370
}
371