Esempio n. 1
0
 def test_array_agg_empty_result(self):
     AggregateTestModel.objects.all().delete()
     values = AggregateTestModel.objects.aggregate(
         arrayagg=ArrayAgg('char_field'))
     self.assertEqual(values, {'arrayagg': []})
     values = AggregateTestModel.objects.aggregate(
         arrayagg=ArrayAgg('integer_field'))
     self.assertEqual(values, {'arrayagg': []})
     values = AggregateTestModel.objects.aggregate(
         arrayagg=ArrayAgg('boolean_field'))
     self.assertEqual(values, {'arrayagg': []})
Esempio n. 2
0
 def test_array_agg_lookups(self):
     aggr1 = AggregateTestModel.objects.create()
     aggr2 = AggregateTestModel.objects.create()
     StatTestModel.objects.create(related_field=aggr1, int1=1, int2=0)
     StatTestModel.objects.create(related_field=aggr1, int1=2, int2=0)
     StatTestModel.objects.create(related_field=aggr2, int1=3, int2=0)
     StatTestModel.objects.create(related_field=aggr2, int1=4, int2=0)
     qs = StatTestModel.objects.values('related_field').annotate(
         array=ArrayAgg('int1')).filter(array__overlap=[2]).values_list(
             'array', flat=True)
     self.assertCountEqual(qs.get(), [1, 2])
Esempio n. 3
0
 def test_array_agg_booleanfield_ordering(self):
     ordering_test_cases = (
         (F('boolean_field').asc(), [False, False, True, True]),
         (F('boolean_field').desc(), [True, True, False, False]),
         (F('boolean_field'), [False, False, True, True]),
     )
     for ordering, expected_output in ordering_test_cases:
         with self.subTest(ordering=ordering,
                           expected_output=expected_output):
             values = AggregateTestModel.objects.aggregate(
                 arrayagg=ArrayAgg('boolean_field', ordering=ordering))
             self.assertEqual(values, {'arrayagg': expected_output})
Esempio n. 4
0
 def test_array_agg_charfield_ordering(self):
     ordering_test_cases = (
         (F('char_field').desc(), ['Foo4', 'Foo3', 'Foo2', 'Foo1']),
         (F('char_field').asc(), ['Foo1', 'Foo2', 'Foo3', 'Foo4']),
         (F('char_field'), ['Foo1', 'Foo2', 'Foo3', 'Foo4']),
         ([F('boolean_field'),
           F('char_field').desc()], ['Foo4', 'Foo2', 'Foo3', 'Foo1']),
         ((F('boolean_field'), F('char_field').desc()),
          ['Foo4', 'Foo2', 'Foo3', 'Foo1']),
         ('char_field', ['Foo1', 'Foo2', 'Foo3', 'Foo4']),
         ('-char_field', ['Foo4', 'Foo3', 'Foo2', 'Foo1']),
     )
     for ordering, expected_output in ordering_test_cases:
         with self.subTest(ordering=ordering,
                           expected_output=expected_output):
             values = AggregateTestModel.objects.aggregate(
                 arrayagg=ArrayAgg('char_field', ordering=ordering))
             self.assertEqual(values, {'arrayagg': expected_output})
Esempio n. 5
0
 def test_array_agg_booleanfield(self):
     values = AggregateTestModel.objects.aggregate(
         arrayagg=ArrayAgg('boolean_field'))
     self.assertEqual(values, {'arrayagg': [True, False, False, True]})
Esempio n. 6
0
 def test_array_agg_integerfield_ordering(self):
     values = AggregateTestModel.objects.aggregate(arrayagg=ArrayAgg(
         'integer_field', ordering=F('integer_field').desc()))
     self.assertEqual(values, {'arrayagg': [2, 1, 0, 0]})
Esempio n. 7
0
 def test_array_agg_integerfield(self):
     values = AggregateTestModel.objects.aggregate(
         arrayagg=ArrayAgg('integer_field'))
     self.assertEqual(values, {'arrayagg': [0, 1, 2, 0]})
Esempio n. 8
0
 def test_array_agg_charfield(self):
     values = AggregateTestModel.objects.aggregate(
         arrayagg=ArrayAgg('char_field'))
     self.assertEqual(values,
                      {'arrayagg': ['Foo1', 'Foo2', 'Foo4', 'Foo3']})
Esempio n. 9
0
 def test_array_agg_distinct_true(self):
     values = AggregateTestModel.objects.aggregate(
         arrayagg=ArrayAgg('char_field', distinct=True))
     self.assertEqual(sorted(values['arrayagg']), ['Bar', 'Foo'])
Esempio n. 10
0
 def test_orderable_agg_alternative_fields(self):
     values = AggregateTestModel.objects.aggregate(
         arrayagg=ArrayAgg('integer_field', ordering=F('char_field').asc()))
     self.assertEqual(values, {'arrayagg': [0, 1, 0, 2]})