Commit 2acf0153

mo khan <mo@mokhan.ca>
2015-02-02 04:15:26
add spec for invalid password.
1 parent cf11fac
Changed files (4)
app
config
locales
spec
features
support
app/controllers/sessions_controller.rb
@@ -9,7 +9,7 @@ class SessionsController < ApplicationController
       session[:raphael] = @session.access(request)
       redirect_to my_dashboard_path
     else
-      flash[:error] = "Ooops... invalid email or password."
+      flash[:error] = t("sessions.create.failure.invalid")
       redirect_to login_path
     end
   end
config/locales/en.yml
@@ -33,3 +33,7 @@ en:
       my_nav:
         admin: 'Admin'
         logout: 'Log Out'
+  sessions:
+    create:
+      failure:
+        invalid: 'Invalid email or password.'
spec/features/sessions_spec.rb
@@ -1,8 +1,9 @@
-require 'rails_helper'
+require "rails_helper"
 
 describe "Logins" do
   describe "GET /login" do
     subject { LoginPage.new }
+    let(:error_message) { I18n.t("sessions.create.failure.invalid") }
 
     before :each do
       subject.visit_page
@@ -11,26 +12,38 @@ describe "Logins" do
     context "when an email is registered" do
       let!(:user) { create(:user, password: "password") }
 
-      before :each do
-        subject.login_with(email: user.email, password: "password")
-      end
+      context "when the password is correct" do
+        before :each do
+          subject.login_with(email: user.email, password: "password")
+        end
 
-      it "logs the user in" do
-        expect(page).to have_content("Log Out")
+        it "logs the user in" do
+          expect(page).to have_content("Log Out")
+        end
+
+        it "has no errors" do
+          expect(page).to_not have_content(error_message)
+        end
       end
 
-      it "has no errors" do
-        expect(page).to_not have_content(I18n.t('devise.failure.invalid'))
+      context "when the password is incorrect" do
+        before :each do
+          subject.login_with(email: user.email, password: "wrong")
+        end
+
+        it "displays an error" do
+          expect(page).to have_content(error_message)
+        end
       end
     end
 
     context "when an email is not known" do
       before :each do
-        subject.login_with(email: 'test@example.com', password: 'password')
+        subject.login_with(email: "test@example.com", password: "password")
       end
 
       it "displays an error message" do
-        expect(page).to have_content("invalid email or password.")
+        expect(page).to have_content(error_message)
       end
     end
   end
spec/support/pages/login_page.rb
@@ -1,14 +1,14 @@
-require_relative '../web_page.rb'
+require_relative "../web_page.rb"
 
 class LoginPage < WebPage
   def initialize
     super(new_session_path)
   end
 
-  def login_with(email:, password: 'password')
-    within('.form-inline') do
-      fill_in('session_username', with: email)
-      fill_in('session_password', with: password)
+  def login_with(email:, password: "password")
+    within(".form-inline") do
+      fill_in("session_username", with: email)
+      fill_in("session_password", with: password)
     end
     click_button("Sign In")
   end