Failed Conditions
Pull Request — experimental/sf (#3236)
by Kentaro
49:41 queued 37:58
created

EA09ShippingCest   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 264
Duplicated Lines 24.24 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
dl 64
loc 264
rs 10
c 0
b 0
f 0
wmc 10
lcom 1
cbo 6

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
use Codeception\Util\Fixtures;
4
use Page\Admin\CsvSettingsPage;
5
use Page\Admin\ShippingManagePage;
6
use Page\Admin\ShippingEditPage;
7
use Page\Admin\OrderEditPage;
8
use Eccube\Entity\Master\ShippingStatus;
9
10
/**
11
 * @group admin
12
 * @group admin01
13
 * @group shipping
14
 * @group ea9
15
 */
16
class EA09ShippingCest
17
{
18
    public function _before(\AcceptanceTester $I)
19
    {
20
        // すべてのテストケース実施前にログインしておく
21
        // ログイン後は管理アプリのトップページに遷移している
22
        $I->loginAsAdmin();
23
    }
24
25
    public function _after(\AcceptanceTester $I)
26
    {
27
    }
28
29
    public function shipping出荷検索(\AcceptanceTester $I)
30
    {
31
        $I->wantTo('EA0901-UC01-T01(& UC01-T02, UC01-T3) 出荷検索');
32
33
        $TargetShippings = Fixtures::get('findShippings'); // Closure
34
        $Shippings = $TargetShippings();
35
        ShippingManagePage::go($I);
36
        $I->see('検索結果 : '.count($Shippings).' 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
37
38
        ShippingManagePage::go($I)->検索('[email protected]');
39
        $I->see('検索結果 : 0 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
40
41
        ShippingManagePage::go($I)->詳細検索_電話番号('あああ');
42
        $I->see('検索条件に誤りがあります', ShippingManagePage::$検索結果_エラーメッセージ);
43
    }
44
45
    /**
46
     * @env firefox
47
     * @env chrome
48
     */
49
    public function shipping出荷CSVダウンロード(\AcceptanceTester $I)
50
    {
51
        $I->wantTo('EA0901-UC02-T01 出荷CSVダウンロード');
52
53
        $TargetShippings = Fixtures::get('findShippings'); // Closure
54
        $Shippings = $TargetShippings();
55
        $ShippingListPage = ShippingManagePage::go($I);
56
        $I->see('検索結果 : '.count($Shippings).' 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
57
58
        $ShippingListPage->出荷CSVダウンロード実行();
59
        // make sure wait to download file completely
60
        $I->wait(10);
61
        $ShippingCSV = $I->getLastDownloadFile('/^shipping_\d{14}\.csv$/');
62
        $I->assertGreaterOrEquals(count($Shippings), count(file($ShippingCSV)), '検索結果以上の行数があるはず');
63
    }
64
65
    public function shipping出荷情報のCSV出力項目変更設定(\AcceptanceTester $I)
66
    {
67
        $I->wantTo('EA0901-UC02-T02 出荷情報のCSV出力項目変更設定');
68
69
        $TargetShippings = Fixtures::get('findShippings'); // Closure
70
        $Shippings = $TargetShippings();
71
        $ShippingListPage = ShippingManagePage::go($I);
72
        $I->see('検索結果 : '.count($Shippings).' 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
73
74
        /* 項目設定 */
75
        $ShippingListPage->出荷CSV出力項目設定();
76
77
        CsvSettingsPage::at($I);
78
        $value = $I->grabValueFrom(CsvSettingsPage::$CSVタイプ);
79
        $I->assertEquals(4, $value);
80
    }
81
82
    public function shipping出荷編集(\AcceptanceTester $I)
83
    {
84
        $I->wantTo('EA0901-UC03-T01(& UC03-T02) 出荷編集');
85
86
        $I->resetEmails();
87
88
        $TargetShippings = Fixtures::get('findShippings'); // Closure
89
        $Shippings = $TargetShippings();
90
        $ShippingListPage = ShippingManagePage::go($I);
91
        $I->see('検索結果 : '.count($Shippings).' 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
92
93
        /* 編集 */
94
        $ShippingListPage->一覧_編集(1);
95
96
        $ShippingRegisterPage = ShippingEditPage::at($I)
97
            ->お届け先編集()
98
            ->入力_姓('')
99
            ->出荷情報登録();
100
101
        /* 異常系 */
102
        // FIXME お届け先編集が閉じてしまうため、エラーメッセージが表示されない
103
        // $I->see('入力されていません。', ShippingEditPage::$姓_エラーメッセージ);
104
105
        /* 正常系 */
106
        $ShippingRegisterPage
107
            ->お届け先編集()
108
            ->入力_姓('aaa')
109
            ->入力_セイ('アアア')
110
            ->入力_メイ('アアア')
111
            ->入力_郵便番号1('060')
112
            ->入力_郵便番号2('0000')
113
            ->入力_都道府県(['1' => '北海道'])
114
            ->入力_市区町村名('bbb')
115
            ->入力_番地_ビル名('bbb')
116
            ->入力_電話番号1('111')
117
            ->入力_電話番号2('111')
118
            ->入力_電話番号3('111')
119
            ->入力_番地_ビル名('address 2')
120
            ->出荷情報登録();
121
122
        $I->see('出荷情報を登録しました。', ShippingEditPage::$登録完了メッセージ);
123
124
        /* ステータス変更 */
125
        $ShippingRegisterPage
126
            ->入力_出荷ステータス(['2' => '出荷済み'])
127
            ->出荷情報登録()
128
            ->変更を確定();
129
        $I->wait(1);
130
        $I->see('出荷情報を登録しました。', ShippingEditPage::$登録完了メッセージ);
131
132
        $I->wait(3);
133
        $I->seeEmailCount(2);
134
    }
135
136
    public function shipping出荷削除(\AcceptanceTester $I)
137
    {
138
        $I->wantTo('EA0901-UC04-T01(& UC04-T02) 出荷削除');
139
140
        $TargetShippings = Fixtures::get('findShippings'); // Closure
141
        $Shippings = $TargetShippings();
142
        $ShippingListPage = ShippingManagePage::go($I);
143
        $I->see('検索結果 : '.count($Shippings).' 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
144
145
        // 削除
146
        $ShippingListPage->一覧_チェックボックス(1);
147
        $ShippingListPage->一覧_削除();
148
149
        $I->waitForElementVisible(['xpath' => '//*[@id="page_admin_shipping"]/div[1]/div[3]/div[2]/span']);
150
        $I->see('出荷情報を削除しました。', ['xpath' => '//*[@id="page_admin_shipping"]/div[1]/div[3]/div[2]/span']);
151
152
        // 削除キャンセル
153
        $ShippingListPage->一覧_チェックボックス(1);
154
        $ShippingListPage->一覧_削除キャンセル();
155
    }
156
157
    public function shipping一括発送済み更新(\AcceptanceTester $I)
158
    {
159
        $I->wantTo('EA0902-UC01-T01 一括発送済み更新');
160
161
        // 一括操作用の受注を生成しておく
162
        $createCustomer = Fixtures::get('createCustomer');
163
        $createOrders = Fixtures::get('createOrders');
164
        $createOrders($createCustomer(), 10, array());
165
166
        $I->resetEmails();
167
168
        $config = Fixtures::get('config');
169
        // ステータスを出荷準備中にリセット
170
        $resetShippingStatusPrepared = Fixtures::get('resetShippingStatusPrepared'); // Closure
171
        $resetShippingStatusPrepared();
172
173
        $TargetShippings = Fixtures::get('findShippings'); // Closure
174
        $Shippings = $TargetShippings();
175
        $ShippingListPage = ShippingManagePage::go($I);
176
        $I->see('検索結果 : '.count($Shippings).' 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
177
178
        $ShippingListPage
179
            ->一覧_全選択()
180
            ->一括発送済み更新();
181
182
        $I->wait(5);
183
        $I->waitForElementVisible(['xpath' => '//*[@id="sentUpdateModal"]/div/div/div[2]/p']);
184
        $I->see('処理完了。10件のメールを送信しました', ['xpath' => '//*[@id="sentUpdateModal"]/div/div/div[2]/p']);
185
        $I->seeEmailCount(20);
186
187
        $I->click(['id' => 'bulkChangeComplete']);
188
    }
189
190
    public function shipping一括発送済みメール送信(\AcceptanceTester $I)
191
    {
192
        $I->wantTo('EA0902-UC02-T01 一括発送済みメール送信');
193
194
        // 一括操作用の受注を生成しておく
195
        $createCustomer = Fixtures::get('createCustomer');
196
        $createOrders = Fixtures::get('createOrders');
197
        $createOrders($createCustomer(), 10, array());
198
199
        $I->resetEmails();
200
201
        $config = Fixtures::get('config');
202
        // ステータスを出荷済みにリセット
203
        $resetShippingStatusShipped = Fixtures::get('resetShippingStatusShipped'); // Closure
204
        $resetShippingStatusShipped();
205
206
        $TargetShippings = Fixtures::get('findShippings'); // Closure
207
        $Shippings = $TargetShippings();
208
        $ShippingListPage = ShippingManagePage::go($I);
209
        $I->see('検索結果 : '.count($Shippings).' 件が該当しました', ShippingManagePage::$検索結果_メッセージ);
210
211
        $ShippingListPage
212
            ->一覧_全選択()
213
            ->一括発送済みメール送信();
214
215
        $I->wait(5);
216
        $I->waitForElementVisible(['xpath' => '//*[@id="sentUpdateModal"]/div/div/div[2]/p']);
217
        $I->see('処理完了。10件のメールを送信しました', ['xpath' => '//*[@id="sentUpdateModal"]/div/div/div[2]/p']);
218
        $I->seeEmailCount(20);
219
220
        $I->click(['id' => 'bulkChangeComplete']);
221
    }
222
223
    public function shipping出荷登録(\AcceptanceTester $I)
224
    {
225
        $I->wantTo('EA0903-UC01-T01(& UC01-T02) 出荷登録');
226
227
        $OrderRegisterPage = OrderEditPage::go($I)->受注情報登録();
228
229
        /* 正常系 */
230
        $OrderRegisterPage
231
            ->入力_受注ステータス(['1' => '新規受付'])
232
            ->入力_姓('order1')
233
            ->入力_名('order1')
234
            ->入力_セイ('アアア')
235
            ->入力_メイ('アアア')
236
            ->入力_郵便番号1('060')
237
            ->入力_郵便番号2('0000')
238
            ->入力_都道府県(['1' => '北海道'])
239
            ->入力_市区町村名('bbb')
240
            ->入力_番地_ビル名('bbb')
241
            ->入力_Eメール('[email protected]')
242
            ->入力_電話番号1('111')
243
            ->入力_電話番号2('111')
244
            ->入力_電話番号3('111')
245
            ->商品検索('パーコレーター')
246
            ->商品検索結果_選択(1)
247
            ->入力_支払方法(['4'=> '郵便振替'])
248
            ->受注情報登録();
249
250
        $ShippingRegisterPage = ShippingEditPage::go($I)->出荷情報登録();
251
252
        /* 異常系 */
253
        $I->dontSee('出荷情報を保存しました。', ShippingEditPage::$登録完了メッセージ);
254
255
256
        /* 正常系 */
257
        $ShippingRegisterPage
258
            ->入力_姓('shipping1')
259
            ->入力_名('shipping1')
260
            ->入力_セイ('アアア')
261
            ->入力_メイ('アアア')
262
            ->入力_郵便番号1('060')
263
            ->入力_郵便番号2('0000')
264
            ->入力_都道府県(['1' => '北海道'])
265
            ->入力_市区町村名('bbb')
266
            ->入力_番地_ビル名('bbb')
267
            ->入力_電話番号1('111')
268
            ->入力_電話番号2('111')
269
            ->入力_電話番号3('111')
270
            ->入力_出荷伝票番号('1111-1111-1111')
271
            ->入力_配送業者([1 => 'サンプル業者'])
272
            ->入力_配達用メモ('メモ')
273
            ->商品検索()
274
            ->商品検索結果_選択(1)
275
            ->出荷情報登録();
276
277
        $I->see('出荷情報を登録しました。', ShippingEditPage::$登録完了メッセージ);
278
    }
279
}
280