def test_exceptions(self): with self.assertRaises(TypeError): get_values_list(object(), 'foo', 'bar', flat=True) with self.assertRaises(TypeError): get_values_list(object(), 'foo', something=None) with self.assertRaises(LookupNotFound): get_values_list(object(), 'foo') with self.assertRaises(LookupNotFound): get_values_list({}, 'foo')
def get_values_list_and_assert_orm_invariants(self, obj, *args, **kwargs): """ Gets the specified values list, and asserts that it matches the ORM behavior up to ordering. """ queryset = type(obj)._default_manager.filter(pk=obj.pk) django_values_list = queryset.values_list(*args, **kwargs) values_list = get_values_list(obj, *args, **kwargs) self.assertEqual(set(values_list), set(django_values_list)) return values_list
def test_non_field_lookup_on_django_model(self): values_list = get_values_list(TestObj.objects.create(), 'some_property__x', flat=True) self.assertEqual(values_list, ['y'])
def test_non_field_lookup_getitem(self): obj = dict(a=dict(c='x', d='y'), b=[1, 2]) self.assertEqual(set(get_values_list(obj, 'a__c', 'b')), {('x', 1), ('x', 2)}) self.assertEqual(set(get_values_list(obj, 'a__c', flat=True)), {'x'})
def test_non_field_lookup_attribute(self): obj = AttrClass(a=AttrClass(c='x', d='y'), b=[1, 2]) self.assertEqual(set(get_values_list(obj, 'a__c', 'b')), {('x', 1), ('x', 2)}) self.assertEqual(set(get_values_list(obj, 'a__c', flat=True)), {'x'})
def test_non_field_lookup_on_django_model(self): values_list = get_values_list( TestObj.objects.create(), 'some_property__x', flat=True) self.assertEqual(values_list, ['y'])