def test_populate_official_with_existing_draft(self): course_run = CourseRunFactory(draft=True, course=CourseFactory(draft=True)) course_run.status = CourseRunStatus.Reviewed course_run.save() salesforce_id = 'SomeSalesforceId' course_run_2 = CourseRunFactory(draft=True, course=CourseFactory( draft=True, salesforce_id=salesforce_id), salesforce_id=salesforce_id) course_run_2.status = CourseRunStatus.Reviewed course_run_2.save() # Need to modify state of the instance passed in def new_create_instance(instance): instance.salesforce_id = salesforce_id instance.save() with mock.patch( 'course_discovery.apps.course_metadata.tests.test_salesforce.CourseRun.save' ): with mock.patch( 'course_discovery.apps.course_metadata.tests.test_salesforce.Course.save' ): with mock.patch( self.salesforce_util_path) as mock_salesforce_util: with mock.patch(self.salesforce_util_path + '.create_course_run', new=new_create_instance): with mock.patch(self.salesforce_util_path + '.create_course', new=new_create_instance): created = populate_official_with_existing_draft( course_run.official_version, mock_salesforce_util) assert created assert course_run.official_version.salesforce_id == salesforce_id created = populate_official_with_existing_draft( course_run.official_version.course, mock_salesforce_util) assert created assert course_run.official_version.course.salesforce_id == salesforce_id created = populate_official_with_existing_draft( course_run_2.official_version, mock_salesforce_util) assert not created assert course_run_2.official_version.salesforce_id == salesforce_id created = populate_official_with_existing_draft( course_run_2.official_version.course, mock_salesforce_util) assert not created assert course_run_2.official_version.course.salesforce_id == salesforce_id
def update_or_create_salesforce_course_run(instance, created, **kwargs): # pylint: disable=unused-argument partner = instance.course.partner util = get_salesforce_util(partner) if util: if instance.draft: util.create_course_run(instance) elif not created and not instance.draft: created_in_salesforce = False if not instance.salesforce_id and instance.draft_version: created_in_salesforce = populate_official_with_existing_draft(instance, util) if not created_in_salesforce and requires_salesforce_update('course_run', instance): util.update_course_run(instance)
def update_or_create_salesforce_course(instance, created, **kwargs): # pylint: disable=unused-argument partner = instance.partner util = get_salesforce_util(partner) # Only bother to create the course if there's a util, and the auth orgs are already set up if util and instance.authoring_organizations.first(): if not created and not instance.draft: created_in_salesforce = False # Only populate the Official instance if the draft information is ready to go (has auth orgs set) if (not instance.salesforce_id and instance.draft_version and instance.draft_version.authoring_organizations.first()): created_in_salesforce = populate_official_with_existing_draft(instance, util) if not created_in_salesforce and requires_salesforce_update('course', instance): util.update_course(instance)
def update_or_create_salesforce_course_run(instance, created, **kwargs): # pylint: disable=unused-argument try: partner = instance.course.partner except (Course.DoesNotExist, Partner.DoesNotExist): # exit early in the unusual event that we can't look up the appropriate partner return util = get_salesforce_util(partner) if util: if instance.draft: util.create_course_run(instance) elif not created and not instance.draft: created_in_salesforce = False if not instance.salesforce_id and instance.draft_version: created_in_salesforce = populate_official_with_existing_draft( instance, util) if not created_in_salesforce and requires_salesforce_update( 'course_run', instance): util.update_course_run(instance)