Sha256: eeefef8a56ee5d29867cd5be1e6e94503f714683913a334ff5dbf81a65f0e5a3

Contents?: true

Size: 1.88 KB

Versions: 3

Compression:

Stored size: 1.88 KB

Contents

require 'teststrap'

context "validates date" do

  should "add a validation macro" do
    WhyValidationsSuckIn96::ValidationBuilder.instance_methods.map {|im| im.to_s}
  end.includes('validates_as_date')

  context "with some default options" do
    setup do
      WhyValidationsSuckIn96::ValidatesDate.new(Object.new, :attribute => :start_date)
    end

    should "have a message accessor with a default message" do
      topic.message
    end.equals("does not match the given date format or is not a valid date")
  end # with some default options

  context "validating an object" do

    should "fail if given attribute does not match the regular expression" do
      validation = WhyValidationsSuckIn96::ValidatesDate.new(OpenStruct.new(:start_date => "13-22-1969"), :attribute => :start_date)
      validation.validates?
    end.equals(false)

    should "fail if given attribute is not a valid date" do
      validation = WhyValidationsSuckIn96::ValidatesDate.new(OpenStruct.new(:start_date => "02-31-1969"), :attribute => :start_date)
      validation.validates?
    end.equals(false)

    should "pass if given attribute matches the regular expression" do
      validation = WhyValidationsSuckIn96::ValidatesDate.new(OpenStruct.new(:start_date => "4-20-1969"), :attribute => :start_date)
      validation.validates?
    end

    should "have an accessor for the parsed date string" do
      validation = WhyValidationsSuckIn96::ValidatesDate.new(OpenStruct.new(:start_date => "4-20-1969"), :attribute => :start_date)
      validation.validates?
      validation.date
    end.equals(Date.civil(1969, 4, 20))

    should "#date returns nil if validation does not pass" do
      validation = WhyValidationsSuckIn96::ValidatesDate.new(OpenStruct.new(:start_date => "34-393"), :attribute => :start_date)
      validation.validates?
      validation.date
    end.not!
  end   # validating an object
end     # validates format

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
whyvalidationssuckin96-1.6.4 test/macros/validates_date_test.rb
whyvalidationssuckin96-1.6.3 test/macros/validates_date_test.rb
whyvalidationssuckin96-1.6.2 test/macros/validates_date_test.rb