Failed Conditions
Pull Request — experimental/sf (#3374)
by Kentaro
65:36 queued 57:36
created

codeception/acceptance/EA09ShippingCest.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
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
20
{
21
    public function _before(\AcceptanceTester $I)
22
    {
23
        // すべてのテストケース実施前にログインしておく
24
        // ログイン後は管理アプリのトップページに遷移している
25
        $I->loginAsAdmin();
26
    }
27
28
    public function _after(\AcceptanceTester $I)
29
    {
30
    }
31
32
    public function shipping出荷検索(\AcceptanceTester $I)
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)
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)
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)
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');
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)
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)
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
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)
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