def test_query(self): """Returns query if parameter is passed""" query, sort_field, size = UserOrganizationView().parse_query_params( {'query': 'yoohoo'}) self.assertIsNone(size) self.assertEqual(sort_field, query_to_db_field_map['first_name']) self.assertEqual(query, 'yoohoo')
def test_parse_query_params_sort_field(self): """Returns sort field if passed and valid""" query, sort_field, size = UserOrganizationView().parse_query_params( {'sort': 'last_name'}) self.assertEqual(sort_field, query_to_db_field_map['last_name']) self.assertIsNone(query) self.assertIsNone(size)
def test_size(self): """Returns size if parameter is passed""" query, sort_field, size = UserOrganizationView().parse_query_params( {'size': 30}) self.assertEqual(size, 30) self.assertEqual(sort_field, query_to_db_field_map['first_name']) self.assertIsNone(query)
def test_parse_query_params_default_param(self): """Returns sort field as first_name if not recognised""" query, sort_field, size = UserOrganizationView().parse_query_params( {'sort': 'bla'}) self.assertEqual(sort_field, query_to_db_field_map['first_name']) self.assertIsNone(query) self.assertIsNone(size)
def test_for_sort_field(self): sort_field = 'last_name' test_helpers.make_user_admin(self.user_profile) user_org_mock = MagicMock(name='user_org_mock', organization=self.organization) base_accesses = MagicMock(name='base_accesses') ordered_accesses = MagicMock(name='ordered_accesses') self.user_org_access_ds_mock.get_user_org_access_by_user_profile.return_value = user_org_mock self.user_org_access_ds_mock.get_user_org_access_for_org.return_value = base_accesses base_accesses.order_by.return_value = ordered_accesses self.admin_user_resp_serializer_mock.data = 1 request = MagicMock(name='request', user=self.user_profile.user, query_params={'sort': sort_field}) request.GET.getlist.return_value = None response = UserOrganizationView().get(request) self.assertEqual(response.status_code, status.HTTP_200_OK) self.user_org_access_ds_mock.get_user_org_access_by_user_profile.assert_called_once_with( self.user_profile) select_related_fields = ('user', 'user__user') self.user_org_access_ds_mock.get_user_org_access_for_org.assert_called_once_with( self.organization, select_related_fields) base_accesses.order_by.assert_called_once_with( query_to_db_field_map[sort_field]) self.admin_user_response_ser_class.assert_called_once_with({ 'organization': self.organization, 'users': ordered_accesses }) self.assertEqual(response.data, self.admin_user_resp_serializer_mock.data)
def test_sort_order_desc(self): """Returns negative sort field if order is DESC""" query, sort_field, size = UserOrganizationView().parse_query_params({ 'sort': 'first_name', 'order': 'DESC' }) expected_sort_field = '-' + query_to_db_field_map['first_name'] self.assertEqual(sort_field, expected_sort_field) self.assertIsNone(query) self.assertIsNone(size)
def test_sort_order_default(self): """Returns asc order by default""" query, sort_field, size = UserOrganizationView().parse_query_params({ 'sort': 'first_name', 'order': 'BLA' }) expected_sort_field = query_to_db_field_map['first_name'] self.assertEqual(sort_field, expected_sort_field) self.assertIsNone(query) self.assertIsNone(size)
def test_filter_by_params_with_ids(self): """Filters accesses if ids are passed""" user_ids = [1, 2] select_related_fields = ('user', 'user__user') base_access = MagicMock(name='base_access') filtered_user_id_access = MagicMock(name='filtered_user_id_access') self.user_org_access_ds_mock.get_user_org_access_for_org.return_value = base_access self.user_org_access_ds_mock.filter_org_access_by_user_ids.return_value = filtered_user_id_access query_set = UserOrganizationView().filter_by_params( user_ids, self.organization, None, None, None) self.user_org_access_ds_mock.get_user_org_access_for_org.assert_called_once_with( self.organization, select_related_fields) self.user_org_access_ds_mock.filter_org_access_by_user_ids.assert_called_once_with( base_access, user_ids) self.assertEqual(query_set, filtered_user_id_access)
def test_filter_by_params_with_sort_field(self): sort_field = 'sort_field' select_related_fields = ('user', 'user__user') base_access = MagicMock(name='base_access') ordered_access = MagicMock(name='ordered_access') self.user_org_access_ds_mock.get_user_org_access_for_org.return_value = base_access base_access.order_by.return_value = ordered_access query_set = UserOrganizationView().filter_by_params( None, self.organization, None, sort_field, None) self.user_org_access_ds_mock.get_user_org_access_for_org.assert_called_once_with( self.organization, select_related_fields) base_access.order_by.assert_called_once_with(sort_field) self.assertEqual(query_set, ordered_access)
def test_filter_by_params_with_query(self): query = 'query' select_related_fields = ('user', 'user__user') base_access = MagicMock(name='base_access') query_filtered_access = MagicMock(name='query_filtered_access') self.user_org_access_ds_mock.get_user_org_access_for_org.return_value = base_access self.user_org_access_ds_mock.filter_accesses_by_name.return_value = query_filtered_access query_set = UserOrganizationView().filter_by_params( None, self.organization, query, None, None) self.user_org_access_ds_mock.get_user_org_access_for_org.assert_called_once_with( self.organization, select_related_fields) self.user_org_access_ds_mock.filter_accesses_by_name.assert_called_once_with( base_access, query) self.assertEqual(query_set, query_filtered_access)
def test_for_size(self): size = 2 test_helpers.make_user_admin(self.user_profile) test_helpers.create_user(self.organization) test_helpers.create_user(self.organization) user_org_mock = MagicMock(name='user_org_mock', organization=self.organization) base_accesses = MagicMock(name='base_accesses') access_1 = MagicMock() access_2 = MagicMock() access_3 = MagicMock() ordered_accesses = [access_1, access_2, access_3] self.user_org_access_ds_mock.get_user_org_access_by_user_profile.return_value = user_org_mock self.user_org_access_ds_mock.get_user_org_access_for_org.return_value = base_accesses base_accesses.order_by.return_value = ordered_accesses self.admin_user_resp_serializer_mock.data = 1 request = MagicMock(name='request', user=self.user_profile.user, query_params={'size': size}) request.GET.getlist.return_value = None response = UserOrganizationView().get(request) self.assertEqual(response.status_code, status.HTTP_200_OK) self.user_org_access_ds_mock.get_user_org_access_by_user_profile.assert_called_once_with( self.user_profile) select_related_fields = ('user', 'user__user') self.user_org_access_ds_mock.get_user_org_access_for_org.assert_called_once_with( self.organization, select_related_fields) base_accesses.order_by.assert_called_once_with( query_to_db_field_map['first_name']) size_limited_access = ordered_accesses[:size] self.admin_user_response_ser_class.assert_called_once_with({ 'organization': self.organization, 'users': size_limited_access }) self.assertEqual(response.data, self.admin_user_resp_serializer_mock.data)