Completed
Push — 4.0 ( 87d096...bcc1be )
by Kiyotaka
05:44 queued 11s
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();
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);
0 ignored issues
show
The call to ShippingEditPage::変更を確定() has too many arguments starting with 1.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
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