Sha256: c17da720da3207fedd9a8d5401b3a5453e542cfd8251623348f1894c6e6c054f
Contents?: true
Size: 1.61 KB
Versions: 2
Compression:
Stored size: 1.61 KB
Contents
# frozen_string_literal: true module Matchers module Type def have_nullable_date(attribute, valid_value, invalid_value) HaveNullableDateMatcher.new(attribute, valid_value, invalid_value) end class HaveNullableDateMatcher < HaveNullableMatcher def initialize(attribute, valid_value, invalid_value) @attribute = attribute @valid_value = valid_value @invalid_value = invalid_value @expected_error = Fortnox::API::AttributeError @expected_error_message = 'invalid date' @failure_description = '' end def matches?(klass) @klass = klass accepts_nil? && accepts_valid_value? && rejects_invalid_value? end def description "have nullable attribute #{@attribute.inspect}" end def failure_message "Expected class to have nullable attribute #{@attribute.inspect}" << @failure_description end private def accepts_nil? @klass.new(@attribute => nil) end def accepts_valid_value? model = @klass.new(@attribute => @valid_value) model.send(@attribute) == @valid_value end def rejects_invalid_value? @klass.new(@attribute => @invalid_value) @failure_description << " (Expected #{@expected_error}, but got none)" false rescue @expected_error => e return true if e.message == @expected_error_message fail_message = "Expected error message to include #{@expected_error_message.inspect}, "\ "but was #{e.message.inspect}" raise(fail_message) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
fortnox-api-0.8.2 | spec/support/matchers/type/have_nullable_date_matcher.rb |
fortnox-api-0.8.1 | spec/support/matchers/type/have_nullable_date_matcher.rb |