mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
5b9cd1a579
When a job was just deserialized `arguments` is `nil` and the serialized arguments are in the `@serialized_arguments` variable. If we try to serialize this job again the arguments are going to be `nil` instead of what was serialized. The test we had was not checking this case because it was deserializing the job in the same object that had the arguments. To fix this, when the `@serialized_arguments` are present we return it instead of the result of the `arguments` serialized.
64 lines
1.6 KiB
Ruby
64 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "helper"
|
|
require "jobs/gid_job"
|
|
require "jobs/hello_job"
|
|
require "models/person"
|
|
require "json"
|
|
|
|
class JobSerializationTest < ActiveSupport::TestCase
|
|
setup do
|
|
JobBuffer.clear
|
|
@person = Person.find(5)
|
|
end
|
|
|
|
test "serialize job with gid" do
|
|
GidJob.perform_later @person
|
|
assert_equal "Person with ID: 5", JobBuffer.last_value
|
|
end
|
|
|
|
test "serialize includes current locale" do
|
|
assert_equal "en", HelloJob.new.serialize["locale"]
|
|
end
|
|
|
|
test "serialize and deserialize are symmetric" do
|
|
# Round trip a job in memory only
|
|
h1 = HelloJob.new("Rafael")
|
|
h2 = HelloJob.deserialize(h1.serialize)
|
|
assert_equal h1.serialize, h2.serialize
|
|
|
|
# Now verify it's identical to a JSON round trip.
|
|
# We don't want any non-native JSON elements in the job hash,
|
|
# like symbols.
|
|
payload = JSON.dump(h2.serialize)
|
|
h3 = HelloJob.deserialize(JSON.load(payload))
|
|
assert_equal h2.serialize, h3.serialize
|
|
end
|
|
|
|
test "deserialize sets locale" do
|
|
job = HelloJob.new
|
|
job.deserialize "locale" => "es"
|
|
assert_equal "es", job.locale
|
|
end
|
|
|
|
test "deserialize sets default locale" do
|
|
job = HelloJob.new
|
|
job.deserialize({})
|
|
assert_equal "en", job.locale
|
|
end
|
|
|
|
test "serialize stores provider_job_id" do
|
|
job = HelloJob.new
|
|
assert_nil job.serialize["provider_job_id"]
|
|
|
|
job.provider_job_id = "some value set by adapter"
|
|
assert_equal job.provider_job_id, job.serialize["provider_job_id"]
|
|
end
|
|
|
|
test "serialize stores the current timezone" do
|
|
Time.use_zone "Hawaii" do
|
|
job = HelloJob.new
|
|
assert_equal "Hawaii", job.serialize["timezone"]
|
|
end
|
|
end
|
|
end
|