Sha256: 415386bc4d18cb3bbd704a0a2aecc15441edffdf343313e23387d14f301c52ca

Contents?: true

Size: 1.74 KB

Versions: 3

Compression:

Stored size: 1.74 KB

Contents

require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')

describe "Postal Code Validation" do

  subject { TestRecord.new }

  context "when no country is given" do
    before(:each) do
      TestRecord.reset_callbacks(:validate)
      TestRecord.validates :postal_code, :postal_code => true
    end

    it 'should validate format of postal code with #####' do
      subject.postal_code = '11211'
      subject.should be_valid
      subject.should have(0).errors
    end

    it 'should validate format of postal code with #####-#####' do
      subject.postal_code = '94117-1234'
      subject.should be_valid
      subject.should have(0).errors
    end
  end

  ActiveModel::Validations::PostalCodeValidator.known_formats.each do |country, formats|
    context "when given a :#{country} country parameter" do
      before(:each) do
        TestRecord.reset_callbacks(:validate)
        TestRecord.validates :postal_code, :postal_code => {:country => country}
      end

      formats.each do |format|
        it "should validate format of postal code with #{format}" do
          subject.postal_code = format.gsub('#','9')
          subject.should be_valid
          subject.should have(0).errors
        end
      end
    end
  end


  describe "for invalid formats" do
    before :each do
      TestRecord.reset_callbacks(:validate)
      TestRecord.validates :postal_code, :postal_code => true
      subject.postal_code = '999'
    end

    it "rejects invalid formats" do
      subject.should_not be_valid
      subject.should have(1).error
    end

    it "generates an error message of type invalid" do
      subject.should_not be_valid
      subject.errors[:postal_code].should include subject.errors.generate_message(:postal_code, :invalid)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
activevalidators-1.5.1 spec/validations/postal_code_spec.rb
activevalidators-1.5.0 spec/validations/postal_code_spec.rb
activevalidators-1.4.0 spec/validations/postal_code_spec.rb