forked from eliotsykes/rspec-rails-examples
-
Notifications
You must be signed in to change notification settings - Fork 1
/
user_registers_spec.rb
111 lines (77 loc) · 3.17 KB
/
user_registers_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
require 'rails_helper'
feature "User registers" do
scenario "with valid details" do
visit "/"
click_link "Sign up"
expect(current_path).to eq(new_user_registration_path)
fill_in "Email", with: "[email protected]"
fill_in "Password", with: "test-password"
fill_in "Password confirmation", with: "test-password"
click_button "Sign up"
expect(current_path).to eq "/"
expect(page).to have_content(
"A message with a confirmation link has been sent to your email address.
Please follow the link to activate your account."
)
open_email "[email protected]", with_subject: "Confirmation instructions"
visit_in_email "Confirm my account"
expect(current_path).to eq new_user_session_path
expect(page).to have_content "Your email address has been successfully confirmed."
fill_in "Email", with: "[email protected]"
fill_in "Password", with: "test-password"
click_button "Log in"
expect(current_path).to eq "/"
expect(page).to have_content "Signed in successfully."
expect(page).to have_content "Hello, [email protected]"
end
context "with invalid details" do
before do
visit new_user_registration_path
end
scenario "blank fields" do
expect_fields_to_be_blank
click_button "Sign up"
expect(page).to have_error_messages "Email can't be blank",
"Password can't be blank"
end
scenario "incorrect password confirmation" do
fill_in "Email", with: "[email protected]"
fill_in "Password", with: "test-password"
fill_in "Password confirmation", with: "not-test-password"
click_button "Sign up"
expect(page).to have_error_message "Password confirmation doesn't match Password"
end
scenario "already registered email" do
create(:user, email: "[email protected]")
fill_in "Email", with: "[email protected]"
fill_in "Password", with: "test-password"
fill_in "Password confirmation", with: "test-password"
click_button "Sign up"
expect(page).to have_error_message "Email has already been taken"
end
scenario "invalid email" do
fill_in "Email", with: "invalid-email-for-testing"
fill_in "Password", with: "test-password"
fill_in "Password confirmation", with: "test-password"
click_button "Sign up"
expect(page).to have_error_message "Email is invalid"
end
scenario "too short password" do
min_password_length = 8
too_short_password = "p" * (min_password_length - 1)
fill_in "Email", with: "[email protected]"
fill_in "Password", with: too_short_password
fill_in "Password confirmation", with: too_short_password
click_button "Sign up"
expect(page).to have_error_message "Password is too short (minimum is 8 characters)"
end
end
private
def expect_fields_to_be_blank
expect(page).to have_field("Email", with: "", type: "email")
# These password fields don't have value attributes in the generated HTML,
# so with: syntax doesn't work.
expect(find_field("Password", type: "password").value).to be_nil
expect(find_field("Password confirmation", type: "password").value).to be_nil
end
end