* Record billboard signup conversions * Update app/models/billboard_event.rb * Modify click tracking
40 lines
1.5 KiB
Ruby
40 lines
1.5 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe BillboardEvent do
|
|
it { is_expected.to validate_inclusion_of(:category).in_array(described_class::VALID_CATEGORIES) }
|
|
|
|
it { is_expected.to validate_inclusion_of(:context_type).in_array(described_class::VALID_CONTEXT_TYPES) }
|
|
|
|
describe "#unique_on_user_if_signup_conversion" do
|
|
let(:user) { create(:user) }
|
|
let(:billboard_event) { build(:billboard_event, category: "signup", user: user) }
|
|
|
|
it "adds an error if user has already converted a signup" do
|
|
create(:billboard_event, category: "signup", user: user)
|
|
billboard_event.valid?
|
|
expect(billboard_event.errors[:user_id]).to include("has already converted a signup")
|
|
end
|
|
|
|
it "does not add an error if not a signup" do
|
|
billboard_event.category = "click"
|
|
billboard_event.valid?
|
|
expect(billboard_event.errors[:user_id]).to be_empty
|
|
end
|
|
end
|
|
|
|
describe "#only_recent_registrations" do
|
|
let(:user) { create(:user, registered_at: 2.days.ago) }
|
|
let(:billboard_event) { build(:billboard_event, category: "signup", user: user) }
|
|
|
|
it "adds an error if user is not a recent registration" do
|
|
billboard_event.valid?
|
|
expect(billboard_event.errors[:user_id]).to include("is not a recent registration")
|
|
end
|
|
|
|
it "does not add an error if user is a recent registration" do
|
|
user.update(registered_at: 23.hours.ago)
|
|
billboard_event.valid?
|
|
expect(billboard_event.errors[:user_id]).to be_empty
|
|
end
|
|
end
|
|
end
|