def test_transmit_failure_user_inactive(self, content,
                                         ecu_active_expectation):
     """Learner data transmission fails because the user is inactive on the SAPSF side, so we mark them inactive
     internally."""
     self.create_course_completion_mock.side_effect = RequestException(
         'error occurred',
         response=mock.MagicMock(content=content),
     )
     payload = SapSuccessFactorsLearnerDataTransmissionAudit(
         enterprise_course_enrollment_id=self.enterprise_course_enrollment.
         id,
         sapsf_user_id='sap_user',
         course_id='course-v1:edX+DemoX+DemoCourse',
         course_completed=True,
         completed_timestamp=1486755998,
         instructor_name='Professor Professorson',
         grade='Pass',
     )
     transmitter = learner_data.SapSuccessFactorsLearnerTransmitter(
         self.enterprise_config)
     transmitter.transmit(self.exporter(payload))
     self.create_course_completion_mock.assert_called_with(
         payload.sapsf_user_id, payload.serialize())
     self.enterprise_customer_user.refresh_from_db()
     assert self.enterprise_customer_user.active == ecu_active_expectation
     assert payload.status == '500'
     assert payload.error_message == 'error occurred'
 def test_transmit_already_sent(self):
     """
     If we already sent a payload (we can tell if we did if it exists), don't send again.
     """
     self.payload.save()
     transmitter = learner_data.SapSuccessFactorsLearnerTransmitter(self.enterprise_config)
     transmitter.transmit(self.exporter())
     self.create_course_completion_mock.assert_not_called()
Beispiel #3
0
    def test_transmit_by_course_id_success(self):
        """
        This tests the case where the transmission with the course key fails, and as a result
        the transmission with the course run id is sent as well and succeeds.
        """
        self.create_course_completion_mock.side_effect = [
            ClientError('error occurred'), (200, '{"success":"true"}')
        ]
        payloads = [
            SapSuccessFactorsLearnerDataTransmissionAudit(
                enterprise_course_enrollment_id=self.
                enterprise_course_enrollment.id,
                sapsf_user_id='sap_user',
                course_id='edX+DemoX',
                course_completed=True,
                completed_timestamp=1486755998,
                instructor_name='Professor Professorson',
                grade='Pass',
            ),
            SapSuccessFactorsLearnerDataTransmissionAudit(
                enterprise_course_enrollment_id=self.
                enterprise_course_enrollment.id,
                sapsf_user_id='sap_user',
                course_id='course-v1:edX+DemoX+DemoCourse',
                course_completed=True,
                completed_timestamp=1486755998,
                instructor_name='Professor Professorson',
                grade='Pass',
            )
        ]
        transmitter = learner_data.SapSuccessFactorsLearnerTransmitter(
            self.enterprise_config)
        transmitter.transmit(self.exporter(payloads))
        expected_calls = [
            mock.call(payloads[0].sapsf_user_id, payloads[0].serialize()),
            mock.call(payloads[1].sapsf_user_id, payloads[1].serialize()),
        ]
        self.create_course_completion_mock.assert_has_calls(expected_calls)

        assert payloads[0].status == '500'
        assert payloads[0].error_message == 'error occurred'
        assert payloads[1].status == '200'
        assert payloads[1].error_message == ''
 def test_transmit_failure(self):
     """
     Learner data fails for some reason and the payload is saved with the appropriate data.
     """
     self.create_course_completion_mock.side_effect = RequestException('error occurred')
     payload = SapSuccessFactorsLearnerDataTransmissionAudit(
         enterprise_course_enrollment_id=5,
         sapsf_user_id='sap_user',
         course_id='course-v1:edX+DemoX+DemoCourse',
         course_completed=True,
         completed_timestamp=1486755998,
         instructor_name='Professor Professorson',
         grade='Pass',
     )
     transmitter = learner_data.SapSuccessFactorsLearnerTransmitter(self.enterprise_config)
     transmitter.transmit(self.exporter(payload))
     self.create_course_completion_mock.assert_called_with(payload.sapsf_user_id, payload.serialize())
     assert payload.status == '500'
     assert payload.error_message == 'error occurred'
 def test_transmit_success(self):
     """
     Learner data transmission is successful and the payload is saved with the appropriate data.
     """
     self.create_course_completion_mock.return_value = 200, '{"success":"true"}'
     payload = SapSuccessFactorsLearnerDataTransmissionAudit(
         enterprise_course_enrollment_id=5,
         sapsf_user_id='sap_user',
         course_id='course-v1:edX+DemoX+DemoCourse',
         course_completed=True,
         completed_timestamp=1486755998,
         instructor_name='Professor Professorson',
         grade='Pass',
     )
     transmitter = learner_data.SapSuccessFactorsLearnerTransmitter(self.enterprise_config)
     transmitter.transmit(self.exporter(payload))
     self.create_course_completion_mock.assert_called_with(payload.sapsf_user_id, payload.serialize())
     assert payload.status == '200'
     assert payload.error_message == ''
Beispiel #6
0
    def test_transmit_by_course_key_success(self):
        """
        This tests the case where the transmission with the course key succeeds, and as a result
        the transmission with the course run id does not get attempted.
        """
        self.create_course_completion_mock.return_value = 200, '{"success":"true"}'
        payloads = [
            SapSuccessFactorsLearnerDataTransmissionAudit(
                enterprise_course_enrollment_id=self.
                enterprise_course_enrollment.id,
                sapsf_user_id='sap_user',
                course_id='edX+DemoX',
                course_completed=True,
                completed_timestamp=1486755998,
                instructor_name='Professor Professorson',
                grade='Pass',
            ),
            SapSuccessFactorsLearnerDataTransmissionAudit(
                enterprise_course_enrollment_id=self.
                enterprise_course_enrollment.id,
                sapsf_user_id='sap_user',
                course_id='course-v1:edX+DemoX+DemoCourse',
                course_completed=True,
                completed_timestamp=1486755998,
                instructor_name='Professor Professorson',
                grade='Pass',
            )
        ]
        transmitter = learner_data.SapSuccessFactorsLearnerTransmitter(
            self.enterprise_config)
        transmitter.transmit(self.exporter(payloads))
        self.create_course_completion_mock.assert_called_once()
        self.create_course_completion_mock.assert_called_with(
            payloads[0].sapsf_user_id, payloads[0].serialize())

        assert payloads[0].status == '200'
        assert payloads[0].error_message == ''
        assert not payloads[1].status