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: "JP University", email: nil, email_alt: nil, faculty_verified: nil, school_type: nil) ⇒ Object
- #new_lead(email:, status: nil, last_name: nil, source: nil, school_name: "JP University") ⇒ 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
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 |
#books ⇒ Object
151 152 153 |
# File 'lib/openstax/salesforce/spec_helpers.rb', line 151 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
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 |
#schools ⇒ Object
163 164 165 |
# File 'lib/openstax/salesforce/spec_helpers.rb', line 163 def schools @schools ||= OpenStax::Salesforce::Remote::School.all end |
#setup_cassette ⇒ Object
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 |