Skip to content

Instantly share code, notes, and snippets.

@brechin
Created September 21, 2018 15:04
Show Gist options
  • Save brechin/2b7e2d11a4e590369b61d5af07993689 to your computer and use it in GitHub Desktop.
Save brechin/2b7e2d11a4e590369b61d5af07993689 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import random
from django.test import TestCase, Client
from filtertest.models import MyModel, AnotherModel
class TestFilter(TestCase):
def setUp(self):
for i in range(5):
mymodel = MyModel.objects.create(base=i)
for _ in range(i):
AnotherModel.objects.create(related=mymodel)
mymodel.save()
def test_data(self):
for mymodel in MyModel.objects.all():
self.assertEqual(mymodel.base, mymodel.anothermodel_set.count())
self.assertEqual(mymodel.count, mymodel.base)
self.assertEqual(mymodel.doubled, mymodel.base * 2)
def test_filter(self):
with self.assertNumQueries(1):
c = Client()
response = c.get('/filtertest/').json()
with self.assertNumQueries(1):
ordered_response = c.get('/filtertest/?order_by=-count').json()
self.assertNotEqual(response, ordered_response)
self.assertEqual(ordered_response, sorted(response, key=lambda m: m['count'], reverse=True))
with self.assertNumQueries(6):
[m.as_dict() for m in MyModel.objects.all()] # Similar to how most serializers function
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment