Fixes
This commit is contained in:
90
test/jobs/application_job_test.rb
Normal file
90
test/jobs/application_job_test.rb
Normal file
@@ -0,0 +1,90 @@
|
||||
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
|
||||
Reference in New Issue
Block a user