2017-07-09 17:49:52 +00:00
|
|
|
# frozen_string_literal: true
|
2017-07-10 13:40:03 +00:00
|
|
|
|
2016-08-06 16:41:18 +00:00
|
|
|
require "helper"
|
|
|
|
require "jobs/gid_job"
|
|
|
|
require "jobs/hello_job"
|
|
|
|
require "models/person"
|
|
|
|
require "json"
|
2014-05-19 10:06:09 +00:00
|
|
|
|
|
|
|
class JobSerializationTest < ActiveSupport::TestCase
|
|
|
|
setup do
|
2014-08-17 13:23:24 +00:00
|
|
|
JobBuffer.clear
|
2014-05-19 10:06:09 +00:00
|
|
|
@person = Person.find(5)
|
|
|
|
end
|
|
|
|
|
2016-08-06 16:41:18 +00:00
|
|
|
test "serialize job with gid" do
|
2014-08-25 14:34:50 +00:00
|
|
|
GidJob.perform_later @person
|
2014-08-17 13:23:24 +00:00
|
|
|
assert_equal "Person with ID: 5", JobBuffer.last_value
|
2014-05-19 10:06:09 +00:00
|
|
|
end
|
2015-07-07 19:52:28 +00:00
|
|
|
|
2016-08-06 16:41:18 +00:00
|
|
|
test "serialize includes current locale" do
|
|
|
|
assert_equal "en", HelloJob.new.serialize["locale"]
|
2015-07-07 19:52:28 +00:00
|
|
|
end
|
|
|
|
|
2016-08-06 16:41:18 +00:00
|
|
|
test "serialize and deserialize are symmetric" do
|
2020-04-07 04:31:29 +00:00
|
|
|
# Ensure `enqueued_at` does not change between serializations
|
|
|
|
freeze_time
|
|
|
|
|
2016-03-09 17:28:16 +00:00
|
|
|
# Round trip a job in memory only
|
2018-05-01 17:33:50 +00:00
|
|
|
h1 = HelloJob.new("Rafael")
|
|
|
|
h2 = HelloJob.deserialize(h1.serialize)
|
|
|
|
assert_equal h1.serialize, h2.serialize
|
2016-03-09 17:28:16 +00:00
|
|
|
|
|
|
|
# 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.
|
2018-05-01 17:33:50 +00:00
|
|
|
payload = JSON.dump(h2.serialize)
|
|
|
|
h3 = HelloJob.deserialize(JSON.load(payload))
|
|
|
|
assert_equal h2.serialize, h3.serialize
|
2016-03-09 17:28:16 +00:00
|
|
|
end
|
|
|
|
|
2016-08-06 16:41:18 +00:00
|
|
|
test "deserialize sets locale" do
|
2015-07-07 19:52:28 +00:00
|
|
|
job = HelloJob.new
|
2016-08-06 16:41:18 +00:00
|
|
|
job.deserialize "locale" => "es"
|
|
|
|
assert_equal "es", job.locale
|
2015-07-07 19:52:28 +00:00
|
|
|
end
|
|
|
|
|
2016-08-06 16:41:18 +00:00
|
|
|
test "deserialize sets default locale" do
|
2015-07-07 19:52:28 +00:00
|
|
|
job = HelloJob.new
|
|
|
|
job.deserialize({})
|
2016-08-06 16:41:18 +00:00
|
|
|
assert_equal "en", job.locale
|
2015-07-07 19:52:28 +00:00
|
|
|
end
|
2016-09-22 15:17:28 +00:00
|
|
|
|
|
|
|
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
|
2018-02-22 14:14:42 +00:00
|
|
|
|
|
|
|
test "serialize stores the current timezone" do
|
|
|
|
Time.use_zone "Hawaii" do
|
|
|
|
job = HelloJob.new
|
|
|
|
assert_equal "Hawaii", job.serialize["timezone"]
|
|
|
|
end
|
|
|
|
end
|
2019-02-12 17:49:12 +00:00
|
|
|
|
2023-04-22 18:07:21 +00:00
|
|
|
test "serializes and deserializes enqueued_at with full precision" do
|
2022-07-12 22:15:43 +00:00
|
|
|
freeze_time
|
2019-02-12 17:49:12 +00:00
|
|
|
|
2022-07-12 22:15:43 +00:00
|
|
|
serialized = HelloJob.new.serialize
|
|
|
|
assert_kind_of String, serialized["enqueued_at"]
|
|
|
|
|
|
|
|
enqueued_at = HelloJob.deserialize(serialized).enqueued_at
|
2023-04-22 18:07:21 +00:00
|
|
|
assert_kind_of Time, enqueued_at
|
|
|
|
assert_equal Time.now.utc, enqueued_at
|
|
|
|
end
|
|
|
|
|
|
|
|
test "serializes and deserializes scheduled_at as Time" do
|
|
|
|
freeze_time
|
|
|
|
current_time = Time.now
|
|
|
|
|
|
|
|
job = HelloJob.new
|
|
|
|
job.scheduled_at = current_time
|
|
|
|
serialized_job = job.serialize
|
|
|
|
assert_kind_of String, serialized_job["enqueued_at"]
|
|
|
|
assert_equal current_time.utc.iso8601(9), serialized_job["enqueued_at"]
|
|
|
|
|
|
|
|
deserialized_job = HelloJob.new
|
|
|
|
deserialized_job.deserialize(serialized_job)
|
|
|
|
assert_equal current_time, deserialized_job.scheduled_at
|
|
|
|
|
|
|
|
assert_equal job.serialize, deserialized_job.serialize
|
|
|
|
end
|
2014-05-19 10:06:09 +00:00
|
|
|
end
|