Skip to content

Instantly share code, notes, and snippets.

@bogdan
Created August 4, 2015 08:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bogdan/31eb389c0399f4165b12 to your computer and use it in GitHub Desktop.
Save bogdan/31eb389c0399f4165b12 to your computer and use it in GitHub Desktop.
# == Schema Information
#
# Table name: referrals
#
# id :integer not null, primary key
# referred_origin_id :integer not null
# offer_id :integer
# self_referral :boolean default(FALSE), not null
# cross_referral :boolean default(FALSE), not null
# fraud :boolean default(FALSE), not null
# created_at :datetime
# updated_at :datetime
# site_id :integer not null
# campaign_id :integer not null
# status :string(20) default("in_progress"), not null
# visitor_offer_id :integer not null
# webhook_status :string(10) default("not_sent"), not null
# is_curebit_sale_2 :boolean default(FALSE)
# track_method :string(20)
# referred_subtotal :decimal(25, 2)
# qa_generated :boolean default(FALSE), not null
# ad_redeemed :boolean default(FALSE), not null
#
FactoryGirl.define do
factory :referral do
skip_create
transient do
offer do
create(:affiliate_offer, :with_person, campaign: campaign)
end
share do
create(:social_offer_share, offer: offer)
end
campaign do
create(:affiliate_campaign)
end
referred_subtotal 100
referred_order_number do
rand(10**10)
end
referred_email do
generate(:email)
end
visitor_offer do
create(:visitor_offer, share: share)
end
referred_purchase do
create(:purchase,
site: visitor_offer.site,
subtotal: referred_subtotal,
order_number: referred_order_number,
visitor: visitor_offer.visitor,
email: referred_email,
)
end
end
trait :self_referral do
transient do
referred_purchase do
create(:purchase,
person: offer.person,
offer: offer,
subtotal: referred_subtotal,
order_number: referred_order_number,
)
end
end
end
initialize_with do
# referral engine launches automatically
# if the tracking method match (cookie in this case)
# we can't create referral directly because it will be double
# generated by #launch_referral_engine!
referred_purchase.referral || raise('not built')
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment