From 509b0cfafc0857538d63f4b93b26462f035d458b Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Fri, 2 Jun 2017 00:25:59 +0900 Subject: [PATCH] Add scenarios for log in (#3497) --- spec/features/log_in_spec.rb | 40 ++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/spec/features/log_in_spec.rb b/spec/features/log_in_spec.rb index 6dc3cd2f4..ed626d880 100644 --- a/spec/features/log_in_spec.rb +++ b/spec/features/log_in_spec.rb @@ -1,19 +1,47 @@ require "rails_helper" feature "Log in" do - given(:email) { "test@examle.com" } - given(:password) { "password" } + given(:email) { "test@examle.com" } + given(:password) { "password" } + given(:confirmed_at) { Time.now } background do - Fabricate(:user, email: email, password: password) + Fabricate(:user, email: email, password: password, confirmed_at: confirmed_at) + visit new_user_session_path end + subject { page } + scenario "A valid email and password user is able to log in" do - visit new_user_session_path fill_in "user_email", with: email fill_in "user_password", with: password - click_on "Log in" + click_on I18n.t('auth.login') - expect(page).to have_css "div.app-holder" + is_expected.to have_css("div.app-holder") + end + + scenario "A invalid email and password user is not able to log in" do + fill_in "user_email", with: "invalid_email" + fill_in "user_password", with: "invalid_password" + click_on I18n.t('auth.login') + + is_expected.to have_css(".flash-message", text: failure_message("invalid")) + end + + context do + given(:confirmed_at) { nil } + + scenario "A unconfirmed user is not able to log in" do + fill_in "user_email", with: email + fill_in "user_password", with: password + click_on I18n.t('auth.login') + + is_expected.to have_css(".flash-message", text: failure_message("unconfirmed")) + end + end + + def failure_message(message) + keys = User.authentication_keys.map { |key| User.human_attribute_name(key) } + I18n.t("devise.failure.#{message}", authentication_keys: keys.join("support.array.words_connector")) end end