about summary refs log tree commit diff
path: root/spec/features
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features')
-rw-r--r--spec/features/log_in_spec.rb40
1 files 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')
+
+    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