Exemple #1
0
    def test_empty_prepare(self):
        related = Related()

        queryset = related.prepare(mock_orm.QuerySet())

        self.assertEqual(queryset._selected, set())
        self.assertEqual(queryset._prefetched, set())
Exemple #2
0
    def test_sub_prefetch_continuation(self):
        related = Related()
        sub_related = related.sub_prefetch('foo')
        sub_sub_related = sub_related.sub_select('bar')

        sub_sub_related.select('baz')

        # Because foo was prefetch, the sub-select of bar is also forced into
        # prefetch mode, so foo__bar__baz ends up being prefetched.
        self.assertEqual(related._prefetch, {
            'foo__bar__baz'
        })
Exemple #3
0
    def test_prefetch(self):
        related = Related()

        related.prefetch('foo')
        self.assertEqual(related._prefetch, {
            'foo'
        })

        related.prefetch('bar')
        self.assertEqual(related._prefetch, {
            'foo',
            'bar'
        })
Exemple #4
0
    def test_sub_select(self):
        related = Related()
        sub_related = related.sub_select('foo')

        sub_related.select('bar')
        sub_related.prefetch('baz')

        self.assertEqual(related._select, {
            'foo__bar'
        })
        self.assertEqual(related._prefetch, {
            'foo__baz'
        })
Exemple #5
0
    def test_select(self):
        related = Related()

        related.select('foo')
        self.assertEqual(related._select, {
            'foo'
        })

        related.select('bar')
        self.assertEqual(related._select, {
            'foo',
            'bar'
        })
Exemple #6
0
    def test_sub_prefetch(self):
        related = Related()
        sub_related = related.sub_prefetch('foo')

        sub_related.select('bar')
        sub_related.prefetch('baz')

        self.assertEqual(related._select, set())
        # Because foo is assumed to have a non-one cardinality, sub-selects
        # through foo are also converted into prefetch-es.  In this case, bar.
        self.assertEqual(related._prefetch, {
            'foo__bar',
            'foo__baz'
        })
    def test_prepare(self):
        field = AttributeField(attribute='foo.bar.baz', type=int)

        related = Related()
        field.prepare(mock_context(), related)

        self.assertEqual(related._select, {'foo__bar'})
    def test_prepare_with_use_prefetch(self):
        field = AttributeField(attribute='foo.bar.baz',
                               type=int,
                               use_prefetch=True)

        related = Related()
        field.prepare(mock_context(), related)

        self.assertEqual(related._prefetch, {'foo__bar'})
    def test_prepare(self):
        class MockResource(ModelResource):
            model_class = Mock()
            fields = [
                AttributeField(attribute='bar.baz', type=int),
            ]

        field = SubModelResourceField(attribute='foo',
                                      resource_class=MockResource)

        related = Related()
        field.prepare(mock_context(), related)

        self.assertEqual(related._select, {'foo', 'foo__bar'})
    def test_prepare(self):
        class MockResource(ModelResource):
            model_class = mock_orm.Model
            fields = [AttributeField('bar.baz', type=int)]

        class MockQuerySetResource(QuerySetResource):
            resource_class = MockResource

        field = RelatedManagerField(attribute='foo',
                                    resource_class=MockQuerySetResource)

        related = Related()
        field.prepare(mock_context(), related)

        self.assertEqual(related._prefetch, {'foo', 'foo__bar'})
Exemple #11
0
    def test_prepare(self):
        related = Related()

        related.select('foo')
        related.prefetch('bar')

        queryset = related.prepare(mock_orm.QuerySet())

        self.assertEqual(queryset._selected, {
            'foo'
        })
        self.assertEqual(queryset._prefetched, {
            'bar'
        })
Exemple #12
0
 def prepare_queryset(self, ctx, queryset):
     related = Related()
     self.prepare(ctx, related)
     return related.prepare(queryset)
Exemple #13
0
 def prepare_queryset(self, ctx, queryset):
     related = Related()
     self.prepare(ctx, related)
     return related.prepare(queryset)
Exemple #14
0
 def _prefetch_related(self, qs):
     related = Related()
     ctx = APIContext('', None, None)
     self.resource_class.prepare(ctx, related)
     self.prefetch_related(related)
     return related.prepare(qs)
 def _prefetch_related(self, qs):
     related = Related()
     ctx = APIContext('', None, None)
     self.resource_class.prepare(ctx, related)
     self.prefetch_related(related)
     return related.prepare(qs)