1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activejob/test/cases/job_serialization_test.rb
Andrew White a9d1167b1f Add support for timezones to Active Job
Record what was the current timezone in effect when the job was
enqueued and then restore when the job is executed in same way
that the current locale is recorded and restored.
2018-02-22 14:14:42 +00:00

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
h1.deserialize(h1.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(h1.serialize)
h2 = HelloJob.new
h2.deserialize(JSON.load(payload))
assert_equal h1.serialize, h2.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