require "test_helper" class EventReminderJobTest < ActiveJob::TestCase def setup @event = events(:concert_event) @user = users(:one) @ticket = tickets(:one) end test "performs event reminder job for users with tickets" do # Mock the mailer to avoid actual email sending in tests TicketMailer.expects(:event_reminder).with(@user, @event, 7).returns(stub(deliver_now: true)) EventReminderJob.perform_now(@event.id, 7) end test "handles missing event gracefully" do assert_raises(ActiveRecord::RecordNotFound) do EventReminderJob.perform_now(999999, 7) end end test "logs error when mailer fails" do # Mock a failing mailer TicketMailer.stubs(:event_reminder).raises(StandardError.new("Test error")) Rails.logger.expects(:error).with(regexp_matches(/Failed to send event reminder/)) EventReminderJob.perform_now(@event.id, 7) end end