Is a bad practice to do this while testing with Rspec?

I’m testing the validation of emails so I did the following:

it ‘should only allow domains names with numbers, letters, dots or
dashes’ do
(%-\|!"#$%&/()=?¡;,:{}+'<>°+*[]"¬~^@áéíóú´`_ -).each_char do
|c|
Factory.build(:user, :email =>
“zequez@gm#{c}ail.com”).should_not be_valid
end
end

Also this:

[‘[email protected]’,
[email protected]’,
[email protected]’,
[email protected]’,
[email protected]’,
[email protected]’,
[email protected]’,
[email protected]’,
[email protected]’,
[email protected]’].each do |email|
it “should allow #{email} as a valid email” do
Factory.build(:user, :email => email).should be_valid
end
end

And many similar things…

Is that bad?

On Sun, Aug 28, 2011 at 10:29 AM, Ezequiel S.
<[email protected]

wrote:

  '[email protected]',
  '[email protected]'].each do |email|
   it "should allow #{email} as a valid email" do
     Factory.build(:user, :email => email).should be_valid
   end
 end

And many similar things…

Is that bad?

In my book this is fine… you have a list of specific examples and it
is
clear what you are doing. I might go further and make sure that in fact
it
is the email which is valid/invalid vs just checking the model (at least
in
the case if you are checking what should be invalid data) as another
field
could be the invalid one.

I also like shoulda as you get helpers like:

it { should allow_value(‘[email protected]’).for(:email) }
it { should_not allow_value(‘david nathan kahn at gmail dot
com’).for(:email) }

David K. wrote in post #1018921:

On Sun, Aug 28, 2011 at 10:29 AM, Ezequiel S.
<[email protected]

In my book this is fine… you have a list of specific examples and it
is
clear what you are doing. I might go further and make sure that in fact
it
is the email which is valid/invalid vs just checking the model (at least
in
the case if you are checking what should be invalid data) as another
field
could be the invalid one.

I also like shoulda as you get helpers like:

it { should allow_value(‘[email protected]’).for(:email) }
it { should_not allow_value(‘david nathan kahn at gmail dot
com’).for(:email) }

Thanks! I’m looking into shoulda now, it seems very useful! ^^