spec/spec_helper.rb in gush-2.1.0 vs spec/spec_helper.rb in gush-3.0.0

- old
+ new

@@ -1,5 +1,7 @@ +require 'active_support' +require 'active_support/testing/time_helpers' require 'gush' require 'json' require 'pry' ActiveJob::Base.queue_adapter = :test @@ -32,10 +34,15 @@ def configure(param) run Prepare if param end end +class WaitableTestWorkflow < Gush::Workflow + def configure + run Prepare, wait: 5.minutes + end +end REDIS_URL = ENV["REDIS_URL"] || "redis://localhost:6379/12" module GushHelpers def redis @@ -84,10 +91,25 @@ failure_message do |actual| "expected queue to have no #{jobs}, but instead has: #{ActiveJob::Base.queue_adapter.enqueued_jobs.map{ |j| j[:args][1]}}" end end +RSpec::Matchers.define :have_a_job_enqueued_at do |flow, job, at| + expected_execution_timestamp = (Time.current.utc + at).to_i + + match do |actual| + expected = hash_including(args: include(flow, job), at: expected_execution_timestamp) + + expect(ActiveJob::Base.queue_adapter.enqueued_jobs).to match_array(expected) + end + + failure_message do |actual| + "expected to have enqueued job #{job} to be executed at #{Time.current.utc + at}, but instead has: #{Time.at(enqueued_jobs.first[:at]).to_datetime.utc}" + end +end + RSpec.configure do |config| + config.include ActiveSupport::Testing::TimeHelpers config.include ActiveJob::TestHelper config.include GushHelpers config.mock_with :rspec do |mocks| mocks.verify_partial_doubles = true