Class: OpenStax::Salesforce::SpecHelpers::SalesforceProxy

Inherits:
Object
  • Object
show all
Includes:
Remote
Defined in:
lib/openstax/salesforce/spec_helpers.rb

Instance Method Summary collapse

Constructor Details

#initializeSalesforceProxy

Returns a new instance of SalesforceProxy.



61
62
63
64
# 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

Instance Method Details

#book(name) ⇒ Object



155
156
157
# File 'lib/openstax/salesforce/spec_helpers.rb', line 155

def book(name)
  books.find { |bb| bb.name == name }
end

#book_id(name) ⇒ Object



159
160
161
# File 'lib/openstax/salesforce/spec_helpers.rb', line 159

def book_id(name)
  book(name).id
end

#booksObject



151
152
153
# File 'lib/openstax/salesforce/spec_helpers.rb', line 151

def books
  @books ||= OpenStax::Salesforce::Remote::Book.all
end

#clear_unique_tokenObject



71
72
73
# File 'lib/openstax/salesforce/spec_helpers.rb', line 71

def clear_unique_token
  @unique_token = nil
end

#ensure_books_exist(book_names) ⇒ Object



133
134
135
136
137
138
139
140
141
# 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) ⇒ Object



143
144
145
146
147
148
149
# 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) ⇒ Object



129
130
131
# 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)) ⇒ Object



108
109
110
111
112
113
114
115
116
# File 'lib/openstax/salesforce/spec_helpers.rb', line 108

def new_campaign(name: SecureRandom.hex(8))
  Campaign.new(
    name: name
  ).tap do |campaign|
    unless campaign.save
      raise "Could not save SF Campaign: #{campaign.errors}"
    end
  end
end

#new_campaign_member(contact_id:, campaign_id:) ⇒ Object



118
119
120
121
122
123
124
125
126
127
# 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|
    unless 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) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# 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|
    unless 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") ⇒ Object



94
95
96
97
98
99
100
101
102
103
104
105
106
# 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|
    unless lead.save
      raise "Could not save SF lead: #{lead.errors}"
    end
  end
end

#reset_unique_token(token = SecureRandom.hex(10)) ⇒ Object

Used to filter records to the scope of one spec



67
68
69
# File 'lib/openstax/salesforce/spec_helpers.rb', line 67

def reset_unique_token(token = SecureRandom.hex(10))
  @unique_token = token
end

#school(name) ⇒ Object



171
172
173
# File 'lib/openstax/salesforce/spec_helpers.rb', line 171

def school(name)
  schools.find { |ss| ss.name == name }
end

#school_id(name) ⇒ Object



167
168
169
# File 'lib/openstax/salesforce/spec_helpers.rb', line 167

def school_id(name)
  school(name).try(:id)
end

#schoolsObject



163
164
165
# File 'lib/openstax/salesforce/spec_helpers.rb', line 163

def schools
  @schools ||= OpenStax::Salesforce::Remote::School.all
end

#setup_cassetteObject



175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# 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