diff options
| -rw-r--r-- | spec/features/sessions_spec.rb | 70 | ||||
| -rw-r--r-- | spec/support/pages/dashboard_page.rb | 9 |
2 files changed, 49 insertions, 30 deletions
diff --git a/spec/features/sessions_spec.rb b/spec/features/sessions_spec.rb index 3bcf9102..b87619ac 100644 --- a/spec/features/sessions_spec.rb +++ b/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 diff --git a/spec/support/pages/dashboard_page.rb b/spec/support/pages/dashboard_page.rb new file mode 100644 index 00000000..bd7e9dbe --- /dev/null +++ b/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 |
