diff options
Diffstat (limited to 'spec/support/helpers/snowplow_helpers.rb')
-rw-r--r-- | spec/support/helpers/snowplow_helpers.rb | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/spec/support/helpers/snowplow_helpers.rb b/spec/support/helpers/snowplow_helpers.rb new file mode 100644 index 00000000000..83a5b7e48bc --- /dev/null +++ b/spec/support/helpers/snowplow_helpers.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +module SnowplowHelpers + # Asserts call for one snowplow event from `Gitlab::Tracking#event`. + # + # @param [Hash] + # + # Examples: + # + # describe '#show', :snowplow do + # it 'tracks snowplow events' do + # get :show + # + # expect_snowplow_event(category: 'Experiment', action: 'start') + # end + # end + # + # describe '#create', :snowplow do + # it 'tracks snowplow events' do + # post :create + # + # expect_snowplow_event( + # category: 'Experiment', + # action: 'created', + # ) + # expect_snowplow_event( + # category: 'Experiment', + # action: 'accepted', + # property: 'property', + # label: 'label' + # ) + # end + # end + def expect_snowplow_event(category:, action:, **kwargs) + expect(Gitlab::Tracking).to have_received(:event) + .with(category, action, **kwargs).at_least(:once) + end + + # Asserts that no call to `Gitlab::Tracking#event` was made. + # + # Example: + # + # describe '#show', :snowplow do + # it 'does not track any snowplow events' do + # get :show + # + # expect_no_snowplow_event + # end + # end + def expect_no_snowplow_event + expect(Gitlab::Tracking).not_to have_received(:event) + end +end |