From de4420da44ecce68a6b7607b828c69959a5f738e Mon Sep 17 00:00:00 2001
From: bogdanvlviv <bogdanvlviv@gmail.com>
Date: Thu, 16 Aug 2018 19:49:14 +0300
Subject: Allow `:queue` option to `assert_no_performed_jobs`.

If the `:queue` option is specified, then only the job(s) enqueued to a specific
queue will not be performed.

Example:
```
def test_assert_no_performed_jobs_with_queue_option
  assert_no_performed_jobs queue: :some_queue do
    HelloJob.set(queue: :other_queue).perform_later("jeremy")
  end
end
```
---
 activejob/test/cases/test_helper_test.rb | 54 ++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

(limited to 'activejob/test/cases')

diff --git a/activejob/test/cases/test_helper_test.rb b/activejob/test/cases/test_helper_test.rb
index 8287001d7c..eade285412 100644
--- a/activejob/test/cases/test_helper_test.rb
+++ b/activejob/test/cases/test_helper_test.rb
@@ -1170,6 +1170,60 @@ class PerformedJobsTest < ActiveJob::TestCase
     assert_match(/`:only` and `:except`/, error.message)
   end
 
+  def test_assert_no_performed_jobs_with_queue_option
+    assert_no_performed_jobs queue: :some_queue do
+      HelloJob.set(queue: :other_queue).perform_later("jeremy")
+    end
+  end
+
+  def test_assert_no_performed_jobs_with_queue_option_failure
+    error = assert_raise ActiveSupport::TestCase::Assertion do
+      assert_no_performed_jobs queue: :some_queue do
+        HelloJob.set(queue: :some_queue).perform_later("jeremy")
+      end
+    end
+
+    assert_match(/0 .* but 1/, error.message)
+  end
+
+  def test_assert_no_performed_jobs_with_only_and_queue_options
+    assert_no_performed_jobs only: HelloJob, queue: :some_queue do
+      HelloJob.set(queue: :other_queue).perform_later("bogdan")
+      LoggingJob.set(queue: :some_queue).perform_later("jeremy")
+    end
+  end
+
+  def test_assert_no_performed_jobs_with_only_and_queue_options_failure
+    error = assert_raise ActiveSupport::TestCase::Assertion do
+      assert_no_performed_jobs only: HelloJob, queue: :some_queue do
+        HelloJob.set(queue: :some_queue).perform_later("bogdan")
+        LoggingJob.set(queue: :some_queue).perform_later("jeremy")
+      end
+    end
+
+    assert_match(/0 .* but 1/, error.message)
+  end
+
+  def test_assert_no_performed_jobs_with_except_and_queue_options
+    assert_no_performed_jobs except: HelloJob, queue: :some_queue do
+      HelloJob.set(queue: :other_queue).perform_later("bogdan")
+      HelloJob.set(queue: :some_queue).perform_later("bogdan")
+      LoggingJob.set(queue: :other_queue).perform_later("jeremy")
+    end
+  end
+
+  def test_assert_no_performed_jobs_with_except_and_queue_options_failure
+    error = assert_raise ActiveSupport::TestCase::Assertion do
+      assert_no_performed_jobs except: HelloJob, queue: :some_queue do
+        HelloJob.set(queue: :other_queue).perform_later("bogdan")
+        HelloJob.set(queue: :some_queue).perform_later("bogdan")
+        LoggingJob.set(queue: :some_queue).perform_later("jeremy")
+      end
+    end
+
+    assert_match(/0 .* but 1/, error.message)
+  end
+
   def test_assert_performed_job
     assert_performed_with(job: NestedJob, queue: "default") do
       NestedJob.perform_later
-- 
cgit v1.2.3