diff options
Diffstat (limited to 'spec/requests/groups/email_campaigns_controller_spec.rb')
-rw-r--r-- | spec/requests/groups/email_campaigns_controller_spec.rb | 59 |
1 files changed, 51 insertions, 8 deletions
diff --git a/spec/requests/groups/email_campaigns_controller_spec.rb b/spec/requests/groups/email_campaigns_controller_spec.rb index 930e645f6c0..a77f600ea1e 100644 --- a/spec/requests/groups/email_campaigns_controller_spec.rb +++ b/spec/requests/groups/email_campaigns_controller_spec.rb @@ -13,19 +13,19 @@ RSpec.describe Groups::EmailCampaignsController do let(:track) { 'create' } let(:series) { '0' } let(:schema) { described_class::EMAIL_CAMPAIGNS_SCHEMA_URL } + let(:subject_line_text) { subject_line(track.to_sym, series.to_i) } let(:data) do { namespace_id: group.id, track: track.to_sym, series: series.to_i, - subject_line: subject_line(track.to_sym, series.to_i) + subject_line: subject_line_text } end before do sign_in(user) group.add_developer(user) - allow(Gitlab::Tracking).to receive(:self_describing_event) end subject do @@ -34,16 +34,59 @@ RSpec.describe Groups::EmailCampaignsController do end shared_examples 'track and redirect' do - it do - is_expected.to track_self_describing_event(schema, data) - is_expected.to have_gitlab_http_status(:redirect) + it 'redirects' do + expect(subject).to have_gitlab_http_status(:redirect) + end + + context 'on .com' do + before do + allow(Gitlab).to receive(:com?).and_return(true) + end + + it 'emits a snowplow event', :snowplow do + subject + + expect_snowplow_event( + category: described_class.name, + action: 'click', + context: [{ + schema: described_class::EMAIL_CAMPAIGNS_SCHEMA_URL, + data: { namespace_id: group.id, series: series.to_i, subject_line: subject_line_text, track: track.to_s } + }] + ) + end + + it 'does not save the cta_click' do + expect(Users::InProductMarketingEmail).not_to receive(:save_cta_click) + + subject + end + end + + context 'when not on.com' do + it 'saves the cta_click' do + expect(Users::InProductMarketingEmail).to receive(:save_cta_click) + + subject + end + + it 'does not track snowplow events' do + subject + + expect_no_snowplow_event + end end end shared_examples 'no track and 404' do - it do - is_expected.not_to track_self_describing_event - is_expected.to have_gitlab_http_status(:not_found) + it 'returns 404' do + expect(subject).to have_gitlab_http_status(:not_found) + end + + it 'does not emit a snowplow event', :snowplow do + subject + + expect_no_snowplow_event end end |