56 lines
1.7 KiB
Ruby
56 lines
1.7 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
RSpec.describe Gitlab::Tracking::Destinations::Snowplow do
|
||
|
let(:emitter) { SnowplowTracker::Emitter.new('localhost', buffer_size: 1) }
|
||
|
let(:tracker) { SnowplowTracker::Tracker.new(emitter, SnowplowTracker::Subject.new, 'namespace', 'app_id') }
|
||
|
|
||
|
before do
|
||
|
stub_application_setting(snowplow_collector_hostname: 'gitfoo.com')
|
||
|
stub_application_setting(snowplow_app_id: '_abc123_')
|
||
|
end
|
||
|
|
||
|
around do |example|
|
||
|
freeze_time { example.run }
|
||
|
end
|
||
|
|
||
|
context 'when snowplow is enabled' do
|
||
|
before do
|
||
|
stub_application_setting(snowplow_enabled: true)
|
||
|
|
||
|
expect(SnowplowTracker::AsyncEmitter)
|
||
|
.to receive(:new)
|
||
|
.with('gitfoo.com', { protocol: 'https' })
|
||
|
.and_return(emitter)
|
||
|
|
||
|
expect(SnowplowTracker::Tracker)
|
||
|
.to receive(:new)
|
||
|
.with(emitter, an_instance_of(SnowplowTracker::Subject), Gitlab::Tracking::SNOWPLOW_NAMESPACE, '_abc123_')
|
||
|
.and_return(tracker)
|
||
|
end
|
||
|
|
||
|
describe '#event' do
|
||
|
it 'sends event to tracker' do
|
||
|
allow(tracker).to receive(:track_struct_event).and_call_original
|
||
|
|
||
|
subject.event('category', 'action', label: 'label', property: 'property', value: 1.5)
|
||
|
|
||
|
expect(tracker)
|
||
|
.to have_received(:track_struct_event)
|
||
|
.with('category', 'action', 'label', 'property', 1.5, nil, (Time.now.to_f * 1000).to_i)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when snowplow is not enabled' do
|
||
|
describe '#event' do
|
||
|
it 'does not send event to tracker' do
|
||
|
expect_any_instance_of(SnowplowTracker::Tracker).not_to receive(:track_struct_event)
|
||
|
|
||
|
subject.event('category', 'action', label: 'label', property: 'property', value: 1.5)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|