def test_empty_prepare(self): related = Related() queryset = related.prepare(mock_orm.QuerySet()) self.assertEqual(queryset._selected, set()) self.assertEqual(queryset._prefetched, set())
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' })
def test_prefetch(self): related = Related() related.prefetch('foo') self.assertEqual(related._prefetch, { 'foo' }) related.prefetch('bar') self.assertEqual(related._prefetch, { 'foo', 'bar' })
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' })
def test_select(self): related = Related() related.select('foo') self.assertEqual(related._select, { 'foo' }) related.select('bar') self.assertEqual(related._select, { 'foo', 'bar' })
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'})
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' })
def prepare_queryset(self, ctx, queryset): related = Related() self.prepare(ctx, related) return related.prepare(queryset)
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)