In my application I'm using devise for authentication and rspec, capybara
for testing. Here are my files
*new_student_spec.rb*
require 'rails_helper'
require_relative '../support/new_student_form_spec'
require_relative '../support/login_form_spec'
feature 'New Student', type: :feature do
let(:login_form) { LoginForm.new }
let(:new_student) { NewStudentForm.new }
let(:user) { FactoryGirl.create(:user) }
background do
login_form.visit_login_form.fill_form_as(user)
end
scenario 'fill new student details' do
new_student.visit_dashboard_page
end
end
*new_student_form_spec.rb*
class NewStudentForm
include Capybara::DSL
def visit_dashboard_page
visit('/dashboard')
self
end
end
*login_form_spec.rb*
class LoginForm
include Capybara::DSL
def visit_login_form
visit('/users/sign_in')
self
end
def fill_form_as(user)
fill_in('Email', with: user.email)
fill_in('Password', with: user.password)
click_on('Submit')
self
end
end
*Factory (users.rb)*
FactoryGirl.define do
factory :user do
transient do
skip_confirmation true
end
sequence(:email) { |n| "email#{n}@example.tld" }
password 'sceretsceret'
password_confirmation 'sceretsceret'
before(:create) do |user, evaluator|
user.skip_confirmation! if evaluator.skip_confirmation
end
end
end
Whenever I run 'bin/rspec' on above test it passes true only for one time.
If I tried to run it one more time it generate following error
1) New Student fill new student details
Failure/Error: let(:user) { FactoryGirl.create(:user) }
ActiveRecord::RecordInvalid:
Validation failed: Email has already been taken
# ./spec/features/new_students_spec.rb:9:in `block (2 levels) in <top
(required)>'
# ./spec/features/new_students_spec.rb:12:in `block (2 levels) in <top
(required)>'
# -e:1:in `<main>'
Where I'm going wrong?
--
Cheers!
Deepak Kumar Sharma
Guru Nanak Dev Engineering College
India!
Blog: http://deekysharma.wordpress.com
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/CALDHwN7gWjss41tGmbS%3DJkRojXKUriBS5gkXvNwF_d8%3DUX%2Bj%3Dw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.