Merge branch 'replace_emails.feature' into 'master'
Replace the 'profile/emails.feature' spinach test with an rspec analog See merge request !14172
This commit is contained in:
commit
b22a48d537
4 changed files with 83 additions and 74 deletions
5
changelogs/unreleased/replace_emails-feature.yml
Normal file
5
changelogs/unreleased/replace_emails-feature.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Replace the profile/emails.feature spinach test with an rspec analog
|
||||
merge_request: 14172
|
||||
author: Vitaliy @blackst0ne Klachkov
|
||||
type: other
|
|
@ -1,26 +0,0 @@
|
|||
@profile
|
||||
Feature: Profile Emails
|
||||
Background:
|
||||
Given I sign in as a user
|
||||
And I visit profile emails page
|
||||
|
||||
Scenario: I should see emails
|
||||
Then I should see my emails
|
||||
|
||||
Scenario: Add new email
|
||||
Given I submit new email "my@email.com"
|
||||
Then I should see new email "my@email.com"
|
||||
And I should see my emails
|
||||
|
||||
Scenario: Add duplicate email
|
||||
Given I submit duplicate email @user.email
|
||||
Then I should not have @user.email added
|
||||
And I should see my emails
|
||||
|
||||
Scenario: Remove email
|
||||
Given I submit new email "my@email.com"
|
||||
Then I should see new email "my@email.com"
|
||||
And I should see my emails
|
||||
Then I click link "Remove" for "my@email.com"
|
||||
Then I should not see email "my@email.com"
|
||||
And I should see my emails
|
|
@ -1,48 +0,0 @@
|
|||
class Spinach::Features::ProfileEmails < Spinach::FeatureSteps
|
||||
include SharedAuthentication
|
||||
|
||||
step 'I visit profile emails page' do
|
||||
visit profile_emails_path
|
||||
end
|
||||
|
||||
step 'I should see my emails' do
|
||||
expect(page).to have_content(@user.email)
|
||||
@user.emails.each do |email|
|
||||
expect(page).to have_content(email.email)
|
||||
end
|
||||
end
|
||||
|
||||
step 'I submit new email "my@email.com"' do
|
||||
fill_in "email_email", with: "my@email.com"
|
||||
click_button "Add"
|
||||
end
|
||||
|
||||
step 'I should see new email "my@email.com"' do
|
||||
email = @user.emails.find_by(email: "my@email.com")
|
||||
expect(email).not_to be_nil
|
||||
expect(page).to have_content("my@email.com")
|
||||
end
|
||||
|
||||
step 'I should not see email "my@email.com"' do
|
||||
email = @user.emails.find_by(email: "my@email.com")
|
||||
expect(email).to be_nil
|
||||
expect(page).not_to have_content("my@email.com")
|
||||
end
|
||||
|
||||
step 'I click link "Remove" for "my@email.com"' do
|
||||
# there should only be one remove button at this time
|
||||
click_link "Remove"
|
||||
# force these to reload as they have been cached
|
||||
@user.emails.reload
|
||||
end
|
||||
|
||||
step 'I submit duplicate email @user.email' do
|
||||
fill_in "email_email", with: @user.email
|
||||
click_button "Add"
|
||||
end
|
||||
|
||||
step 'I should not have @user.email added' do
|
||||
email = @user.emails.find_by(email: @user.email)
|
||||
expect(email).to be_nil
|
||||
end
|
||||
end
|
78
spec/features/profiles/user_manages_emails_spec.rb
Normal file
78
spec/features/profiles/user_manages_emails_spec.rb
Normal file
|
@ -0,0 +1,78 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe 'User manages emails' do
|
||||
let(:user) { create(:user) }
|
||||
|
||||
before do
|
||||
sign_in(user)
|
||||
|
||||
visit(profile_emails_path)
|
||||
end
|
||||
|
||||
it "shows user's emails" do
|
||||
expect(page).to have_content(user.email)
|
||||
|
||||
user.emails.each do |email|
|
||||
expect(page).to have_content(email.email)
|
||||
end
|
||||
end
|
||||
|
||||
it 'adds an email' do
|
||||
fill_in('email_email', with: 'my@email.com')
|
||||
click_button('Add')
|
||||
|
||||
email = user.emails.find_by(email: 'my@email.com')
|
||||
|
||||
expect(email).not_to be_nil
|
||||
expect(page).to have_content('my@email.com')
|
||||
expect(page).to have_content(user.email)
|
||||
|
||||
user.emails.each do |email|
|
||||
expect(page).to have_content(email.email)
|
||||
end
|
||||
end
|
||||
|
||||
it 'does not add a duplicate email' do
|
||||
fill_in('email_email', with: user.email)
|
||||
click_button('Add')
|
||||
|
||||
email = user.emails.find_by(email: user.email)
|
||||
|
||||
expect(email).to be_nil
|
||||
expect(page).to have_content(user.email)
|
||||
|
||||
user.emails.each do |email|
|
||||
expect(page).to have_content(email.email)
|
||||
end
|
||||
end
|
||||
|
||||
it 'removes an email' do
|
||||
fill_in('email_email', with: 'my@email.com')
|
||||
click_button('Add')
|
||||
|
||||
email = user.emails.find_by(email: 'my@email.com')
|
||||
|
||||
expect(email).not_to be_nil
|
||||
expect(page).to have_content('my@email.com')
|
||||
expect(page).to have_content(user.email)
|
||||
|
||||
user.emails.each do |email|
|
||||
expect(page).to have_content(email.email)
|
||||
end
|
||||
|
||||
# There should be only one remove button at this time
|
||||
click_link('Remove')
|
||||
|
||||
# Force these to reload as they have been cached
|
||||
user.emails.reload
|
||||
email = user.emails.find_by(email: 'my@email.com')
|
||||
|
||||
expect(email).to be_nil
|
||||
expect(page).not_to have_content('my@email.com')
|
||||
expect(page).to have_content(user.email)
|
||||
|
||||
user.emails.each do |email|
|
||||
expect(page).to have_content(email.email)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue