From b71adbd5c62d56fc1fb204344423c6ee5e6bf15e Mon Sep 17 00:00:00 2001 From: Josh Meek Date: Mon, 13 Jun 2016 13:09:23 -0400 Subject: [PATCH 1/2] finish login feature --- Gemfile.lock | 14 ++++++++++++++ features/login.feature | 6 +++++- features/step_definitions/login_steps.rb | 16 ++++++++-------- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index da8b141..7bbfbc8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -40,10 +40,19 @@ GEM rack rack-test (0.6.2) rack (>= 1.0) + rspec (3.1.0) + rspec-core (~> 3.1.0) + rspec-expectations (~> 3.1.0) + rspec-mocks (~> 3.1.0) + rspec-core (3.1.7) + rspec-support (~> 3.1.0) rspec-expectations (3.1.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.1.0) + rspec-mocks (3.1.3) + rspec-support (~> 3.1.0) rspec-support (3.1.2) + sass (3.4.22) sinatra (1.4.5) rack (~> 1.4) rack-protection (~> 1.4) @@ -66,5 +75,10 @@ DEPENDENCIES cucumber-sinatra haml pry + rspec rspec-expectations + sass sinatra + +BUNDLED WITH + 1.12.5 diff --git a/features/login.feature b/features/login.feature index 3fff7cf..2049b2f 100644 --- a/features/login.feature +++ b/features/login.feature @@ -7,4 +7,8 @@ Feature: Login Page Given the login page When I log in with proper credentials Then I should see the secret page - + + Scenario: Bad Credentals + Given the login page + When I log in with incorrect credentials + Then I should see the error page diff --git a/features/step_definitions/login_steps.rb b/features/step_definitions/login_steps.rb index 61f803a..74a0945 100644 --- a/features/step_definitions/login_steps.rb +++ b/features/step_definitions/login_steps.rb @@ -1,14 +1,14 @@ Given(/^the login page$/) do - #put your code here - pending + visit '/' end -When(/^I log in with proper credentials$/) do - #put your code here - pending +When(/^I log in with (proper|incorrect) credentials$/) do |_situation| + fill_in 'username', with: 'test' + + fill_in 'password', with: _situation == 'proper' ? 'test' : 'bad' + click_button 'Login' end -Then(/^I should see the secret page$/) do - #put your code here - pending +Then(/^I should see the (secret|error) page$/) do |_situation| + expect(page).to have_content if _situation == 'secret' ? 'This is the secret page' : 'Your username & password did not match' end From 27c5fe2d5c5133451dcb9a2d937050fd7724f264 Mon Sep 17 00:00:00 2001 From: Josh Meek Date: Mon, 13 Jun 2016 13:30:28 -0400 Subject: [PATCH 2/2] complete logout feature and add shared step helper --- features/logout.feature | 11 ++++++++++- features/step_definitions/login_steps.rb | 4 ---- features/step_definitions/logout_steps.rb | 4 +++- features/step_definitions/step_helper.rb | 15 +++++++++++++++ 4 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 features/step_definitions/step_helper.rb diff --git a/features/logout.feature b/features/logout.feature index 251c445..8887ba6 100644 --- a/features/logout.feature +++ b/features/logout.feature @@ -1 +1,10 @@ -#Add your codez here +Feature: Logout Page + As a user + After I have correctly logged in + I want to have to logout + + Scenario: Logout + Given the login page + When I log in with proper credentials + When I logout + Then I should see the logout page diff --git a/features/step_definitions/login_steps.rb b/features/step_definitions/login_steps.rb index 74a0945..63db020 100644 --- a/features/step_definitions/login_steps.rb +++ b/features/step_definitions/login_steps.rb @@ -8,7 +8,3 @@ fill_in 'password', with: _situation == 'proper' ? 'test' : 'bad' click_button 'Login' end - -Then(/^I should see the (secret|error) page$/) do |_situation| - expect(page).to have_content if _situation == 'secret' ? 'This is the secret page' : 'Your username & password did not match' -end diff --git a/features/step_definitions/logout_steps.rb b/features/step_definitions/logout_steps.rb index 251c445..cc42db2 100644 --- a/features/step_definitions/logout_steps.rb +++ b/features/step_definitions/logout_steps.rb @@ -1 +1,3 @@ -#Add your codez here +When(/^I logout$/) do + click_link 'Logout' +end diff --git a/features/step_definitions/step_helper.rb b/features/step_definitions/step_helper.rb new file mode 100644 index 0000000..224c485 --- /dev/null +++ b/features/step_definitions/step_helper.rb @@ -0,0 +1,15 @@ +SECRET_PAGE = 'secret'.freeze +ERROR_PAGE = 'error'.freeze +LOGOUT_PAGE = 'logout'.freeze +SECRET_PAGE_TEXT = 'This is the secret page'.freeze +ERROR_PAGE_TEXT = 'Your username & password did not match'.freeze +LOGOUT_PAGE_TEXT = 'You have been logged out'.freeze + +Then(/^I should see the (#{SECRET_PAGE}|#{ERROR_PAGE}|#{LOGOUT_PAGE}) page$/) do |_situation| + case _situation + when -> (s) { s == SECRET_PAGE } then expected_display_text = SECRET_PAGE_TEXT + when -> (s) { s == ERROR_PAGE } then expected_display_text = ERROR_PAGE_TEXT + when -> (s) { s == LOGOUT_PAGE } then expected_display_text = LOGOUT_PAGE_TEXT + end + expect(page).to have_content expected_display_text +end