/
EF01TopCest.php
185 lines (147 loc) · 6.63 KB
/
EF01TopCest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?php
/*
* This file is part of EC-CUBE
*
* Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
*
* http://www.ec-cube.co.jp/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Codeception\Util\Fixtures;
use Page\Front\TopPage;
/**
* @group front
* @group toppage
* @group ef1
*/
class EF01TopCest
{
public function _before(AcceptanceTester $I)
{
}
public function _after(AcceptanceTester $I)
{
}
private function clearDoctrineCache()
{
// APP_ENV=prod/codeceptionで実行した際は, 直接データを投入しても反映されないため,
// キャッシュを削除して表示できるようにする
$fs = new Symfony\Component\Filesystem\Filesystem();
foreach (['prod', 'codeception'] as $env) {
$cacheDir = __DIR__."/../../var/cache/${env}/pools";
if ($fs->exists($cacheDir)) {
$fs->remove($cacheDir);
}
}
}
/**
* @group vaddy
*/
public function topページ_初期表示(AcceptanceTester $I)
{
$I->wantTo('EF0101-UC01-T01 TOPページ 初期表示');
TopPage::go($I);
// カテゴリ選択ボックス(キーワード検索用)、キーワード検索入力欄、虫眼鏡ボタンが表示されている
$I->see('全ての商品', TopPage::$検索_カテゴリ選択);
$I->see('', TopPage::$検索_カテゴリ選択);
// カテゴリ名(カテゴリ検索用)が表示されている
$categories = Fixtures::get('categories');
foreach ($categories as $category) {
$I->see($category->getName(), '.searchform .category_id option');
}
//管理側のコンテンツ管理(新着情報管理)に設定されている情報が、順位順に表示されている
$today = new DateTime();
$minus1 = $today->sub(new DateInterval('P1D'));
$minus2 = $today->sub(new DateInterval('P2D'));
$createNews = Fixtures::get('createNews');
$News1 = $createNews($minus1, 'タイトル1', 'コメント1');
$News2 = $createNews($minus2, 'タイトル2', 'コメント2');
$this->clearDoctrineCache();
$I->reloadPage();
$findNews = Fixtures::get('findNews');
$newsAll = $findNews();
foreach ($newsAll as $index => $news) {
$rowNum = $index + 1;
$I->see($news['title'], 'div.ec-newsRole__news > div:nth-child('.$rowNum.') > div.ec-newsRole__newsHeading > div.ec-newsRole__newsColumn > div.ec-newsRole__newsTitle');
// 5件を超えるとread moreが表示される.
if ($rowNum > 5) {
break;
}
}
$em = Fixtures::get('entityManager');
$em->remove($News1);
$em->remove($News2);
$em->flush([$News1, $News2]);
}
public function topページ_新着情報(AcceptanceTester $I)
{
$I->wantTo('EF0101-UC01-T02 TOPページ 新着情報');
$createNews = Fixtures::get('createNews');
$News = $createNews(new \DateTime(), 'タイトル1', 'コメント1', 'https://www.example.com');
$this->clearDoctrineCache();
$topPage = TopPage::go($I);
// 各新着情報の箇所を押下する
// Knowhow: javascriptでclick eventハンドリングしている場合はclick('表示文字列')では探せない
$topPage->新着情報選択(1);
$I->wait(1);
// 押下された新着情報のセクションが広がり、詳細情報、リンクが表示される
$I->assertStringContainsString('コメント1', $topPage->新着情報詳細(1));
// 「詳しくはこちら」リンクを押下する
$topPage->新着情報リンククリック(1);
$I->amOnUrl($News->getUrl());
$em = Fixtures::get('entityManager');
$em->remove($News);
$em->flush($News);
}
public function topページ_カテゴリ検索(AcceptanceTester $I)
{
$I->wantTo('EF0101-UC02-T01 TOPページ カテゴリ検索');
$topPage = TopPage::go($I);
// カテゴリを選択、そのまま続けて子カテゴリを選択する
$topPage->カテゴリ選択(['アイスサンド', 'フルーツ']);
// 商品一覧の上部に、選択されたカテゴリとその親カテゴリのリンクが表示される
$I->see('フルーツ', '.ec-topicpath');
$I->see('チェリーアイスサンド', '.ec-shelfGrid');
}
public function topページ_全件検索(AcceptanceTester $I)
{
$I->wantTo('EF0101-UC03-T01 TOPページ 全件検索');
$topPage = TopPage::go($I);
$topPage->検索();
// 商品一覧の上部に、選択されたカテゴリとその親カテゴリのリンクが表示される
$I->see('全て', '.ec-topicpath');
// カテゴリに分類されている商品のみ表示される
$products = $I->grabMultiple('ul.ec-shelfGrid li.ec-shelfGrid__item');
$I->assertTrue((count($products) >= 2));
}
public function topページ_カテゴリ絞込検索(AcceptanceTester $I)
{
$I->wantTo('EF0101-UC03-T02 TOPページ カテゴリ絞込検索');
$topPage = TopPage::go($I);
// カテゴリを選択する
$I->selectOption(['class' => 'category_id'], 'フルーツ');
// 虫眼鏡ボタンを押下する
$topPage->検索();
// 商品一覧の上部に、選択されたカテゴリとその親カテゴリのリンクが表示される
$I->see('フルーツ', '.ec-topicpath');
// カテゴリに分類されている商品のみ表示される
$I->see('チェリーアイスサンド', '.ec-shelfGrid');
$I->dontSee('彩のジェラートCUBE', '.ec-shelfGrid');
}
public function topページ_キーワード絞込検索(AcceptanceTester $I)
{
$I->wantTo('EF0101-UC03-T02 TOPページ キーワード絞込検索');
$topPage = TopPage::go($I);
// キーワードを入力する
$I->fillField(['class' => 'search-name'], 'ジェラート');
// 虫眼鏡ボタンを押下する
$topPage->検索();
// 商品一覧の上部に、選択されたカテゴリとその親カテゴリのリンクが表示される
$I->see('ジェラート', '.ec-topicpath');
// カテゴリに分類されている商品のみ表示される
$I->dontSee('チェリーアイスサンド', '.ec-topicpath');
$I->see('彩のジェラートCUBE', '.ec-shelfGrid');
}
}