summaryrefslogtreecommitdiff
path: root/spec/requests/groups/email_campaigns_controller_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/requests/groups/email_campaigns_controller_spec.rb')
-rw-r--r--spec/requests/groups/email_campaigns_controller_spec.rb59
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