Skip to content

Commit 67b9c64

Browse files
Merge pull request #4 from matthewsullivan/feature/add-email-validation
Feature/add email validation
2 parents 62bad8d + 467f071 commit 67b9c64

File tree

5 files changed

+37
-3
lines changed

5 files changed

+37
-3
lines changed

.rubocop.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2121,6 +2121,8 @@ Metrics/BlockNesting:
21212121
Metrics/ClassLength:
21222122
Description: "Avoid classes longer than 100 lines of code."
21232123
Enabled: true
2124+
Exclude:
2125+
- "test/**/*"
21242126
VersionAdded: "0.25"
21252127
VersionChanged: "0.87"
21262128
CountComments: false # count full line comments?

app/models/user.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
class User < ApplicationRecord
44
has_secure_password
55

6-
validates :email, presence: true, uniqueness: true
6+
validates :email, format: {
7+
message: 'invalid format',
8+
with: URI::MailTo::EMAIL_REGEXP
9+
}, presence: true, uniqueness: true
710
validates :first_name, presence: true
811
validates :last_name, presence: true
912
end

test/graph/mutations/register_test.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,15 @@ def perform(args = {})
7474
parameters = build_parameters(@user)
7575
result = perform(parameters)
7676

77-
assert_equal("Invalid input: Email can't be blank", result['errors'][0]['message'])
77+
assert_equal("Invalid input: Email invalid format, Email can't be blank", result['errors'][0]['message'])
78+
end
79+
80+
test 'should not register without valid email' do
81+
@user[:email] = 'taylorlocalhost'
82+
parameters = build_parameters(@user)
83+
result = perform(parameters)
84+
85+
assert_equal('Invalid input: Email invalid format', result['errors'][0]['message'])
7886
end
7987

8088
test 'should not register without password' do

test/graph/mutations/update_user_test.rb

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def perform(args = {})
9393
}
9494
result = perform(parameters)
9595

96-
assert_equal("Invalid input: Email can't be blank", result['errors'][0]['message'])
96+
assert_equal("Invalid input: Email invalid format, Email can't be blank", result['errors'][0]['message'])
9797
end
9898

9999
test 'should not update with pre-existing email' do
@@ -108,5 +108,18 @@ def perform(args = {})
108108

109109
assert_equal('Invalid input: Email has already been taken', result['errors'][0]['message'])
110110
end
111+
112+
test 'should not update without valid email' do
113+
parameters = {
114+
input: {
115+
arguments: {
116+
email: 'janedoelocalhost'
117+
}
118+
}
119+
}
120+
result = perform(parameters)
121+
122+
assert_equal('Invalid input: Email invalid format', result['errors'][0]['message'])
123+
end
111124
end
112125
end

test/models/user_test.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ def setup
4141
assert_not_nil(user.errors[:email], 'duplicate email present')
4242
end
4343

44+
test 'should not create without valid email' do
45+
@user[:email] = 'johndoelocalhost'
46+
user = User.create(@user)
47+
48+
refute(user.valid?)
49+
assert_equal(user.errors[:email][0], 'invalid format')
50+
end
51+
4452
test 'should not create without password' do
4553
user = User.new(first_name: @user[:first_name])
4654

0 commit comments

Comments
 (0)