Completed
Push — 4.0 ( 268f2c...88f012 )
by Hideki
05:48 queued 10s
created

codeception/acceptance/EA09ShippingCest.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
/*
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\Customer;
16
use Eccube\Entity\Master\OrderStatus;
17
use Eccube\Entity\Order;
18
use Page\Admin\OrderEditPage;
19
use Page\Admin\OrderManagePage;
20
use Page\Admin\ShippingCsvUploadPage;
21
use Page\Admin\ShippingEditPage;
22
23
/**
24
 * @group admin
25
 * @group admin01
26
 * @group shipping
27
 * @group ea9
28
 */
29
class EA09ShippingCest
30
{
31
    public function _before(\AcceptanceTester $I)
32
    {
33
        // すべてのテストケース実施前にログインしておく
34
        // ログイン後は管理アプリのトップページに遷移している
35
        $I->loginAsAdmin();
36
    }
37
38
    public function _after(\AcceptanceTester $I)
39
    {
40
    }
41
42
    public function shipping出荷編集(\AcceptanceTester $I)
43
    {
44
        $I->wantTo('EA0901-UC03-T01(& UC03-T02) 出荷編集');
45
46
        $I->resetEmails();
47
48
        // 対応中ステータスの受注を作る
49
        $createCustomer = Fixtures::get('createCustomer');
50
        $createOrders = Fixtures::get('createOrders');
51
        /** @var Order[] $newOrders */
52
        $newOrders = $createOrders($createCustomer(), 1, [], OrderStatus::IN_PROGRESS);
53
54
        $OrderListPage = OrderManagePage::go($I)->検索($newOrders[0]->getOrderNo());
55
56
        $I->see('検索結果:1件が該当しました', OrderManagePage::$検索結果_メッセージ);
57
58
        /* 編集 */
59
        $OrderListPage->一覧_編集(1);
60
61
        $OrderRegisterPage = OrderEditPage::at($I)
0 ignored issues
show
$OrderRegisterPage 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...
62
            ->お届け先の追加();
63
64
        $TargetShippings = Fixtures::get('findShippings'); // Closure
65
        $Shippings = $TargetShippings();
0 ignored issues
show
$Shippings 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...
66
67
        $ShippingRegisterPage = ShippingEditPage::at($I)
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
        $I->wait(10);
92
93
        // 出荷済みに変更
94
        $ShippingRegisterPage
95
            ->出荷完了にする()
96
            ->変更を確定()
97
            ->出荷日を確認();
98
    }
99
100
    public function shippingお届け先追加(\AcceptanceTester $I)
101
    {
102
        $I->wantTo('EA0901-UC03-T03 お届け先追加');
103
104
        $I->resetEmails();
105
106
        // 対応中ステータスの受注を作る
107
        $createCustomer = Fixtures::get('createCustomer');
108
        $createOrders = Fixtures::get('createOrders');
109
        /** @var Order[] $newOrders */
110
        $newOrders = $createOrders($createCustomer(), 1, [], OrderStatus::IN_PROGRESS);
111
112
        $OrderListPage = OrderManagePage::go($I)->検索($newOrders[0]->getOrderNo());
113
114
        $I->see('検索結果:1件が該当しました', OrderManagePage::$検索結果_メッセージ);
115
116
        /* 編集 */
117
        $OrderListPage->一覧_編集(1);
118
119
        $OrderRegisterPage = OrderEditPage::at($I)
0 ignored issues
show
$OrderRegisterPage 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...
120
            ->お届け先の追加();
121
122
        $TargetShippings = Fixtures::get('findShippings'); // Closure
123
        $Shippings = $TargetShippings();
0 ignored issues
show
$Shippings 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...
124
125
        $ShippingRegisterPage = ShippingEditPage::at($I);
126
        $ShippingRegisterPage
127
            ->出荷先を追加()
128
            ->商品検索('チェリーアイスサンド')
129
            ->商品検索結果_選択(1);
130
131
        /* 正常系 */
132
        $ShippingRegisterPage
133
            // ->お届け先編集()
134
            ->入力_姓('aaa', 1)
135
            ->入力_名('bbb', 1)
136
            ->入力_セイ('アアア', 1)
137
            ->入力_メイ('アアア', 1)
138
            ->入力_郵便番号('060-0000', 1)
139
            ->入力_都道府県(['1' => '北海道'], 1)
140
            ->入力_市区町村名('bbb', 1)
141
            ->入力_番地_ビル名('bbb', 1)
142
            ->入力_電話番号('111-111-111', 1)
143
            ->入力_番地_ビル名('address 2', 1)
144
            ->出荷情報登録();
145
146
        $I->see('保存しました', ShippingEditPage::$登録完了メッセージ);
147
148
        $I->wait(10);
149
        // 出荷済みに変更
150
        $ShippingRegisterPage
151
            ->出荷完了にする()
152
            ->変更を確定()
153
            ->出荷日を確認();
154
155
        // 出荷済みに変更
156
        $ShippingRegisterPage
157
            ->出荷完了にする(1)
158
            ->変更を確定(1);
159
        // TODO ステータス変更スキップしました
160
    }
161
162
    public function shipping_出荷CSV登録(\AcceptanceTester $I)
163
    {
164
        $I->wantTo('EA0903-UC04-T01 出荷CSV登録');
165
166
        $entityManager = Fixtures::get('entityManager');
167
        /* @var Customer $Customer */
168
        $Customer = (Fixtures::get('createCustomer'))();
169
        /* @var Order[] $Orders */
170
        $Orders = (Fixtures::get('createOrders'))($Customer, 3);
171
        // 入金済みに更新しておく
172
        $Status = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::PAID);
173
        foreach ($Orders as $newOrder) {
174
            $newOrder->setOrderStatus($Status);
175
        }
176
        $entityManager->flush();
177
178
        /*
179
         * 出荷再検索 出荷日/伝票番号が登録されていないことを確認
180
         */
181
182
        $OrderManagePage = OrderManagePage::go($I)
183
            ->詳細検索設定()
184
            ->入力_ご注文者お名前($Customer->getName01().$Customer->getName02())
185
            ->入力_ご注文者お名前フリガナ($Customer->getKana01().$Customer->getKana02())
186
            ->検索();
187
188
        $I->see('検索結果:3件が該当しました', OrderManagePage::$検索結果_メッセージ);
189
190
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(1));
191
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(2));
192
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(3));
193
        $I->assertEquals('未出荷', $OrderManagePage->取得_出荷日(1));
194
        $I->assertEquals('未出荷', $OrderManagePage->取得_出荷日(2));
195
        $I->assertEquals('未出荷', $OrderManagePage->取得_出荷日(3));
196
197
        /*
198
         * 出荷CSV登録
199
         */
200
201
        $csv = implode(PHP_EOL, [
202
            '出荷ID,お問い合わせ番号,出荷日',
203
            $Orders[0]->getShippings()[0]->getId().',00001,2018-01-01',
204
            $Orders[1]->getShippings()[0]->getId().',00002,2018-02-02',
205
            $Orders[2]->getShippings()[0]->getId().',00003,2018-03-03',
206
        ]);
207
208
        $csvFileName = codecept_data_dir().'/shipping.csv';
209
        file_put_contents($csvFileName, $csv);
210
211
        try {
212
            ShippingCsvUploadPage::go($I)
213
                ->入力_CSVファイル('shipping.csv')
214
                ->CSVアップロード();
215
216
            $I->see('CSVファイルをアップロードしました', ShippingCsvUploadPage::$完了メッセージ);
217
218
            /*
219
             * 出荷再検索 出荷日/伝票番号が登録されたことを確認
220
             */
221
222
            $OrderManagePage = OrderManagePage::go($I)
223
            ->詳細検索設定()
224
            ->入力_ご注文者お名前($Customer->getName01().$Customer->getName02())
225
            ->入力_ご注文者お名前フリガナ($Customer->getKana01().$Customer->getKana02())
226
            ->検索();
227
228
            $I->see('検索結果:3件が該当しました', OrderManagePage::$検索結果_メッセージ);
229
230
            $I->assertEquals('00003', $OrderManagePage->取得_出荷伝票番号(1));
231
            $I->assertEquals('00002', $OrderManagePage->取得_出荷伝票番号(2));
232
            $I->assertEquals('00001', $OrderManagePage->取得_出荷伝票番号(3));
233
            $I->assertEquals('2018/03/03', $OrderManagePage->取得_出荷日(1));
234
            $I->assertEquals('2018/02/02', $OrderManagePage->取得_出荷日(2));
235
            $I->assertEquals('2018/01/01', $OrderManagePage->取得_出荷日(3));
236
            $I->assertEquals('発送済み', $OrderManagePage->取得_ステータス(1));
237
            $I->assertEquals('発送済み', $OrderManagePage->取得_ステータス(2));
238
            $I->assertEquals('発送済み', $OrderManagePage->取得_ステータス(3));
239
        } finally {
240
            if (file_exists($csvFileName)) {
241
                unlink($csvFileName);
242
            }
243
        }
244
    }
245
246
    public function shipping_出荷CSV登録失敗(\AcceptanceTester $I)
247
    {
248
        $I->wantTo('EA0903-UC04-T02 出荷CSV登録失敗');
249
250
        $entityManager = Fixtures::get('entityManager');
251
        /* @var Customer $Customer */
252
        $Customer = (Fixtures::get('createCustomer'))();
253
        /* @var Order[] $Orders */
254
        $Orders = (Fixtures::get('createOrders'))($Customer, 3);
255
        // キャンセルに更新しておく
256
        $Status = $entityManager->getRepository('Eccube\Entity\Master\OrderStatus')->find(OrderStatus::CANCEL);
257
        foreach ($Orders as $newOrder) {
258
            $newOrder->setOrderStatus($Status);
259
        }
260
        $entityManager->flush();
261
262
        /*
263
         * 出荷再検索 出荷日/伝票番号が登録されていないことを確認
264
         */
265
266
        $OrderManagePage = OrderManagePage::go($I)
267
            ->詳細検索設定()
268
            ->入力_ご注文者お名前($Customer->getName01().$Customer->getName02())
269
            ->入力_ご注文者お名前フリガナ($Customer->getKana01().$Customer->getKana02())
270
            ->検索();
271
272
        $I->see('検索結果:3件が該当しました', OrderManagePage::$検索結果_メッセージ);
273
274
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(1));
275
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(2));
276
        $I->assertEmpty($OrderManagePage->取得_出荷伝票番号(3));
277
        $I->assertEquals('未出荷', $OrderManagePage->取得_出荷日(1));
278
        $I->assertEquals('未出荷', $OrderManagePage->取得_出荷日(2));
279
        $I->assertEquals('未出荷', $OrderManagePage->取得_出荷日(3));
280
281
        /*
282
         * 出荷CSV登録
283
         */
284
285
        $csv = implode(PHP_EOL, [
286
            '出荷ID,出荷伝票番号,出荷日',
287
            $Orders[0]->getShippings()[0]->getId().',00001,2018-01-01',
288
            $Orders[1]->getShippings()[0]->getId().',00002,2018-02-02',
289
            $Orders[2]->getShippings()[0]->getId().',00003,2018-03-03',
290
        ]);
291
292
        $csvFileName = codecept_data_dir().'/shipping.csv';
293
        file_put_contents($csvFileName, $csv);
294
295
        try {
296
            ShippingCsvUploadPage::go($I)
297
                ->入力_CSVファイル('shipping.csv')
298
                ->CSVアップロード();
299
300
            $I->see(sprintf('%s: %s から %s にはステータス変更できません', $Orders[0]->getShippings()[0]->getId(), '注文取消し', '発送済み'),
301
                    '#upload-form > div:nth-child(4)');
302
            $I->see(sprintf('%s: %s から %s にはステータス変更できません', $Orders[1]->getShippings()[0]->getId(), '注文取消し', '発送済み'),
303
                    '#upload-form > div:nth-child(5)');
304
            $I->see(sprintf('%s: %s から %s にはステータス変更できません', $Orders[2]->getShippings()[0]->getId(), '注文取消し', '発送済み'),
305
                    '#upload-form > div:nth-child(6)');
306
        } finally {
307
            if (file_exists($csvFileName)) {
308
                unlink($csvFileName);
309
            }
310
        }
311
    }
312
313 View Code Duplication
    public function shipping_出荷CSV雛形ファイルダウンロード(\AcceptanceTester $I)
314
    {
315
        $I->wantTo('EA0093-UC04-T02 出荷CSV雛形ファイルのダウンロード');
316
317
        ShippingCsvUploadPage::go($I)->雛形ダウンロード();
318
        $csv = $I->getLastDownloadFile('/^shipping\.csv$/');
319
        $I->assertEquals(mb_convert_encoding(file_get_contents($csv), 'UTF-8', 'Shift_JIS'), '出荷ID,お問い合わせ番号,出荷日'.PHP_EOL);
320
    }
321
}
322