openstax_salesforce 1.3.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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