def setUp(self):
        super(TestCourseInfoSerializer, self).setUp()
        self.x_api_lrs_config = factories.XAPILRSConfigurationFactory()

        discovery_client_class = mock.patch('integrated_channels.xapi.serializers.CourseCatalogApiServiceClient')
        self.discovery_client = discovery_client_class.start().return_value
        self.addCleanup(discovery_client_class.stop)
    def setUp(self):
        super(TestUtils, self).setUp()
        self.faker = FakerFactory.create()

        self.user = factories.UserFactory()
        self.user.profile = mock.Mock(country=mock.Mock(code='PK'))
        self.mock_social_auth = mock.Mock(provider='tpa-saml',
                                          uid='default:edxsso')
        self.mock_save_statement_success = mock.Mock(name='response',
                                                     response=mock.Mock(
                                                         name='response',
                                                         status=200))

        now = datetime.now()
        # pylint: disable=no-member
        self.course_overview_mock_data = dict(
            id=self.faker.text(max_nb_chars=25),  # pylint: disable=no-member
            display_name=self.faker.text(max_nb_chars=25),  # pylint: disable=no-member
            short_description=self.faker.text(),  # pylint: disable=no-member
            marketing_url=self.faker.url(),  # pylint: disable=no-member
            effort=self.faker.text(max_nb_chars=10),  # pylint: disable=no-member
            start=now,
            end=now + timedelta(weeks=3, days=4),
            course_key='OrgX+Course101',
            course_uuid='b1e7c719af3c42288c6f50e2124bb913',
        )
        self.course_overview = mock.Mock(**self.course_overview_mock_data)

        self.course_enrollment = mock.Mock(user=self.user,
                                           course=self.course_overview)
        self.course_grade = mock.Mock(percent_grade=0.80,
                                      passed_timestamp='2020-04-01')

        self.x_api_lrs_config = factories.XAPILRSConfigurationFactory()
        self.x_api_client = EnterpriseXAPIClient(self.x_api_lrs_config)
Beispiel #3
0
    def setUp(self):
        super(TestUtils, self).setUp()
        self.faker = FakerFactory.create()

        self.user = factories.UserFactory()
        self.user.profile = mock.Mock(country=mock.Mock(code='PK'))

        now = datetime.now()
        # pylint: disable=no-member
        self.course_overview_mock_data = dict(
            id=self.faker.text(max_nb_chars=25),  # pylint: disable=no-member
            display_name=self.faker.text(max_nb_chars=25),  # pylint: disable=no-member
            short_description=self.faker.text(),  # pylint: disable=no-member
            marketing_url=self.faker.url(),  # pylint: disable=no-member
            effort=self.faker.text(max_nb_chars=10),  # pylint: disable=no-member
            start=now,
            end=now + timedelta(weeks=3, days=4),
        )
        self.course_overview = mock.Mock(**self.course_overview_mock_data)

        self.course_enrollment = mock.Mock(user=self.user,
                                           course=self.course_overview)
        self.course_grade = mock.Mock(percent=0.80, passed=True)

        self.x_api_lrs_config = factories.XAPILRSConfigurationFactory()
        self.x_api_client = EnterpriseXAPIClient(self.x_api_lrs_config)
 def test_command(self, mock_send_statement, mock_catalog_client):
     """
     Make command runs successfully and sends correct data to the LRS.
     """
     xapi_config = factories.XAPILRSConfigurationFactory()
     if mock_catalog_client is not None:
         call_command('send_course_enrollments', enterprise_customer_uuid=xapi_config.enterprise_customer.uuid)
     assert mock_send_statement.called
    def test_command(self, mock_send_course_completion_statement):
        """
        Make command runs successfully and sends correct data to the LRS.
        """
        xapi_config = factories.XAPILRSConfigurationFactory()
        call_command('send_course_completions', enterprise_customer_uuid=xapi_config.enterprise_customer.uuid)

        assert mock_send_course_completion_statement.called
    def test_transmit_course_enrollments_transmit_fail_skip(self, mock_send_statement):
        # pylint: disable=import-outside-toplevel
        from integrated_channels.xapi.management.commands.send_course_enrollments import Command

        lrs_configuration = factories.XAPILRSConfigurationFactory()
        user = factories.UserFactory()
        course = self.course_overview

        Command.transmit_courserun_enrollment_statement(lrs_configuration, user, course)
        assert mock_send_statement.called
Beispiel #7
0
    def setUp(self):
        super(TestUtils, self).setUp()
        faker = FakerFactory.create()

        self.user = factories.UserFactory()
        # pylint: disable=no-member
        self.course_overview = mock.Mock(display_name=faker.text(max_nb_chars=25), short_description=faker.text())
        self.course_enrollment = mock.Mock(user=self.user, course=self.course_overview)

        self.x_api_lrs_config = factories.XAPILRSConfigurationFactory()
        self.x_api_client = EnterpriseXAPIClient(self.x_api_lrs_config)
Beispiel #8
0
 def test_command_grade_factory(self):
     """
     Make sure NotConnectedToOpenEdX is raised when enterprise app is not installed in Open edX environment.
     """
     # Make sure NotConnectedToOpenEdX is raised if called out side of edx-platform
     xapi_config = factories.XAPILRSConfigurationFactory()
     with raises(
             NotConnectedToOpenEdX,
             match=
             'This package must be installed in an OpenEdX environment.'):
         call_command(
             'send_course_completions',
             enterprise_customer_uuid=xapi_config.enterprise_customer.uuid,
         )
    def test_error_for_invalid_environment(self):
        """
        Make sure NotConnectedToOpenEdX is raised when enterprise app is not installed in Open edX environment.
        """
        xapi_config = factories.XAPILRSConfigurationFactory()

        with raises(
                NotConnectedToOpenEdX,
                match='This package must be installed in an OpenEdX environment.'
        ):
            call_command(
                'send_course_completions',
                days=1,
                enterprise_customer_uuid=xapi_config.enterprise_customer.uuid,
            )
Beispiel #10
0
    def test_command_client_error(self):
        """
        Make command handles networking issues gracefully.
        """
        logger = logging.getLogger('integrated_channels.xapi.management.commands.send_course_completions')
        handler = MockLoggingHandler(level="DEBUG")
        logger.addHandler(handler)

        xapi_config = factories.XAPILRSConfigurationFactory()
        call_command('send_course_completions', enterprise_customer_uuid=xapi_config.enterprise_customer.uuid)
        expected_message = (
            'Client error while sending course completion to xAPI for enterprise '
            'customer: {enterprise_customer}'.format(enterprise_customer=xapi_config.enterprise_customer.name)
        )
        assert expected_message in handler.messages['error'][0]
Beispiel #11
0
    def test_get_course_enrollments(self):
        """
        Make sure NotConnectedToOpenEdX is raised when enterprise app is not installed in Open edX environment.
        """
        xapi_config = factories.XAPILRSConfigurationFactory()
        with raises(
                NotConnectedToOpenEdX,
                match=
                'This package must be installed in an OpenEdX environment.'):
            call_command(
                'send_course_enrollments',
                days=1,
                enterprise_customer_uuid=xapi_config.enterprise_customer.uuid,
            )

        # Verify that get_course_enrollments returns CourseEnrollment records
        with mock.patch(MODULE_PATH + 'CourseEnrollment') as mock_enrollments:
            call_command('send_course_enrollments')
            assert mock_enrollments.objects.filter.called
    def test_get_course_completions(self):
        """
        Make sure NotConnectedToOpenEdX is raised when enterprise app is not installed in Open edX environment.
        """
        xapi_config = factories.XAPILRSConfigurationFactory()
        with raises(
            NotConnectedToOpenEdX,
            match='This package must be installed in an OpenEdX environment.'
        ):
            call_command(
                'send_course_completions',
                days=1,
                enterprise_customer_uuid=xapi_config.enterprise_customer.uuid,
            )

        # Verify that get_course_completions returns PersistentCourseGrade records
        with mock.patch(
            'integrated_channels.xapi.management.commands.send_course_completions.PersistentCourseGrade'
        ) as mock_completions:
            call_command('send_course_completions')
            assert mock_completions.objects.filter.called
 def setUp(self):
     super().setUp()
     self.x_api_lrs_config = factories.XAPILRSConfigurationFactory()
 def test_command_send_statement_error_response(self):
     factories.XAPILRSConfigurationFactory()
     call_command('send_course_enrollments')
 def setUp(self):
     super(TestXAPILRSConfiguration, self).setUp()
     self.x_api_lrs_config = factories.XAPILRSConfigurationFactory()
     self.x_api_client = EnterpriseXAPIClient(self.x_api_lrs_config)
     self.statement = EnterpriseStatement()