summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/tracking_spec.rb
blob: 805bd92fd439f9d9ca9248f6c6276d71f7de72f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# frozen_string_literal: true
require 'spec_helper'

RSpec.describe Gitlab::Tracking do
  before do
    stub_application_setting(snowplow_enabled: true)
    stub_application_setting(snowplow_collector_hostname: 'gitfoo.com')
    stub_application_setting(snowplow_cookie_domain: '.gitfoo.com')
    stub_application_setting(snowplow_app_id: '_abc123_')

    described_class.instance_variable_set("@snowplow", nil)
  end

  describe '.snowplow_options' do
    it 'returns useful client options' do
      expected_fields = {
        namespace: 'gl',
        hostname: 'gitfoo.com',
        cookieDomain: '.gitfoo.com',
        appId: '_abc123_',
        formTracking: true,
        linkClickTracking: true
      }

      expect(subject.snowplow_options(nil)).to match(expected_fields)
    end

    it 'when feature flag is disabled' do
      stub_feature_flags(additional_snowplow_tracking: false)

      expect(subject.snowplow_options(nil)).to include(
        formTracking: false,
        linkClickTracking: false
      )
    end
  end

  describe '.event' do
    it 'delegates to snowplow destination' do
      expect_any_instance_of(Gitlab::Tracking::Destinations::Snowplow)
        .to receive(:event)
        .with('category', 'action', label: 'label', property: 'property', value: 1.5, context: nil)

      described_class.event('category', 'action', label: 'label', property: 'property', value: 1.5)
    end
  end

  describe '.self_describing_event' do
    it 'delegates to snowplow destination' do
      expect_any_instance_of(Gitlab::Tracking::Destinations::Snowplow)
        .to receive(:self_describing_event)
        .with('iglu:com.gitlab/foo/jsonschema/1-0-0', { foo: 'bar' }, context: nil)

      described_class.self_describing_event('iglu:com.gitlab/foo/jsonschema/1-0-0', foo: 'bar')
    end
  end
end