summaryrefslogtreecommitdiff
path: root/spec/services/namespaces/in_product_marketing_email_records_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/namespaces/in_product_marketing_email_records_spec.rb')
-rw-r--r--spec/services/namespaces/in_product_marketing_email_records_spec.rb55
1 files changed, 55 insertions, 0 deletions
diff --git a/spec/services/namespaces/in_product_marketing_email_records_spec.rb b/spec/services/namespaces/in_product_marketing_email_records_spec.rb
new file mode 100644
index 00000000000..e5f1b275f9c
--- /dev/null
+++ b/spec/services/namespaces/in_product_marketing_email_records_spec.rb
@@ -0,0 +1,55 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Namespaces::InProductMarketingEmailRecords do
+ let_it_be(:user) { create :user }
+
+ subject(:records) { described_class.new }
+
+ it 'initializes records' do
+ expect(subject.records).to match_array []
+ end
+
+ describe '#save!' do
+ before do
+ allow(Users::InProductMarketingEmail).to receive(:bulk_insert!)
+
+ records.add(user, :invite_team, 0)
+ records.add(user, :create, 1)
+ end
+
+ it 'bulk inserts added records' do
+ expect(Users::InProductMarketingEmail).to receive(:bulk_insert!).with(records.records)
+ records.save!
+ end
+
+ it 'resets its records' do
+ records.save!
+ expect(records.records).to match_array []
+ end
+ end
+
+ describe '#add' do
+ it 'adds a Users::InProductMarketingEmail record to its records' do
+ freeze_time do
+ records.add(user, :invite_team, 0)
+ records.add(user, :create, 1)
+
+ first, second = records.records
+
+ expect(first).to be_a Users::InProductMarketingEmail
+ expect(first.track.to_sym).to eq :invite_team
+ expect(first.series).to eq 0
+ expect(first.created_at).to eq Time.zone.now
+ expect(first.updated_at).to eq Time.zone.now
+
+ expect(second).to be_a Users::InProductMarketingEmail
+ expect(second.track.to_sym).to eq :create
+ expect(second.series).to eq 1
+ expect(second.created_at).to eq Time.zone.now
+ expect(second.updated_at).to eq Time.zone.now
+ end
+ end
+ end
+end