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



145
146
147
# File 'lib/openstax/salesforce/spec_helpers.rb', line 145

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

#book_id(name) ⇒ Object



149
150
151
# File 'lib/openstax/salesforce/spec_helpers.rb', line 149

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

#booksObject



141
142
143
# File 'lib/openstax/salesforce/spec_helpers.rb', line 141

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



123
124
125
126
127
128
129
130
131
# File 'lib/openstax/salesforce/spec_helpers.rb', line 123

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



133
134
135
136
137
138
139
# File 'lib/openstax/salesforce/spec_helpers.rb', line 133

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



119
120
121
# File 'lib/openstax/salesforce/spec_helpers.rb', line 119

def last_name!(input)
  "#{input || Faker::Name.last_name}#{@unique_token if @unique_token.present?}"
end

#new_campaign(name: SecureRandom.hex(8)) ⇒ Object



102
103
104
105
106
107
108
# File 'lib/openstax/salesforce/spec_helpers.rb', line 102

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

#new_campaign_member(contact_id:, campaign_id:) ⇒ Object



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

def new_campaign_member(contact_id:, campaign_id:)
  CampaignMember.new(
    contact_id: contact_id,
    campaign_id: campaign_id
  ).tap do |campaign_member|
    raise "Could not save SF Campaign Member: #{campaign_member.errors}" unless campaign_member.save
  end
end

#new_contact(first_name: nil, last_name: nil, school_name: "RSpec University", email: nil, faculty_verified: nil) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/openstax/salesforce/spec_helpers.rb', line 75

def new_contact(first_name: nil, last_name: nil, school_name: "RSpec University",
                email: nil, faculty_verified: nil)
  ensure_schools_exist([school_name])

  Contact.new(
    first_name: first_name || Faker::Name.first_name,
    last_name: last_name || Faker::Name.last_name,
    school_id: school_id(school_name),
    email: email || Faker::Internet.safe_email,
    faculty_verified: faculty_verified
  ).tap do |contact|
    raise "Could not save SF contact: #{contact.errors}" unless contact.save
  end
end

#new_lead(email:, status: nil, last_name: nil, source: nil) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
# File 'lib/openstax/salesforce/spec_helpers.rb', line 90

def new_lead(email:, status: nil, last_name: nil, source: nil)
  Lead.new(
    email: email,
    status: status,
    last_name: last_name!(last_name),
    school: 'RSpec University',
    source: source
  ).tap do |lead|
    raise "Could not save SF lead: #{lead.errors}" unless lead.save
  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



161
162
163
# File 'lib/openstax/salesforce/spec_helpers.rb', line 161

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

#school_id(name) ⇒ Object



157
158
159
# File 'lib/openstax/salesforce/spec_helpers.rb', line 157

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

#schoolsObject



153
154
155
# File 'lib/openstax/salesforce/spec_helpers.rb', line 153

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

#setup_cassetteObject



165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'lib/openstax/salesforce/spec_helpers.rb', line 165

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