class OpenStax::Salesforce::SpecHelpers::SalesforceProxy

Public Class Methods

new() click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 61
def initialize
  # For cassette consistency, to ensure specs always get new tokens
  ActiveForce.clear_sfdc_client!
end

Public Instance Methods

book(name) click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 155
def book(name)
  books.find { |bb| bb.name == name }
end
book_id(name) click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 159
def book_id(name)
  book(name).id
end
books() click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 151
def books
  @books ||= OpenStax::Salesforce::Remote::Book.all
end
clear_unique_token() click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 71
def clear_unique_token
  @unique_token = nil
end
ensure_books_exist(book_names) click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 133
def ensure_books_exist(book_names)
  @books = OpenStax::Salesforce::Remote::Book.where(name: book_names).to_a

  (book_names - books.map(&:name)).each do |book_name|
    OpenStax::Salesforce::Remote::Book.new(
      name: book_name, annualization_number: [ 1.4, 1.6 ].sample
    ).save!
  end
end
ensure_schools_exist(school_names) click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 143
def ensure_schools_exist(school_names)
  @schools = OpenStax::Salesforce::Remote::School.where(name: school_names).to_a

  (school_names - schools.map(&:name)).each do |school_name|
    OpenStax::Salesforce::Remote::School.new(name: school_name).save!
  end
end
last_name!(input) click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 129
def last_name!(input)
  "#{input || Faker::Name.last_name}#{@unique_token if @unique_token.present?}"
end
new_campaign(name: SecureRandom.hex(8)) click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 108
def new_campaign(name: SecureRandom.hex(8))
  Campaign.new(
    name: name
  ).tap do |campaign|
    if !campaign.save
      raise "Could not save SF Campaign: #{campaign.errors}"
    end
  end
end
new_campaign_member(contact_id:, campaign_id:) click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 118
def new_campaign_member(contact_id:, campaign_id:)
  CampaignMember.new(
    contact_id: contact_id,
    campaign_id: campaign_id
  ).tap do |campaign_member|
    if !campaign_member.save
      raise "Could not save SF Campaign Member: #{campaign_member.errors}"
    end
  end
end
new_contact(first_name: nil, last_name: nil, school_name: "JP University", email: nil, email_alt: nil, faculty_verified: nil, school_type: nil) click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 75
def new_contact(first_name: nil, last_name: nil, school_name: "JP University",
                email: nil, email_alt: nil, faculty_verified: nil, school_type: nil)
  ensure_schools_exist([school_name])

  Contact.new(
    first_name: first_name || Faker::Name.first_name,
    last_name: last_name!(last_name),
    school_id: school_id(school_name),
    email: email,
    email_alt: email_alt,
    faculty_verified: faculty_verified,
    school_type: school_type
  ).tap do |contact|
    if !contact.save
      raise "Could not save SF contact: #{contact.errors}"
    end
  end
end
new_lead(email:, status: nil, last_name: nil, source: nil, school_name: "JP University") click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 94
def new_lead(email:, status: nil, last_name: nil, source: nil, school_name: "JP University")
  Lead.new(
    email: email,
    status: status,
    last_name: last_name!(last_name),
    school: school_name,
    source: source
  ).tap do |lead|
    if !lead.save
      raise "Could not save SF lead: #{lead.errors}"
    end
  end
end
reset_unique_token(token = SecureRandom.hex(10)) click to toggle source

Used to filter records to the scope of one spec

# File lib/openstax/salesforce/spec_helpers.rb, line 67
def reset_unique_token(token = SecureRandom.hex(10))
  @unique_token = token
end
school(name) click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 171
def school(name)
  schools.find { |ss| ss.name == name }
end
school_id(name) click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 167
def school_id(name)
  school(name).try(:id)
end
schools() click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 163
def schools
  @schools ||= OpenStax::Salesforce::Remote::School.all
end
setup_cassette() click to toggle source
# File lib/openstax/salesforce/spec_helpers.rb, line 175
def setup_cassette
  VCR.configure do |config|
    config.define_cassette_placeholder('<salesforce_instance_url>') do
      'https://example.salesforce.com'
    end
    config.define_cassette_placeholder('<salesforce_instance_url_lower>') do
      'https://example.salesforce.com'
    end
    authentication = ActiveForce.sfdc_client.authenticate!
    config.define_cassette_placeholder('<salesforce_instance_url>') do
      authentication.instance_url
    end
    config.define_cassette_placeholder('<salesforce_instance_url_lower>') do
      authentication.instance_url.downcase
    end
    config.define_cassette_placeholder('<salesforce_id>') do
      authentication.id
    end
    config.define_cassette_placeholder('<salesforce_access_token>') do
      authentication.access_token
    end
    config.define_cassette_placeholder('<salesforce_signature>') do
      authentication.signature
    end
  end
end