public function testUserRegistrationAndActivation(WebGuy $I, $scenario)
 {
     $I->wantTo('Check registration and activation new user account...');
     $I->amOnPage(\RegistrationPage::URL);
     $I->see(\RegistrationPage::$buttonLabel);
     $I->seeInTitle('Регистрация');
     $I->wantTo('See form with empty fields...');
     $I->seeInField(\RegistrationPage::$nickNameField, '');
     $I->seeInField(\RegistrationPage::$emailField, '');
     $I->seeInField(\RegistrationPage::$passwordField, '');
     $I->seeInField(\RegistrationPage::$cpasswordField, '');
     $I->see(\RegistrationPage::$buttonLabel);
     $I->wantTo('Test form validation...');
     $testNickName = 'testuser';
     $testEMail = '*****@*****.**';
     $testPassword = '******';
     $I->fillField(\RegistrationPage::$nickNameField, 'test-nick.name');
     $I->fillField(\RegistrationPage::$emailField, 'test');
     $I->fillField(\RegistrationPage::$passwordField, $testPassword);
     $I->fillField(\RegistrationPage::$cpasswordField, '111');
     $I->click(\RegistrationPage::$buttonLabel, '.btn-primary');
     $I->see('Email не является правильным E-Mail адресом', \CommonPage::ERROR_CSS_CLASS);
     $I->see('Пароли не совпадают', \CommonPage::ERROR_CSS_CLASS);
     $I->see('Неверный формат поля "Имя пользователя" допустимы только буквы и цифры, от 2 до 20 символов', \CommonPage::ERROR_CSS_CLASS);
     $I->wantTo('Test form with existing user name and email...');
     $I->fillField(\RegistrationPage::$nickNameField, 'yupe');
     $I->fillField(\RegistrationPage::$emailField, '*****@*****.**');
     $I->fillField(\RegistrationPage::$passwordField, $testPassword);
     $I->fillField(\RegistrationPage::$cpasswordField, $testPassword);
     $I->click(\RegistrationPage::$buttonLabel, '.btn-primary');
     $I->see('Имя пользователя уже занято', \CommonPage::ERROR_CSS_CLASS);
     $I->see('Email уже занят', \CommonPage::ERROR_CSS_CLASS);
     $I->wantTo('Test success registration...');
     $I->fillField(\RegistrationPage::$nickNameField, $testNickName);
     $I->fillField(\RegistrationPage::$emailField, $testEMail);
     $I->click(\RegistrationPage::$buttonLabel, '.btn-primary');
     $I->see('Учетная запись создана! Проверьте Вашу почту!', \CommonPage::SUCCESS_CSS_CLASS);
     $I->seeInCurrentUrl('login');
     // check that user is created
     $I->seeInDatabase('yupe_user_user', ['email' => $testEMail, 'access_level' => 0, 'status' => 2, 'email_confirm' => 0, 'nick_name' => $testNickName]);
     //check that token is created
     $I->seeInDatabase('yupe_user_tokens', ['user_id' => 2, 'type' => 1, 'status' => 0]);
     $I->wantTo('Test that new user cant login without account activation...');
     $I->fillField(\LoginPage::$emailField, $testEMail);
     $I->fillField(\LoginPage::$passwordField, $testPassword);
     $I->click(\CommonPage::LOGIN_LABEL, \CommonPage::BTN_PRIMARY_CSS_CLASS);
     $I->see('Email или пароль введены неверно!', \CommonPage::ERROR_CSS_CLASS);
     $I->wantTo('Test account activation...');
     $key = $I->grabFromDatabase('yupe_user_tokens', 'token', ['user_id' => 2, 'type' => 1, 'status' => 0]);
     $I->amOnPage(\RegistrationPage::getActivateRoute(time()));
     $I->see('Внимание! Возникла проблема с активацией аккаунта. Обратитесь к администрации сайта.', \CommonPage::ERROR_CSS_CLASS);
     $I->seeInCurrentUrl('registration');
     $I->amOnPage(\RegistrationPage::getActivateRoute($key));
     $I->see('Вы успешно активировали аккаунт! Теперь Вы можете войти!', \CommonPage::SUCCESS_CSS_CLASS);
     // check user
     $I->seeInDatabase('yupe_user_user', ['email' => $testEMail, 'access_level' => 0, 'status' => 1, 'email_confirm' => 1, 'nick_name' => $testNickName]);
     //check  token
     $I->dontSeeInDatabase('yupe_user_tokens', ['user_id' => 2, 'type' => 1, 'status' => 0]);
     $I->wantTo('Test login with new account...');
     $I = new WebGuy\UserSteps($scenario);
     $I->login($testEMail, $testPassword);
     $I->dontSeeLink('Панель управления');
 }