Sha256: be6f8e76cfe2b8ada25f3ec02f7876bd2ba8b70bb24a5bc123ad99a1bb9fadc0

Contents?: true

Size: 1.77 KB

Versions: 1

Compression:

Stored size: 1.77 KB

Contents

require 'test_helper.rb'

describe "Postal Code Validation" do
  def build_postal_code_record postal_code, attrs = {}
    TestRecord.reset_callbacks(:validate)
    TestRecord.validates :postal_code, :postal_code => postal_code
    TestRecord.new attrs
  end

  describe "when no country is given" do
    it 'should validate format of postal code with #####' do
      subject = build_postal_code_record true
      subject.postal_code = '11211'
      subject.valid?.must_equal true
      subject.errors.size.must_equal 0
    end

    it 'should validate format of postal code with #####-#####' do
      subject = build_postal_code_record true
      subject.postal_code = '94117-1234'
      subject.valid?.must_equal true
      subject.errors.size.must_equal 0
    end
  end

  ActiveModel::Validations::PostalCodeValidator.known_formats.each do |country, formats|
    describe "when given a :#{country} country parameter" do
      formats.each do |format|
        it "should validate format of postal code with #{format}" do
          subject = build_postal_code_record :country => country
          subject.postal_code = format.gsub(/[@#]/, '@' => 'A', '#' => '9')
          subject.valid?.must_equal true
          subject.errors.size.must_equal 0
        end
      end
    end
  end


  describe "for invalid formats" do
    it "rejects invalid formats" do
      subject = build_postal_code_record true, :postal_code => '999'
      subject.valid?.must_equal false
      subject.errors.size.must_equal 1
    end

    it "generates an error message of type invalid" do
      subject = build_postal_code_record true, :postal_code => '999'
      subject.valid?.must_equal false
      subject.errors[:postal_code].include?(subject.errors.generate_message(:postal_code, :invalid)).must_equal true
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activevalidators-2.0.0 test/validations/postal_code_test.rb