対象
EC-CUBE enterprise版 -> (front) 新規会員登録の入力から登録完了まで
URL:/Entry
関数名:customer_会員登録正常
ファイル場所:codeception/acceptance/EF04CustomerCest.php
コード
public function customer_会員登録正常(AcceptanceTester $I)
{
$I->wantTo('EF0401-UC01-T01 会員登録 正常パターン');
$I->getScenario()->incomplete('element click intercepted: Element is not clickable at point (952, 1599) が発生するため、一旦未実装とします');
$I->amOnPage('/entry');
// 疑問:Fixturesとはテストを実行するための基礎情報を作成するためのクラス
$faker = Fixtures::get('faker');
$BaseInfo = Fixtures::get('baseinfo');
$new_email = microtime(true).'.'.$faker->safeEmail;
// 会員情報入力フォームに、会員情報を入力する
//「同意する」ボタンを押下する
$form = [
'entry[name][name01]' => '姓',
'entry[name][name02]' => '名',
'entry[kana][kana01]' => 'セイ',
'entry[kana][kana02]' => 'メイ',
'entry[postal_code]' => '530-0001',
'entry[address][pref]' => ['value' => '27'],
'entry[address][addr01]' => '大阪市北区',
'entry[address][addr02]' => '梅田2-4-9 ブリーゼタワー13F',
'entry[phone_number]' => '111-111-111',
'entry[email][first]' => $new_email,
'entry[email][second]' => $new_email,
'entry[plain_password][first]' => 'password1234',
'entry[plain_password][second]' => 'password1234',
'entry[job]' => ['value' => '1'],
'entry[user_policy_check]' => '1',
];
$findPluginByCode = Fixtures::get('findPluginByCode');
$Plugin = $findPluginByCode('MailMagazine42');
if ($Plugin) {
$I->amGoingTo('メルマガプラグインを発見したため、メルマガを購読します');
$form['entry[mailmaga_flg]'] = '1';
}
// 疑問:controllerにFormを投げている?
$I->submitForm(['css' => '.ec-layoutRole__main form'], $form, ['css' => 'button.ec-blockBtn--action']);
// 疑問:確認画面?
// 入力した会員情報を確認する。
$I->see('姓 名', '.ec-registerRole form .ec-borderedDefs dl:nth-child(1) dd');
$I->see('111111111', '.ec-registerRole form .ec-borderedDefs dl:nth-child(5) dd');
$I->see($new_email, '.ec-registerRole form .ec-borderedDefs dl:nth-child(6) dd');
// 疑問:なぜリセットしてる?
$I->resetEmails();
// 「会員登録をする」ボタンを押下する
$I->click('.ec-registerRole form button.ec-blockBtn--action');
// 顧客に届くメール内容の確認
$message = $I->lastMessage();
$I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ');
$I->seeEmailCount(1);
// 疑問:firstメールアドレスに送信されたメール内容に、指定した文字が表示されているか確認している?
foreach ([$new_email, $BaseInfo->getEmail01()] as $email) {
$I->seeInLastEmailSubjectTo($email, '会員登録のご確認');
$I->seeInLastEmailTo($email, '姓 名 様');
$I->seeInLastEmailTo($email, 'この度は会員登録依頼をいただきまして、有り難うございます。');
}
// 「トップページへ」ボタンを押下する
$I->click('a.ec-blockBtn--cancel');
$I->see('新着情報', '.ec-secHeading__ja');
// アクティベートURL取得
$activateUrl = $I->grabFromLastEmailTo($new_email, '@/entry/activate/(.*)@');
$I->resetEmails();
// アクティベートURLからトップページへ
$I->amOnPage($activateUrl);
$I->see('新規会員登録(完了)', 'div.ec-pageHeader h1');
// 疑問:↓は何の関数?処理最後に送るメールの事?
$message = $I->lastMessage();
// メールを受取り者が2人いるか確認
$I->assertCount(2, $message->getRecipients(), 'Bcc で管理者にも送信するので宛先アドレスは2つ');
// 顧客に送ったメールが1つか確認
$I->seeEmailCount(1);
foreach ([$new_email, $BaseInfo->getEmail01()] as $email) {
$I->seeInLastEmailSubjectTo($email, '会員登録が完了しました。');
$I->seeInLastEmailTo($email, '姓 名 様');
$I->seeInLastEmailTo($email, '本会員登録が完了いたしました。');
}
$I->click('div.ec-registerCompleteRole a.ec-blockBtn--cancel');
$I->see('新着情報', '.ec-secHeading__ja');
}
1.テスト準備
$I->wantTo('EF0401-UC01-T01 会員登録 正常パターン');
$I->getScenario()->incomplete('element click intercepted: Element is not clickable at point (952, 1599) が発生するため、一旦未実装とします');
$I->amOnPage('/entry');
// 疑問:Fixturesとはテストを実行するための基礎情報を作成するためのクラス
$faker = Fixtures::get('faker');
$BaseInfo = Fixtures::get('baseinfo');
$new_email = microtime(true).'.'.$faker->safeEmail;
- テスト準備
- 会員情報入力フォームの作成・送信
- 確認画面で入力情報の確認・登録実行
- 仮登録メールの送信確認
- 本会員完了画面の表示確認
- 本会員メールの送信確認
となっている事がわかった。