def test_default_limit(self): ItemFactory.create_batch(6) got = self.client.get('/posts') self.assertEqual(Item.objects.count(), 6) self.assertEqual(len(got.data), 5)
def test_big_number_limit(self): ItemFactory.create_batch(110) got = self.client.get('/posts', {'limit': 100500}) self.assertEqual(Item.objects.count(), 110) self.assertEqual(len(got.data), 100)
def test_limit(self): ItemFactory.create_batch(6) got = self.client.get('/posts', {'limit': 3}) self.assertEqual(len(got.data), 3) self.assertEqual([item['id'] for item in got.data], [item.id for item in Item.objects.order_by('id')[:3]])
def test_invalid_field_by_order(self): ItemFactory.create_batch(4) ItemFactory.create(title='title_0') got = self.client.get('/posts', {'order': 'invalid_field'}) self.assertListEqual([item['title'] for item in got.data], [i.title for i in Item.objects.order_by('id')])
def test_offset_and_limit_and_order(self): ItemFactory.create_batch(6) got = self.client.get('/posts', { 'limit': 3, 'offset': 3, 'order': '-url' }) self.assertEqual(len(got.data), 3) self.assertEqual( [item['url'] for item in got.data], [item.url for item in Item.objects.order_by('-url')[3:6]])
def test_response(self): item = ItemFactory.create() got = self.client.get('/posts') data = got.data[0] self.assertEqual(data['id'], item.id) self.assertEqual(data['title'], item.title) self.assertEqual(data['url'], item.url) self.assertEqual(data['created'], item.created.strftime('%Y-%m-%dT%H:%M:%S.%f'))
def test_not_positive_number_limit(self): ItemFactory.create_batch(6) got = self.client.get('/posts', {'limit': -3}) self.assertEqual(len(got.data), 5)