Module: TrackRelay::Testing::MinitestAssertions
- Defined in:
- lib/track_relay/testing/minitest_assertions.rb
Overview
Minitest assertions for use against the active Subscribers::Test (the one installed by TrackRelay.test_mode!).
Designed to be mixed into ‘ActiveSupport::TestCase` / `Minitest::Test` either directly or via Helpers, which also registers per-test setup/teardown to enable test mode automatically.
Used directly:
class MyTest < ActiveSupport::TestCase
include TrackRelay::Testing::MinitestAssertions
setup { TrackRelay.test_mode! }
teardown { TrackRelay.test_mode_off! }
test "fires :foo" do
MyService.run!
assert_tracked :foo, user_id: 1
end
end
Or via Helpers, which wires the setup/teardown for you.
Instance Method Summary collapse
-
#assert_tracked(name, **expected_params) ⇒ void
Assert at least one event named ‘name` was captured.
-
#refute_tracked(name) ⇒ void
Assert no event named ‘name` was captured.
-
#track_relay_test ⇒ TrackRelay::Subscribers::Test
Return the active Test subscriber, or raise a helpful message if TrackRelay.test_mode! has not been called yet.
Instance Method Details
#assert_tracked(name, **expected_params) ⇒ void
This method returns an undefined value.
Assert at least one event named ‘name` was captured. When `expected_params` is supplied, also assert at least one matching event has params that include every key/value pair in `expected_params` (subset semantics).
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/track_relay/testing/minitest_assertions.rb', line 48 def assert_tracked(name, **expected_params) events = track_relay_test.find(name) assert events.any?, "Expected an event :#{name} to be tracked, but found #{track_relay_test.events.map(&:name).inspect}" return if expected_params.empty? match = events.find { |e| expected_params.all? { |k, v| e.params[k] == v } } assert match, "Expected :#{name} with params >= #{expected_params.inspect}, got #{events.map(&:params).inspect}" end |
#refute_tracked(name) ⇒ void
This method returns an undefined value.
Assert no event named ‘name` was captured.
64 65 66 67 68 |
# File 'lib/track_relay/testing/minitest_assertions.rb', line 64 def refute_tracked(name) events = track_relay_test.find(name) refute events.any?, "Expected no event :#{name} to be tracked, but got #{events.map(&:params).inspect}" end |
#track_relay_test ⇒ TrackRelay::Subscribers::Test
Return the active Test subscriber, or raise a helpful message if TrackRelay.test_mode! has not been called yet.
34 35 36 37 |
# File 'lib/track_relay/testing/minitest_assertions.rb', line 34 def track_relay_test TrackRelay.test_subscriber || raise("Call TrackRelay.test_mode! before using assert_tracked / refute_tracked") end |