Пример #1
0
    def test_client_behavior_on_successful_learner_data_transmission(self):
        """
        Test that given successful requests for moodle learner data,
        the client makes the appropriate _post call to update a user's grade
        """
        client = MoodleAPIClient(self.enterprise_config)
        client._post = unittest.mock.MagicMock(name='_post', return_value=SUCCESSFUL_RESPONSE)  # pylint: disable=protected-access

        client.get_course_id = unittest.mock.MagicMock(name='_get_course_id')
        client.get_course_id.return_value = self.moodle_course_id

        client.get_course_final_grade_module = unittest.mock.MagicMock(name='_get_final_grade_module')
        client.get_course_final_grade_module.return_value = self.moodle_module_id, self.moodle_module_name

        client.get_creds_of_user_in_course = unittest.mock.MagicMock(name='get_user_in_course')
        client.get_creds_of_user_in_course.return_value = self.moodle_user_id

        # The base transmitter expects the create course completion response to be a tuple of (code, body)
        assert client.create_course_completion(self.user_email, self.learner_data_payload) == (
            SUCCESSFUL_RESPONSE.status_code,
            SUCCESSFUL_RESPONSE.text
        )

        expected_params = {
            'wsfunction': 'core_grades_update_grades',
            'source': self.moodle_module_name,
            'courseid': self.moodle_course_id,
            'component': 'mod_assign',
            'activityid': self.moodle_module_id,
            'itemnumber': 0,
            'grades[0][studentid]': self.moodle_user_id,
            'grades[0][grade]': self.grade * 100
        }

        client._post.assert_called_once_with(expected_params)  # pylint: disable=protected-access
Пример #2
0
 def test_get_course_id(self):
     """
     Test parsing of response from get_course_by_field Moodle endpoint.
     """
     client = MoodleAPIClient(self.enterprise_config)
     responses.add(
         responses.GET,
         urljoin(self.enterprise_config.moodle_base_url, self.moodle_api_path),
         json={'courses': [{'id': 2}]},
         status=200
     )
     assert client.get_course_id('course:test_course') == 2
Пример #3
0
    def test_delete_content_metadata(self):
        """
        Test core logic for formatting a delete request to Moodle.
        """
        expected_data = {'wsfunction': 'core_course_delete_courses', 'courseids[]': self.moodle_course_id}

        client = MoodleAPIClient(self.enterprise_config)
        client._post = unittest.mock.MagicMock(name='_post', return_value=SUCCESSFUL_RESPONSE)  # pylint: disable=protected-access
        client.get_course_id = unittest.mock.MagicMock(name='_get_course_id')
        client.get_course_id.return_value = self.moodle_course_id
        client.delete_content_metadata(SERIALIZED_DATA)

        client._post.assert_called_once_with(expected_data)  # pylint: disable=protected-access
Пример #4
0
    def test_update_content_metadata(self):
        """
        Test core logic of update_content_metadata to ensure
        query string we send to Moodle is formatted correctly.
        """
        expected_data = SERIALIZED_DATA.copy()
        expected_data['courses[0][id]'] = self.moodle_course_id
        expected_data['wsfunction'] = 'core_course_update_courses'

        client = MoodleAPIClient(self.enterprise_config)
        client._post = unittest.mock.MagicMock(name='_post', return_value=SUCCESSFUL_RESPONSE)  # pylint: disable=protected-access
        client.get_course_id = unittest.mock.MagicMock(name='_get_course_id')
        client.get_course_id.return_value = self.moodle_course_id
        client.update_content_metadata(SERIALIZED_DATA)
        client._post.assert_called_once_with(expected_data)  # pylint: disable=protected-access