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') + + 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 - expect(page).to have_css "div.app-holder" + 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