diff --git a/app/jobs/salesforce/lesson_sync_job.rb b/app/jobs/salesforce/lesson_sync_job.rb index a7fdc23c8..c5035a9ac 100644 --- a/app/jobs/salesforce/lesson_sync_job.rb +++ b/app/jobs/salesforce/lesson_sync_job.rb @@ -29,7 +29,7 @@ def perform(lesson_id:) def sf_lesson_attributes(lesson:) mapped_attributes(lesson:).merge( teacherprojecttitle__c: lesson.project&.name, - teacherprojecttype__c: lesson.project&.project_type, + teacherprojecttype__c: project_type_attribute(lesson), numberofassignedprojects__c: assigned_projects_count(lesson), # Sum of the two completion paths: state-machine `:submitted` (Code Editor flow) # and `school_projects.finished` (Experience CS flow). They are mutually exclusive @@ -49,6 +49,12 @@ def mapped_attributes(lesson:) end end + def project_type_attribute(lesson) + return Project::Types::SCRATCH if lesson.project&.origin == Project::Origins::EXPERIENCE_CS + + lesson.project&.project_type + end + # A lesson is "assigned" to every student in its class iff it's visible to them # (visibility == 'students'). Other visibilities aren't assigned to students at all. def assigned_projects_count(lesson) diff --git a/spec/jobs/salesforce/lesson_sync_job_spec.rb b/spec/jobs/salesforce/lesson_sync_job_spec.rb index f52070176..495f17575 100644 --- a/spec/jobs/salesforce/lesson_sync_job_spec.rb +++ b/spec/jobs/salesforce/lesson_sync_job_spec.rb @@ -43,6 +43,17 @@ end end + context 'when the lesson project originates from Experience CS' do + Project::EXPERIENCE_CS_PROJECT_TYPES.each do |project_type| + it "syncs teacherprojecttype__c as scratch when the underlying project_type is #{project_type}" do + lesson.project.update!(origin: Project::Origins::EXPERIENCE_CS, project_type:) + perform_job + sf_lesson = Salesforce::Lesson.find_by(lesson_uuid__c: lesson.id) + expect(sf_lesson.teacherprojecttype__c).to eq(Project::Types::SCRATCH) + end + end + end + describe 'numberofassignedprojects__c' do let(:students) { Array.new(3) { create(:student, school:) } }