On Apr 17, 2012, at 8:50 PM, Luciano Borges wrote:

> I'm studying Rspec and doing some model's tests.
> 
> I have a table with a field which must have two characters, the field should 
> not be empty and can not be repeated. 
> 
> My doubts is with #.
> 
> describe State do
>   context "validations" do
> 
>     it "The abbreviation should not be empty" do
>       subject.abbreviation = nil
>       subject.should_not be_valid
>     end
>       
>     # I can do like example below or I have to break in parts?
> 
>     it "The abbreviation  should have 2 characters" do
>       subject.abbreviation = "BA"
>       subject.should be_valid
>       
>       subject.abbreviation = "B"
>       subject.should_not be_valid
>       
>       subject.abbreviation = "BAA"
>       subject.should_not be_valid
>     end
> 
>     it "The abbreviation can not be repeated" do
> 
>      # I don't know how to do!
> 
>     end
>   end
> end

With things like the above, I usually want the rule, followed by some examples. 
I usually approach like below. Its nice to have it all right in the specdoc.

describe 'validations' do
   ....
   describe 'abbreviation', 'must be two unique characters' do
       specify 'AB is valid' do
         subject.abbreviation = 'AB'
         subject.should be_valid
       end

       specify 'A is not valid' do
         subject.abbreviation = 'A'
         subject.should_not be_valid
       end

      specify 'BAA is not valid' do
        subject.abbreviation = 'BAA'
        subject.should_not be_valid
      end

I think it would be overkill for the above, but sometimes if I'm throwing lots 
of examples at something (e.g. email address validation), I'll use a macro like 
below.

 describe 'abbreviation', 'must be two unique characters' do
      def self.it_is_valid(abbreviation)
         specify "#{abbreviation} is valid" do
           subject.abbreviation = abbreviation
           subject.should be_valid
         end
      end
      .....
      it_is_valid('AB')
      it_is_valid('BA')
      it_is_not_valid('AA')
      it_is_not_valid('BAA')
      .....
  
-lenny
          
> 
> Thanks,
> Luciano
> _______________________________________________
> rspec-users mailing list
> rspec-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to