Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)