Class: OpenStax::Salesforce::SpecHelpers::SalesforceProxy
- Inherits:
-
Object
- Object
- OpenStax::Salesforce::SpecHelpers::SalesforceProxy
- Includes:
- Remote
- Defined in:
- lib/openstax/salesforce/spec_helpers.rb
Instance Method Summary collapse
- #book(name) ⇒ Object
- #book_id(name) ⇒ Object
- #books ⇒ Object
- #clear_unique_token ⇒ Object
- #ensure_books_exist(book_names) ⇒ Object
- #ensure_schools_exist(school_names) ⇒ Object
-
#initialize ⇒ SalesforceProxy
constructor
A new instance of SalesforceProxy.
- #last_name!(input) ⇒ Object
- #new_campaign(name: SecureRandom.hex(8)) ⇒ Object
- #new_campaign_member(contact_id:, campaign_id:) ⇒ Object
- #new_contact(first_name: nil, last_name: nil, school_name: "RSpec University", email: nil, faculty_verified: nil) ⇒ Object
- #new_lead(email:, status: nil, last_name: nil, source: nil) ⇒ Object
-
#reset_unique_token(token = SecureRandom.hex(10)) ⇒ Object
Used to filter records to the scope of one spec.
- #school(name) ⇒ Object
- #school_id(name) ⇒ Object
- #schools ⇒ Object
- #setup_cassette ⇒ Object
Constructor Details
#initialize ⇒ SalesforceProxy
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 |
#books ⇒ Object
141 142 143 |
# File 'lib/openstax/salesforce/spec_helpers.rb', line 141 def books @books ||= OpenStax::Salesforce::Remote::Book.all end |
#clear_unique_token ⇒ Object
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.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 |
#schools ⇒ Object
153 154 155 |
# File 'lib/openstax/salesforce/spec_helpers.rb', line 153 def schools @schools ||= OpenStax::Salesforce::Remote::School.all end |
#setup_cassette ⇒ Object
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 |