227 lines
7.4 KiB
Ruby
227 lines
7.4 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe Analytics do
|
|
let(:analytics_backend) { class_double("AnalyticsRuby", :analytics_backend) }
|
|
let(:user) { create(:user, email: "bob@example.com", accounts: [build(:account, name: "Courter Pint Brewery")]) }
|
|
let(:account) { user.primary_account }
|
|
|
|
before :each do
|
|
allow(analytics_backend).to receive(:identify)
|
|
allow(analytics_backend).to receive(:track)
|
|
end
|
|
|
|
describe "#track_user_sign_in" do
|
|
it "identifies user_id, email" do
|
|
expect(analytics_backend).to receive(:identify).with(
|
|
{
|
|
user_id: user.id,
|
|
traits: {
|
|
email: "bob@example.com",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(user, account, analytics_backend).track_user_sign_in(user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
|
|
it "tracks event with user_id and 'Sign In User', account, account_id, user_agent, ip" do
|
|
expect(analytics_backend).to receive(:track).with(
|
|
{
|
|
user_id: user.id,
|
|
event: "Sign In User",
|
|
properties: {
|
|
account: "Courter Pint Brewery",
|
|
account_id: user.primary_account.id,
|
|
user_agent: "Mozilla Firefox",
|
|
ip: "0.0.0.0",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(user, account, analytics_backend).track_user_sign_in(user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
end
|
|
|
|
describe "#track_guest_sign_up" do
|
|
it "identifies user_id, email" do
|
|
expect(analytics_backend).to receive(:identify).with(
|
|
{
|
|
user_id: user.id,
|
|
traits: {
|
|
email: "bob@example.com",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(user, account, analytics_backend).track_guest_sign_up(user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
|
|
it "tracks event with user_id and 'Guest User Sign Up', account, account_id, user_agent, ip" do
|
|
expect(analytics_backend).to receive(:track).with(
|
|
{
|
|
user_id: user.id,
|
|
event: "Guest User Sign Up",
|
|
properties: {
|
|
account: "Courter Pint Brewery",
|
|
account_id: user.primary_account.id,
|
|
user_agent: "Mozilla Firefox",
|
|
ip: "0.0.0.0",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(user, account, analytics_backend).track_guest_sign_up(user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
end
|
|
|
|
describe "#track_create_native_release" do
|
|
it "identifies anonymous_id" do
|
|
allow(SecureRandom).to receive(:uuid).and_return("securerandom")
|
|
|
|
expect(analytics_backend).to receive(:identify).with(
|
|
{
|
|
anonymous_id: "securerandom",
|
|
}
|
|
)
|
|
|
|
described_class.new(nil, nil, analytics_backend).track_create_native_release(release_type: MaterialRelease.to_s, account: build(:account), user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
|
|
it "tracks event with 'Release Signed', release type, account, account_id, user_agent, ip" do
|
|
allow(SecureRandom).to receive(:uuid).and_return("securerandom")
|
|
account = create(:account, name: "Courter Pint Brewery")
|
|
|
|
expect(analytics_backend).to receive(:track).with(
|
|
{
|
|
anonymous_id: "securerandom",
|
|
event: "Release Signed",
|
|
properties: {
|
|
release_type: MaterialRelease.to_s,
|
|
account: "Courter Pint Brewery",
|
|
account_id: account.id,
|
|
application: "web",
|
|
user_agent: "Mozilla Firefox",
|
|
ip: "0.0.0.0",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(nil, nil, analytics_backend).track_create_native_release(release_type: MaterialRelease.to_s, account: account, user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
end
|
|
|
|
describe "#track_create_non_native_release" do
|
|
it "identifies user_id, email" do
|
|
expect(analytics_backend).to receive(:identify).with(
|
|
{
|
|
user_id: user.id,
|
|
traits: {
|
|
email: "bob@example.com",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(user, account, analytics_backend).track_create_non_native_release(release_type: MaterialRelease.to_s, user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
|
|
it "tracks event with user_id and 'Release Imported', release type, account, account_id, user_agent, ip" do
|
|
expect(analytics_backend).to receive(:track).with(
|
|
{
|
|
user_id: user.id,
|
|
event: "Release Imported",
|
|
properties: {
|
|
release_type: MaterialRelease.to_s,
|
|
account: "Courter Pint Brewery",
|
|
account_id: user.primary_account.id,
|
|
user_agent: "Mozilla Firefox",
|
|
ip: "0.0.0.0",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(user, account, analytics_backend).track_create_non_native_release(release_type: MaterialRelease.to_s, user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
end
|
|
|
|
describe "#track_video_upload" do
|
|
it "identifies user_id, email" do
|
|
expect(analytics_backend).to receive(:identify).with(
|
|
{
|
|
user_id: user.id,
|
|
traits: {
|
|
email: "bob@example.com",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(user, account, analytics_backend).track_video_upload(user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
|
|
it "tracks event with user_id and 'Video Uploaded', account, account_id, user_agent, ip" do
|
|
expect(analytics_backend).to receive(:track).with(
|
|
{
|
|
user_id: user.id,
|
|
event: "Video Uploaded",
|
|
properties: {
|
|
account: "Courter Pint Brewery",
|
|
account_id: user.primary_account.id,
|
|
user_agent: "Mozilla Firefox",
|
|
ip: "0.0.0.0",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(user, account, analytics_backend).track_video_upload(user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
end
|
|
|
|
describe "#track_create_project" do
|
|
it "identifies user_id, email" do
|
|
expect(analytics_backend).to receive(:identify).with(
|
|
{
|
|
user_id: user.id,
|
|
traits: {
|
|
email: "bob@example.com",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(user, account, analytics_backend).track_create_project(user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
|
|
it "tracks event with user_id and 'Project Created', account, account_id, user_agent, ip" do
|
|
expect(analytics_backend).to receive(:track).with(
|
|
{
|
|
user_id: user.id,
|
|
event: "Project Created",
|
|
properties: {
|
|
account: "Courter Pint Brewery",
|
|
account_id: user.primary_account.id,
|
|
user_agent: "Mozilla Firefox",
|
|
ip: "0.0.0.0",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(user, account, analytics_backend).track_create_project(user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
|
|
it "tracks event with user_id and 'Contract Template Created', account, account_id, user_agent, ip" do
|
|
expect(analytics_backend).to receive(:track).with(
|
|
{
|
|
user_id: user.id,
|
|
event: "Contract Template Created",
|
|
properties: {
|
|
account: "Courter Pint Brewery",
|
|
account_id: user.primary_account.id,
|
|
user_agent: "Mozilla Firefox",
|
|
ip: "0.0.0.0",
|
|
},
|
|
}
|
|
)
|
|
|
|
described_class.new(user, account, analytics_backend).track_create_contract_template(user_agent: "Mozilla Firefox", user_ip: "0.0.0.0")
|
|
end
|
|
end
|
|
end
|