diff --git a/lib/que/worker.spec.rb b/lib/que/worker.spec.rb index ddf6a15b..eeaace8c 100644 --- a/lib/que/worker.spec.rb +++ b/lib/que/worker.spec.rb @@ -98,18 +98,55 @@ def finished_job_ids end describe "logging the job's completion" do - it "should default to logging at the debug level" do + def run_a_job WorkerJob.enqueue run_jobs + end - skip "figuring out how to test this" + def assert_logging(event:, level:) + run_a_job + msg, actual_level = QUE_LOGGER.messages_with_levels.first + msg = JSON.parse(msg) + assert_equal event, msg['event'] + assert_equal level, actual_level + msg end - it "should use the output of log_level if it is defined" + it "should default to logging at the debug level" do + assert_logging(event: 'job_worked', level: :debug) + end - it "should not log if log_level doesn't return a valid level" + it "should use the output of log_level if it is defined" do + WorkerJob.class_eval do + def log_level(elapsed) + :warn + end + end + + assert_logging(event: 'job_worked', level: :warn) + end - it "should log at the error level if the job fails" + it "should not log if log_level doesn't return a valid level" do + WorkerJob.class_eval do + def log_level(elapsed) + :blah + end + end + + run_a_job + assert_empty QUE_LOGGER.messages + end + + it "should log at the error level if the job fails" do + WorkerJob.class_eval do + def run(*args) + raise "Blah!" + end + end + + msg = assert_logging(event: 'job_errored', level: :error) + assert_equal "RuntimeError: Blah!", msg['error'] + end end describe "when given a priority requirement" do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 2111fd24..e18389f9 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -303,8 +303,8 @@ def around Que.run_synchronously = false Que.use_prepared_statements = true - QUE_LOGGER.messages.clear - QUE_INTERNAL_LOGGER.messages.clear + QUE_LOGGER.reset + QUE_INTERNAL_LOGGER.reset $q1, $q2 = Queue.new, Queue.new $passed_args = nil diff --git a/spec/support/dummy_logger.rb b/spec/support/dummy_logger.rb index ead6aa26..638d0ea9 100644 --- a/spec/support/dummy_logger.rb +++ b/spec/support/dummy_logger.rb @@ -1,16 +1,22 @@ # frozen_string_literal: true class DummyLogger - attr_reader :messages + attr_reader :messages, :messages_with_levels def initialize - @mutex = Mutex.new @messages = [] + @messages_with_levels = [] end [:debug, :info, :warn, :error, :fatal, :unknown].each do |level| - define_method level do |thing| - messages << thing + define_method level do |message| + messages << message + messages_with_levels << [message, level] end end + + def reset + messages.clear + messages_with_levels.clear + end end