Commit e5bd6275

mo khan <mo@mokhan.ca>
2015-02-02 04:28:46
add spec to logout user.
1 parent 2acf015
Changed files (2)
spec
spec/features/sessions_spec.rb
@@ -1,50 +1,60 @@
 require "rails_helper"
 
 describe "Logins" do
-  describe "GET /login" do
-    subject { LoginPage.new }
-    let(:error_message) { I18n.t("sessions.create.failure.invalid") }
+  subject { LoginPage.new }
+  let(:error_message) { I18n.t("sessions.create.failure.invalid") }
 
-    before :each do
-      subject.visit_page
-    end
-
-    context "when an email is registered" do
-      let!(:user) { create(:user, password: "password") }
-
-      context "when the password is correct" do
-        before :each do
-          subject.login_with(email: user.email, password: "password")
-        end
+  before :each do
+    subject.visit_page
+  end
 
-        it "logs the user in" do
-          expect(page).to have_content("Log Out")
-        end
+  context "when an email is registered" do
+    let!(:user) { create(:user, password: "password") }
 
-        it "has no errors" do
-          expect(page).to_not have_content(error_message)
-        end
+    context "when the password is correct" do
+      before :each do
+        subject.login_with(email: user.email, password: "password")
       end
 
-      context "when the password is incorrect" do
-        before :each do
-          subject.login_with(email: user.email, password: "wrong")
-        end
+      it "logs the user in" do
+        expect(page).to have_content("Log Out")
+      end
 
-        it "displays an error" do
-          expect(page).to have_content(error_message)
-        end
+      it "has no errors" do
+        expect(page).to_not have_content(error_message)
       end
     end
 
-    context "when an email is not known" do
+    context "when the password is incorrect" do
       before :each do
-        subject.login_with(email: "test@example.com", password: "password")
+        subject.login_with(email: user.email, password: "wrong")
       end
 
-      it "displays an error message" do
+      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")
+    end
+
+    it "displays an error message" do
+      expect(page).to have_content(error_message)
+    end
+  end
+
+  context "when clicking on the log out button" do
+    let(:dashboard_page) { DashboardPage.new }
+    let(:user) { create(:user, password: "password") }
+
+    it "redirects you to the home page" do
+      subject.visit_page
+      subject.login_with(email: user.email, password: 'password')
+      dashboard_page.logout
+      expect(current_path).to eql(root_path)
+    end
+  end
 end
spec/support/pages/dashboard_page.rb
@@ -0,0 +1,9 @@
+class DashboardPage < WebPage
+  def initialize
+    super(my_dashboard_path)
+  end
+
+  def logout
+    click_link("Sign Out")
+  end
+end