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:

['1@1.com',
       '1-a-1@ar.com',
       'zequez..-@com.com',
       'z_e_q_u_e_z@t-p.9.asd.g.r.t.a.c.com',
       'zambuche@t-p.9.asd.g.r.t.a.c.com',
       'zEzEqZ@CoM.Ar',
       'zzzzzzzzzzz@asd.com',
       'z@q.z',
       'yo@zequez.com',
       'ca..--__ca..--__ca..--__a@zequez.com'].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?

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:

[‘1@1.com’,

   '1-a-1@ar.com',

   'zequez..-@com.com',

   'z_e_q_u_e_z@t-p.9.asd.g.r.t.a.c.com',

   'zambuche@t-p.9.asd.g.r.t.a.c.com',

   'zEzEqZ@CoM.Ar',

   'zzzzzzzzzzz@asd.com',

   'z@q.z',

   'yo@zequez.com',

   'ca..--__ca..--__ca..--__a@zequez.com'].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(‘david.n_kahn@gmail.com.mx’).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 Schwartzman
<lists@ruby-forum.com

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('david.n_kahn@gmail.com.mx').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! ^^