Files
clinch/test/jobs/application_job_test.rb
Dan Milne e4e7a0873e Fixes
2025-10-26 22:03:03 +11:00

90 lines
2.5 KiB
Ruby

require "test_helper"
class ApplicationJobTest < ActiveJob::TestCase
test "should inherit from ActiveJob::Base" do
assert ApplicationJob < ActiveJob::Base
end
test "should have proper job configuration" do
# Test that the ApplicationJob is properly configured
assert_respond_to ApplicationJob, :perform_now
assert_respond_to ApplicationJob, :perform_later
end
test "should handle job execution" do
# Create a simple test job to verify the base functionality
test_job = Class.new(ApplicationJob) do
def perform(*args)
args
end
end
# Test synchronous execution
result = test_job.perform_now("test", "data")
assert_equal ["test", "data"], result
# Test asynchronous execution using the test helper
assert_enqueued_jobs 1 do
test_job.perform_later("test", "data")
end
end
test "should queue jobs with proper arguments" do
test_job = Class.new(ApplicationJob) do
def perform(*args)
# No-op for testing
end
end
assert_enqueued_jobs 1 do
test_job.perform_later("arg1", "arg2", { key: "value" })
end
# Job class name may be nil in test environment, focus on args
assert_equal ["arg1", "arg2", { key: "value" }], enqueued_jobs.last[:args]
end
test "should have default queue configuration" do
# Test that jobs have proper queue configuration
test_job = Class.new(ApplicationJob) do
def perform(*args)
# No-op
end
end
job_instance = test_job.new
assert_respond_to job_instance, :queue_name
end
test "should handle job serialization and deserialization" do
# Test that Active Record objects can be properly serialized
user = users(:alice)
test_job = Class.new(ApplicationJob) do
def perform(user_record)
user_record.email_address
end
end
assert_enqueued_jobs 1 do
test_job.perform_later(user)
end
# Verify the job was queued with user (handling serialization)
args = enqueued_jobs.last[:args]
if args.is_a?(Array) && args.first.is_a?(Hash)
# GlobalID serialization format
assert_equal user.to_global_id.to_s, args.first['_aj_globalid']
else
# Direct object serialization
assert_equal user.id, args.first.id
end
end
test "should respect retry configuration" do
# This tests the framework for retry configuration
# Individual jobs should inherit this behavior
assert_respond_to ApplicationJob, :retry_on
assert_respond_to ApplicationJob, :discard_on
end
end