mirror of
https://github.com/discourse/discourse.git
synced 2024-12-05 16:23:43 +08:00
c5c043d9e2
We use it like this: expect(message.created_at).to eq_time(created_at) The problem is that if one of the values or both of them are `nil` the matcher fails with this error: NoMethodError: undefined method `-' for nil:NilClass This commit adds support for `nil` values. If both time values are `nil` they are equal, if only one value is `nil` they aren't.
24 lines
965 B
Ruby
24 lines
965 B
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec::Matchers.define :be_within_one_second_of do |expected_time|
|
|
match { |actual_time| (actual_time - expected_time).abs < 1 }
|
|
failure_message { |actual_time| "#{actual_time} is not within 1 second of #{expected_time}" }
|
|
end
|
|
|
|
RSpec::Matchers.define :be_within_one_minute_of do |expected_time|
|
|
match { |actual_time| (actual_time - expected_time).abs < 60 }
|
|
failure_message { |actual_time| "#{actual_time} is not within 1 minute of #{expected_time}" }
|
|
end
|
|
|
|
RSpec::Matchers.define :eq_time do |expected_time|
|
|
match do |actual_time|
|
|
return true if expected_time.nil? && actual_time.nil?
|
|
return false if expected_time.nil? || actual_time.nil?
|
|
(actual_time - expected_time).abs < 0.001
|
|
end
|
|
failure_message { |actual_time| "#{actual_time} is not within 1 millisecond of #{expected_time}" }
|
|
failure_message_when_negated do |actual_time|
|
|
"#{actual_time} is within 1 millisecond of #{expected_time}"
|
|
end
|
|
end
|