Skip to content

Commit 0fe7631

Browse files
authored
Merge pull request #2157 from alpaca-tc/have_enqueued_job_time
have_enqueued_job supports time object
2 parents 1d56c29 + e8bc2d9 commit 0fe7631

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

lib/rspec/rails/matchers/active_job.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,9 @@ def job_match?(job)
140140

141141
def arguments_match?(job)
142142
if @args.any?
143+
args = serialize_and_deserialize_arguments(@args)
143144
deserialized_args = deserialize_arguments(job)
144-
RSpec::Mocks::ArgumentListMatcher.new(*@args).args_match?(*deserialized_args)
145+
RSpec::Mocks::ArgumentListMatcher.new(*args).args_match?(*deserialized_args)
145146
else
146147
true
147148
end
@@ -172,6 +173,13 @@ def set_expected_number(relativity, count)
172173
end
173174
end
174175

176+
def serialize_and_deserialize_arguments(args)
177+
serialized = ::ActiveJob::Arguments.serialize(args)
178+
::ActiveJob::Arguments.deserialize(serialized)
179+
rescue ::ActiveJob::SerializationError
180+
args
181+
end
182+
175183
def deserialize_arguments(job)
176184
::ActiveJob::Arguments.deserialize(job[:args])
177185
rescue ::ActiveJob::DeserializationError

spec/rspec/rails/matchers/active_job_spec.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,24 @@ def self.name; "LoggingJob"; end
328328
expect(arg).to eq("asdf")
329329
}
330330
end
331+
332+
if Rails.version.to_f >= 6.0
333+
it "passes with Time" do
334+
usec_time = Time.iso8601('2016-07-01T00:00:00.000001Z')
335+
336+
expect {
337+
hello_job.perform_later(usec_time)
338+
}.to have_enqueued_job(hello_job).with(usec_time)
339+
end
340+
341+
it "passes with ActiveSupport::TimeWithZone" do
342+
usec_time = Time.iso8601('2016-07-01T00:00:00.000001Z').in_time_zone
343+
344+
expect {
345+
hello_job.perform_later(usec_time)
346+
}.to have_enqueued_job(hello_job).with(usec_time)
347+
end
348+
end
331349
end
332350

333351
describe "have_been_enqueued" do

0 commit comments

Comments
 (0)