b34963bc12
Also: - Get rid of legacy :strict_mode - Get rid of custom :email validator - Add some shared examples to spec emails validation
44 lines
1.3 KiB
Ruby
44 lines
1.3 KiB
Ruby
# Specifications for behavior common to all objects with an email attribute.
|
|
# Takes a list of email-format attributes and requires:
|
|
# - subject { "the object with a attribute= setter" }
|
|
# Note: You have access to `email_value` which is the email address value
|
|
# being currently tested).
|
|
|
|
shared_examples 'an object with email-formated attributes' do |*attributes|
|
|
attributes.each do |attribute|
|
|
describe "specifically its :#{attribute} attribute" do
|
|
%w[
|
|
info@example.com
|
|
info+test@example.com
|
|
o'reilly@example.com
|
|
mailto:test@example.com
|
|
lol!'+=?><#$%^&*()@gmail.com
|
|
].each do |valid_email|
|
|
context "with a value of '#{valid_email}'" do
|
|
let(:email_value) { valid_email }
|
|
|
|
it 'is valid' do
|
|
subject.send("#{attribute}=", valid_email)
|
|
|
|
expect(subject).to be_valid
|
|
end
|
|
end
|
|
end
|
|
|
|
%w[
|
|
foobar
|
|
test@test@example.com
|
|
].each do |invalid_email|
|
|
context "with a value of '#{invalid_email}'" do
|
|
let(:email_value) { invalid_email }
|
|
|
|
it 'is invalid' do
|
|
subject.send("#{attribute}=", invalid_email)
|
|
|
|
expect(subject).to be_invalid
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|