openstax_salesforce 1.3.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: eb0facc55a7d6ccdad9f52f85623a0bfcf4235f5
4
- data.tar.gz: e87e35a07e7f217b9ac3664777ea44a61ed90402
2
+ SHA256:
3
+ metadata.gz: 74d422ed32aa0879b27422340bad963cd7ca7cf1a7ae551d33d4deb24877a819
4
+ data.tar.gz: 5e2c2d2ae2ee4cbb435f4392bd79068bef5154e9ad456a402f12a9b564ad1d38
5
5
  SHA512:
6
- metadata.gz: 43a784f1ab17065088efe0478c27f2a02c6cf1b10d0d2a4aa8c12358aada2b51f805bad92ab75f62e5892cdf2b1df68f1e3c80d543c9de6d1875efcc5e068236
7
- data.tar.gz: 760ed6b79aa13cba5ae18f4d2f723fb5e500b2c3a8a1faacad6e5a82da1ca972e65aade30b960284c336d49f004400c2775aab39ccc1c0cfa99de5d66d69da13
6
+ metadata.gz: 6a0becf88d28651d0bb0ba0239ce1c0584be4a4d7995a2804db9d2ec5a1e031c0c4d284cde749dc1f29b4840ae0b31f4c7ec887d380570833c128dc05a45a2bb
7
+ data.tar.gz: e15359158438e0fe020a51747cc9916469f1eb96e40e40aecb8880f839b53557816ad2265aee2b235d0e8168051214db6102717ef04ac213b69dc8cecdd00a35
@@ -0,0 +1,49 @@
1
+ module OpenStax::Salesforce::Remote
2
+ class TutorCoursePeriod < ActiveForce::SObject
3
+
4
+ field :num_teachers, from: "Active_Teachers__c", as: :int
5
+ field :base_year, from: "Base_Year__c", as: :int
6
+ field :book_name, from: "Book_Name__c"
7
+ field :contact_id, from: "Contact__c"
8
+ field :course_code, from: "Course_Code__c"
9
+ field :course_name, from: "Course_Name__c"
10
+ field :course_start_date, from: "Course_Start_Date__c", as: :date
11
+ field :created_at, from: "E_Created_Date__c", as: :datetime
12
+ field :teacher_email, from: "Email__c"
13
+ field :error, from: "Error__c"
14
+ field :estimated_enrollment, from: "Estimated_Enrollment__c", as: :int
15
+ field :course_id, from: "External_ID__c"
16
+ field :course_uuid, from: "External_UUID__c"
17
+ field :latest_adoption_decision, from: "Latest_Adoption_Decision__c"
18
+ field :does_cost, from: "Paid_Course__c", as: :boolean
19
+ field :is_research, from: "Research_Project__c", as: :boolean
20
+ field :num_periods, from: "Sections__c", as: :int
21
+ field :status, from: "Status__c", as: :picklist
22
+ field :num_students_comped, from: "Students_Comped__c", as: :int
23
+ field :num_students_dropped, from: "Students_Dropped__c", as: :int
24
+ field :num_students_paid, from: "Students_Paid__c", as: :int
25
+ field :num_students_refunded, from: "Students_Refunded__c", as: :int
26
+ field :num_students, from: "Students_Using__c", as: :int
27
+ field :num_students_with_work, from: "Students_With_Work__c", as: :int
28
+ field :period_uuid, from: "Period_UUID__c"
29
+ field :term, from: "Term__c"
30
+ field :is_pilot, from: "Tutor_Pilot__c", as: :boolean
31
+
32
+ self.table_name = 'Tutor_Course__c'
33
+
34
+ def reset_stats
35
+ self.num_periods = 0
36
+ self.num_students = 0
37
+ self.num_students_comped = 0
38
+ self.num_students_dropped = 0
39
+ self.num_students_paid = 0
40
+ self.num_students_refunded = 0
41
+ self.num_students_with_work = 0
42
+ self.num_teachers = 0
43
+ end
44
+
45
+ STATUS_APPROVED = "Approved"
46
+ STATUS_ARCHIVED = "ArchivedPeriod"
47
+
48
+ end
49
+ end
@@ -16,8 +16,7 @@ module OpenStax::Salesforce::SpecHelpers
16
16
  end
17
17
 
18
18
  def new_contact(first_name: nil, last_name: nil, school_name: "JP University",
19
- email: nil, email_alt: nil,
20
- faculty_verified: nil)
19
+ email: nil, email_alt: nil, faculty_verified: nil, school_type: nil)
21
20
  ensure_schools_exist([school_name])
22
21
 
23
22
  Contact.new(
@@ -26,7 +25,8 @@ module OpenStax::Salesforce::SpecHelpers
26
25
  school_id: school_id(school_name),
27
26
  email: email,
28
27
  email_alt: email_alt,
29
- faculty_verified: faculty_verified
28
+ faculty_verified: faculty_verified,
29
+ school_type: school_type
30
30
  ).tap do |contact|
31
31
  if !contact.save
32
32
  raise "Could not save SF contact: #{contact.errors}"
@@ -48,19 +48,6 @@ module OpenStax::Salesforce::SpecHelpers
48
48
  end
49
49
  end
50
50
 
51
- def new_tutor_onboarding_a(first_teacher_contact_id: nil, pardot_reported_contact_id: nil)
52
- raise "Not enough arguments given" if first_teacher_contact_id.nil? && pardot_reported_contact_id.nil?
53
-
54
- TutorOnboardingA.new(
55
- first_teacher_contact_id: first_teacher_contact_id,
56
- pardot_reported_contact_id: pardot_reported_contact_id
57
- ).tap do |toa|
58
- if !toa.save
59
- raise "Could not save SF TOA: #{toa.errors}"
60
- end
61
- end
62
- end
63
-
64
51
  def new_campaign(name: SecureRandom.hex(8))
65
52
  Campaign.new(
66
53
  name: name
@@ -1,5 +1,5 @@
1
1
  module OpenStax
2
2
  module Salesforce
3
- VERSION = "1.3.0"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
@@ -12,12 +12,9 @@ require "openstax/salesforce/remote/term_year"
12
12
  require "openstax/salesforce/remote/book"
13
13
  require "openstax/salesforce/remote/school"
14
14
  require "openstax/salesforce/remote/opportunity"
15
- require "openstax/salesforce/remote/individual_adoption"
16
- require "openstax/salesforce/remote/class_size"
17
- require "openstax/salesforce/remote/os_ancillary"
15
+ require "openstax/salesforce/remote/tutor_course_period"
18
16
  require "openstax/salesforce/remote/contact"
19
17
  require "openstax/salesforce/remote/lead"
20
- require "openstax/salesforce/remote/tutor_onboarding_a"
21
18
  require "openstax/salesforce/remote/campaign"
22
19
  require "openstax/salesforce/remote/campaign_member"
23
20
 
@@ -0,0 +1,30 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe OpenStax::Salesforce::Remote::TutorCoursePeriod do
4
+
5
+ subject { described_class.new }
6
+
7
+ it 'can reset stats' do
8
+ subject.num_periods = 1
9
+ subject.num_students = 8
10
+ subject.num_students_comped = 7
11
+ subject.num_students_dropped = 6
12
+ subject.num_students_paid = 5
13
+ subject.num_students_refunded = 4
14
+ subject.num_students_with_work = 3
15
+ subject.num_teachers = 2
16
+
17
+ subject.reset_stats
18
+
19
+ expect(subject.num_periods).to eq 0
20
+ expect(subject.num_students).to eq 0
21
+ expect(subject.num_students_comped).to eq 0
22
+ expect(subject.num_students_dropped).to eq 0
23
+ expect(subject.num_students_paid).to eq 0
24
+ expect(subject.num_students_refunded).to eq 0
25
+ expect(subject.num_students_paid).to eq 0
26
+ expect(subject.num_students_with_work).to eq 0
27
+ expect(subject.num_teachers).to eq 0
28
+ end
29
+
30
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstax_salesforce
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JP Slavinsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-28 00:00:00.000000000 Z
11
+ date: 2018-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -189,15 +189,12 @@ files:
189
189
  - lib/openstax/salesforce/remote/book.rb
190
190
  - lib/openstax/salesforce/remote/campaign.rb
191
191
  - lib/openstax/salesforce/remote/campaign_member.rb
192
- - lib/openstax/salesforce/remote/class_size.rb
193
192
  - lib/openstax/salesforce/remote/contact.rb
194
- - lib/openstax/salesforce/remote/individual_adoption.rb
195
193
  - lib/openstax/salesforce/remote/lead.rb
196
194
  - lib/openstax/salesforce/remote/opportunity.rb
197
- - lib/openstax/salesforce/remote/os_ancillary.rb
198
195
  - lib/openstax/salesforce/remote/school.rb
199
196
  - lib/openstax/salesforce/remote/term_year.rb
200
- - lib/openstax/salesforce/remote/tutor_onboarding_a.rb
197
+ - lib/openstax/salesforce/remote/tutor_course_period.rb
201
198
  - lib/openstax/salesforce/spec_helpers.rb
202
199
  - lib/openstax/salesforce/spec_helpers/salesforce_proxy.rb
203
200
  - lib/openstax/salesforce/user_missing.rb
@@ -246,8 +243,8 @@ files:
246
243
  - spec/openstax/salesforce/controllers/application_controller_spec.rb
247
244
  - spec/openstax/salesforce/controllers/settings_controller_spec.rb
248
245
  - spec/openstax/salesforce/remote/opportunity_spec.rb
249
- - spec/openstax/salesforce/remote/os_ancillary_spec.rb
250
246
  - spec/openstax/salesforce/remote/term_year_spec.rb
247
+ - spec/openstax/salesforce/remote/tutor_course_period_spec.rb
251
248
  - spec/openstax/salesforce/spec_helpers_spec.rb
252
249
  - spec/rails_helper.rb
253
250
  - spec/routing_spec.rb
@@ -272,7 +269,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
272
269
  version: '0'
273
270
  requirements: []
274
271
  rubyforge_project:
275
- rubygems_version: 2.4.5.1
272
+ rubygems_version: 2.7.3
276
273
  signing_key:
277
274
  specification_version: 4
278
275
  summary: Interface gem for accessing OpenStax's Salesforce instance
@@ -319,9 +316,9 @@ test_files:
319
316
  - spec/openstax/salesforce/spec_helpers_spec.rb
320
317
  - spec/openstax/salesforce/controllers/settings_controller_spec.rb
321
318
  - spec/openstax/salesforce/controllers/application_controller_spec.rb
322
- - spec/openstax/salesforce/remote/os_ancillary_spec.rb
323
319
  - spec/openstax/salesforce/remote/term_year_spec.rb
324
320
  - spec/openstax/salesforce/remote/opportunity_spec.rb
321
+ - spec/openstax/salesforce/remote/tutor_course_period_spec.rb
325
322
  - spec/factories/user.rb
326
323
  - spec/routing_spec.rb
327
324
  - spec/rails_helper.rb
@@ -1,57 +0,0 @@
1
- module OpenStax::Salesforce::Remote
2
- class ClassSize < ActiveForce::SObject
3
-
4
- field :concept_coach_approved, from: "Concept_Coach_Approved__c", as: :boolean
5
- field :course_name, from: "Course_Name__c"
6
- field :course_id, from: "Tutor_ID__c"
7
- field :created_at, from: "Tutor_Created_Date__c", as: :datetime
8
- field :num_students, from: "Student_using_Tutor__c", as: :int
9
- field :num_teachers, from: "Active_Teachers__c", as: :int
10
- field :num_sections, from: "Number_of_Sections__c", as: :int
11
- field :teacher_join_url, from: "Teacher_Join_URL__c"
12
- field :error, from: "Tutor_Error__c"
13
- field :book_name, from: "Book_Name__c"
14
- field :school, from: "School__c"
15
- field :term_year, from: "TermYear__c"
16
- field :opportunity_id, from: 'Opportunity__c'
17
- field :os_ancillary_id, from: "OSA__c"
18
-
19
- belongs_to :opportunity, model: OpenStax::Salesforce::Remote::Opportunity
20
-
21
- self.table_name = 'Class_Size__c'
22
-
23
- def term_year_object
24
- @term_year_object ||= OpenStax::Salesforce::Remote::TermYear.from_string(self.term_year)
25
- end
26
-
27
- def reset_stats
28
- self.num_students = 0
29
- self.num_teachers = 0
30
- self.num_sections = 0
31
- end
32
-
33
- # Methods to make this legacy SF object compatible with current OsAncillary interface.
34
- # All ClassSize records were used for college CC courses.
35
-
36
- def is_tutor?
37
- false
38
- end
39
-
40
- def is_concept_coach?
41
- true
42
- end
43
-
44
- def valid_product?
45
- true
46
- end
47
-
48
- def is_college?
49
- true
50
- end
51
-
52
- def product
53
- "Concept Coach"
54
- end
55
-
56
- end
57
- end
@@ -1,31 +0,0 @@
1
- module OpenStax::Salesforce::Remote
2
- class IndividualAdoption < ActiveForce::SObject
3
-
4
- field :book_name, from: "Book_Text__c"
5
- field :contact_id, from: "Contact__c"
6
- field :book_id, from: "Book__c"
7
- field :school_id, from: "Account__c"
8
- field :school_year, from: "School_Year__c"
9
- field :fall_start_date, from: "Fall_Start_Date__c"
10
- field :summer_start_date, from: "Summer_Start_Date__c"
11
- field :winter_start_date, from: "Winter_Start_Date__c"
12
- field :spring_start_date, from: "Spring_Start_Date__c"
13
- field :adoption_level, from: "Adoption_Level__c"
14
- field :description, from: "Description__c"
15
- field :source, from: "Source__c"
16
-
17
- # Deprecated
18
- field :term_year, from: "TermYear__c"
19
- field :class_start_date, from: "Class_Start_Date__c"
20
-
21
- belongs_to :school, model: OpenStax::Salesforce::Remote::School
22
- belongs_to :book, model: OpenStax::Salesforce::Remote::Book
23
-
24
- self.table_name = 'Individual_Adoption__c'
25
-
26
- def term_year_object
27
- @term_year_object ||= OpenStax::Salesforce::Remote::TermYear.from_string(term_year)
28
- end
29
-
30
- end
31
- end
@@ -1,103 +0,0 @@
1
- module OpenStax::Salesforce::Remote
2
- class OsAncillary < ActiveForce::SObject
3
-
4
- field :status, from: "Status__c", as: :picklist
5
- field :product, from: "Product__c", as: :picklist
6
- field :account_type, from: "Account_Type__c"
7
- field :book_name, from: "Book_Name__c"
8
- field :course_start_date, from: "Course_Start_Date__c", as: :date
9
- field :course_name, from: "Course_Name__c"
10
- field :course_code, from: "Course_Code__c"
11
- field :course_id, from: "External_ID__c"
12
- field :course_uuid, from: "External_UUID__c"
13
- field :created_at, from: "E_Created_Date__c", as: :datetime
14
- field :error, from: "Error__c"
15
- field :general_access_url, from: "General_Access_URL__c"
16
- field :teacher_join_url, from: "Teacher_Join_URL__c"
17
- field :school, from: "School_Name__c"
18
- field :num_teachers, from: "Active_Teachers__c", as: :int
19
- field :num_sections, from: "Sections__c", as: :int
20
- field :num_students, from: "Students_Using__c", as: :int
21
- field :num_students_paid, from: "Students_Paid__c", as: :int
22
- field :num_students_comped, from: "Students_Comped__c", as: :int
23
- field :num_students_refunded, from: "Students_Refunded__c", as: :int
24
- field :num_students_dropped, from: "Students_Dropped__c", as: :int
25
- field :num_students_with_work, from: "Students_With_Work__c", as: :int
26
- field :term_year, from: "TermYear__c"
27
- field :term, from: "Term__c"
28
- field :base_year, from: "Manual_Base_Year__c", as: :int
29
- field :estimated_enrollment, from: "Estimated_Enrollment__c", as: :int
30
- field :does_cost, from: "Paid_Course__c", as: :boolean
31
- field :opportunity_id, from: 'Opportunity__c'
32
- field :individual_adoption_id, from: "Individual_Adoption__c"
33
- field :contact_id, from: "Contact__c"
34
- field :campaign_member_id, from: "Campaign_Member_ID__c"
35
- field :latest_adoption_decision, from: "latest_adoption_decision__c"
36
-
37
- belongs_to :opportunity, model: OpenStax::Salesforce::Remote::Opportunity
38
-
39
- self.table_name = 'OS_Ancillary__c'
40
-
41
- def reset_stats
42
- self.num_students = 0
43
- self.num_students_paid = 0
44
- self.num_students_comped = 0
45
- self.num_students_refunded = 0
46
- self.num_students_dropped = 0
47
- self.num_students_with_work = 0
48
- self.num_teachers = 0
49
- self.num_sections = 0
50
- end
51
-
52
- def is_concept_coach?
53
- "Concept Coach" == product
54
- end
55
-
56
- def is_tutor?
57
- "Tutor" == product
58
- end
59
-
60
- def valid_product?
61
- ["Tutor", "Concept Coach"].include?(product)
62
- end
63
-
64
- def term_year_object
65
- @term_year_object ||= OpenStax::Salesforce::Remote::TermYear.from_string(self.term_year)
66
- end
67
-
68
- def is_college?
69
- # Seems like college account types are more likely to be added to
70
- # more than high school types, so match non college types and negate
71
- !NON_COLLEGE_ACCOUNT_TYPES.include?(account_type)
72
- end
73
-
74
- # TODO warn somewhere if come across unknown account type
75
- def known_account_type?
76
- ACCOUNT_TYPES.include(account_type)
77
- end
78
-
79
- NON_COLLEGE_ACCOUNT_TYPES = [
80
- "High School",
81
- "Elementary School",
82
- "Middle/Junior High School",
83
- "K-12 School"
84
- ]
85
-
86
- # Unused, here for posterity
87
- COLLEGE_ACCOUNT_TYPES = [
88
- "College/University (4)",
89
- "Technical/Community College (2)",
90
- "Career School/For-Profit (2)",
91
- "For-Profit Tutoring",
92
- ]
93
-
94
- ACCOUNT_TYPES = [
95
- COLLEGE_ACCOUNT_TYPES,
96
- NON_COLLEGE_ACCOUNT_TYPES,
97
- "Other"
98
- ].flatten
99
-
100
- STATUS_APPROVED = "Approved"
101
-
102
- end
103
- end
@@ -1,33 +0,0 @@
1
- module OpenStax::Salesforce::Remote
2
- class TutorOnboardingA < ActiveForce::SObject
3
-
4
- field :accounts_uuid, from: "accounts_uuid__c"
5
-
6
- field :contact_id, from: "Contact__c"
7
-
8
- field :pardot_reported_contact_id, from: "pardot_reported_contact_id__c"
9
- field :pardot_reported_piaid, from: "pardot_reported_piaid__c"
10
- field :pardot_reported_picid, from: "pardot_reported_picid__c"
11
-
12
- field :first_teacher_contact_id, from: "first_teacher_contact_id__c"
13
-
14
- field :arrived_marketing_page_from_pardot_at, from: "arrived_marketing_page_from_pardot_at__c", as: :datetime
15
- field :days_since_arrived_marketing_page_from_pardot, from: "days_since_arrived_marketing_page_from_p__c", as: :double
16
- field :arrived_marketing_page_not_from_pardot_at, from: "arrived_marketing_page_not_from_pardot_a__c", as: :datetime
17
- field :days_since_arrived_marketing_page_not_from_pardot, from: "days_since_arrived_marketing_page_from_p__c", as: :double
18
- field :preview_created_at, from: "preview_created_at__c", as: :datetime
19
- field :real_course_created_at, from: "real_course_created_at__c", as: :datetime
20
- field :like_preview_ask_later_count, from: "like_preview_ask_later_count__c", as: :int
21
- field :like_preview_yes_at, from: "like_preview_yes_at__c", as: :datetime
22
- field :days_since_like_preview_yes, from: "days_since_like_preview_yes__c", as: :double
23
- field :latest_adoption_decision, from: "latest_adoption_decision__c", as: :picklist
24
- field :latest_adoption_decision_at, from: "latest_adoption_decision_at__c", as: :datetime
25
-
26
- belongs_to :contact, model: OpenStax::Salesforce::Remote::Contact
27
- belongs_to :first_teacher_contact, model: OpenStax::Salesforce::Remote::Contact
28
- belongs_to :pardot_reported_contact, model: OpenStax::Salesforce::Remote::Contact
29
-
30
- self.table_name = 'TutorOnboardingA__c'
31
-
32
- end
33
- end
@@ -1,35 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe OpenStax::Salesforce::Remote::OsAncillary do
4
-
5
- context 'when product is Concept Coach' do
6
- subject { described_class.new(product: "Concept Coach") }
7
-
8
- it { is_expected.to be_is_concept_coach }
9
- it { is_expected.not_to be_is_tutor }
10
- it { is_expected.to be_valid_product }
11
- end
12
-
13
- context 'when product is Tutor' do
14
- subject { described_class.new(product: "Tutor") }
15
-
16
- it { is_expected.not_to be_is_concept_coach }
17
- it { is_expected.to be_is_tutor }
18
- it { is_expected.to be_valid_product }
19
- end
20
-
21
- context 'when product is nil' do
22
- subject { described_class.new }
23
-
24
- it { is_expected.not_to be_is_concept_coach }
25
- it { is_expected.not_to be_is_tutor }
26
- it { is_expected.not_to be_valid_product }
27
- end
28
-
29
- it 'knows which account types are for college' do
30
- described_class::COLLEGE_ACCOUNT_TYPES.each do |college_type|
31
- expect(described_class.new(account_type: college_type)).to be_is_college
32
- end
33
- end
34
-
35
- end