Skip to content

Commit

Permalink
Fix comparison of times for #at in job matchers.
Browse files Browse the repository at this point in the history
Prior to 4.0.0 we used `to_f` to ensure parity of precision with Rails internals
this was lost when we added support for date matching, but this restores
it for Time objects only.

Co-authored-by: Markus Doits <markus.doits@stellenticket.de>
  • Loading branch information
JonRowe and doits committed Mar 28, 2020
1 parent bef9822 commit f345e82
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
8 changes: 6 additions & 2 deletions lib/rspec/rails/matchers/active_job.rb
Expand Up @@ -30,8 +30,12 @@ def on_queue(queue)
self
end

def at(date)
@at = date
def at(time_or_date)
case time_or_date
when Time then @at = Time.at(time_or_date.to_f)
else
@at = time_or_date
end
self
end

Expand Down
7 changes: 7 additions & 0 deletions spec/rspec/rails/matchers/active_job_spec.rb
Expand Up @@ -216,6 +216,13 @@ def self.name; "LoggingJob"; end
}.to have_enqueued_job.at(date)
end

it "passes with provided at time" do
time = Time.now + 1.day
expect {
hello_job.set(wait_until: time).perform_later
}.to have_enqueued_job.at(time)
end

it "accepts composable matchers as an at date" do
future = 1.minute.from_now
slightly_earlier = 58.seconds.from_now
Expand Down

0 comments on commit f345e82

Please sign in to comment.