def test_registrar_fed_enrollments_not_returned(self, mock_get_all_list_data): """ Ensure that registrar-fed enrollments aren't returned. """ # set up the mock data user_id = uuid.uuid4().hex course_instance_id = uuid.uuid4().int canvas_enrollments = [ # result of enrollments.list_enrollments_sections {'user': {'sis_user_id': user_id, 'sortable_name': 'Burn, Acid'}, 'role': 'Guest'}, ] course_enrollees = [ # result of query for non-feed enrollments ] # set up the mocks mock_get_all_list_data.return_value = canvas_enrollments mock_course_member = Mock(**{ 'objects.filter.return_value.values_list.return_value': course_enrollees, }) # since we're prepping the mock_course_member here, we have to resort # to the patch().start() syntax here, instead of decorating it patch('manage_people.views.COURSE_MEMBER_CLASSES', [mock_course_member]).start() # run it result = get_enrollments_added_through_tool(course_instance_id) # we mocked out get_all_list_data, so verify the call self.assertEqual(mock_get_all_list_data.call_args_list, [call(ANY, enrollments.list_enrollments_sections, 'sis_section_id:{}'.format(course_instance_id))]) # verify the result self.assertEqual(len(result), 0)
def test_registrar_fed_enrollments_not_returned(self, mock_get_all_list_data, mock_role_map): """ Ensure that registrar-fed enrollments aren't returned. """ # set up the mock data user_id = uuid.uuid4().hex course_instance_id = uuid.uuid4().int canvas_enrollments = [ # result of enrollments.list_enrollments_sections {'user': {'sis_user_id': user_id, 'sortable_name': 'Burn, Acid'}, 'role': 'Guest', 'role_id': 9}, ] course_enrollees = [] # result of query for non-feed enrollments # set up the mocks mock_get_all_list_data.return_value = canvas_enrollments mock_course_member = Mock(**{ 'objects.filter.return_value.values_list.return_value': course_enrollees, }) # since we're prepping the mock_course_member here, we have to resort # to the patch().start() syntax here, instead of decorating it patch('manage_people.views.COURSE_MEMBER_CLASSES', [mock_course_member]).start() # run it result = get_enrollments_added_through_tool(course_instance_id) # we mocked out get_all_list_data, so verify the call self.assertEqual(mock_get_all_list_data.call_args_list, [call(ANY, enrollments.list_enrollments_sections, 'sis_section_id:{}'.format(course_instance_id))]) # verify the result self.assertEqual(len(result), 0)
def test_mismatched_roles_not_returned(self, mock_get_all_list_data, mock_role_map): """ Ensure that manually-added enrollments for a different role don't cause us to return registrar-fed enrollments as well. Basically, a regression test for TLT-2403. """ # set up the mock data user_id = uuid.uuid4().hex course_instance_id = uuid.uuid4().int canvas_enrollments = [ # result of enrollments.list_enrollments_sections {'user': {'sis_user_id': user_id, 'sortable_name': 'Burn, Acid'}, 'role': 'Guest', 'role_id': 9}, {'user': {'sis_user_id': user_id, 'sortable_name': 'Burn, Acid'}, 'role': 'ObserverEnrollment', 'role_id': 7}, ] course_enrollees = [ # result of query for non-feed enrollments (user_id, 10), # Guest ] # set up the mocks mock_get_all_list_data.return_value = canvas_enrollments mock_course_member = Mock(**{ 'objects.filter.return_value.values_list.return_value': course_enrollees, }) # since we're prepping the mock_course_member here, we have to resort # to the patch().start() syntax here, instead of decorating it patch('manage_people.views.COURSE_MEMBER_CLASSES', [mock_course_member]).start() # run it result = get_enrollments_added_through_tool(course_instance_id) # we mocked out get_all_list_data, so verify the call self.assertEqual(mock_get_all_list_data.call_args_list, [call(ANY, enrollments.list_enrollments_sections, 'sis_section_id:{}'.format(course_instance_id))]) # verify the result self.assertEqual(len(result), 1) self.assertIn('badge_label_name', result[0]) self.assertDictContainsSubset(canvas_enrollments[0], result[0])