def test_get_ordering(self): # ordering by price asc response = self.client.get(self.url, data={'ordering': 'price, author_name'}) serializer_data = BookSerializer(self.books.order_by('price', 'author_name'), many=True).data self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(serializer_data, response.data) # ordering by author_name desc response = self.client.get(self.url, data={'ordering': '-author_name'}) serializer_data = BookSerializer(self.books.order_by('-author_name'), many=True).data self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(serializer_data, response.data)
def test_get_filter(self): # filter by price response = self.client.get(self.url, data={'price': 1500}) serializer_data = BookSerializer(self.books.filter(id__in=[self.book_1.id, self.book_3.id]), many=True).data self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(serializer_data, response.data) # filter by author_name response = self.client.get(self.url, data={'author_name': 'Author 1'}) serializer_data2 = BookSerializer(self.books.filter(id=self.book_1.id), many=True).data self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(serializer_data2, response.data)
def test_get_search(self): url = reverse('book-list') response = self.client.get(url, data={'search': 'Author 1'}) serializer_data = BookSerializer([self.book_1, self.book_3], many=True).data self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(serializer_data, response.data)
def test_get_ordering_author_name(self): url = reverse('book-list') response = self.client.get(url, data={'ordering': 'author_name'}) serializer_data = BookSerializer( [self.book_1, self.book_3, self.book_2], many=True).data self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(serializer_data, response.data)
def test_serializer(self): book1 = Book.objects.create(title='test_ser1', authors='Alex Volkanovski', price=250, \ description='something to describe') book2 = Book.objects.create(title='test_ser2', authors='Shmalex Volkanovski', price=3050, description='something to describe') data = BookSerializer([book1, book2], many=True).data print(data) self.assertEqual(book1, book2, 'some thing to tell ya')
class MyOrderItemSerializer(serializers.ModelSerializer): book = BookSerializer() class Meta: model = OrderItem fields = ( "price", "book", "quantity", )
def test_cart_page_contains_books_in_cart_html(self): book = create_book(key=1, title="test", price=10) session = self.client.session qty = 2 session["cart"] = {book.pk: qty} session.save() response = self.client.get(reverse("store:cart")) self.assertListEqual(response.context["cart"], [ dict(qty=qty, total=book.price * qty, **BookSerializer(book).data) ])
def test_get(self): response = self.client.get(self.url) serializer_data = BookSerializer(self.books.order_by('id'), many=True).data self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(serializer_data, response.data) self.assertEqual('5.00', serializer_data[0]['rating']) self.assertEqual(1, serializer_data[0]['annotated_likes']) self.assertEqual('1400.00', serializer_data[0]['price_with_discount'])
def test_cart_page_contains_books_in_cart_json(self): book = create_book(key=1, title="test", price=10) session = self.client.session qty = 5 session["cart"] = {book.pk: qty} session.save() response = self.client.get(reverse("store:cart"), HTTP_ACCEPT="application/json") self.assertListEqual( json.loads(response.content.decode())["cart"], [ dict(qty=qty, total=f"{book.price * qty:.2f}", **BookSerializer(book).data) ])
def test_ok(self): self.client.force_login(self.user) data = BookSerializer([self.book_1, self.book_2], many=True).data expected_data = [{ 'id': self.book_1.id, 'name': 'Test book 1', 'price': '1000.00', 'author_name': 'Author 1', 'owner': self.user.id }, { 'id': self.book_2.id, 'name': 'Test book 2', 'price': '1250.00', 'author_name': 'Author 2', 'owner': self.user.id }] self.assertEqual(data, expected_data)
def test_ok(self): data = BookSerializer([self.book_1, self.book_2, self.book_3], many=True).data expected_data = [{ 'id': self.book_1.id, 'name': 'Test book 1', 'price': '25.00', 'author_name': 'Author 1' }, { 'id': self.book_2.id, 'name': 'Test book 2', 'price': '75.00', 'author_name': 'Author 5' }, { 'id': self.book_3.id, 'name': 'Test book 3 Author 1', 'price': '275.00', 'author_name': 'Author 2' }] self.assertEqual(data, expected_data)
def test_ok(self): user_1 = User.objects.create(username='******') user_2 = User.objects.create(username='******') user_3 = User.objects.create(username='******') book_1 = Book.objects.create(name='Test book 1', price=25, author_name='Author 1') book_2 = Book.objects.create(name='Test book 2', price=25, author_name='Author 2') UserBookRelation.objects.create(user=user_1, book=book_1, like=True) UserBookRelation.objects.create(user=user_2, book=book_1, like=True) UserBookRelation.objects.create(user=user_3, book=book_1, like=True) UserBookRelation.objects.create(user=user_1, book=book_2, like=True) UserBookRelation.objects.create(user=user_2, book=book_2, like=True) UserBookRelation.objects.create(user=user_3, book=book_2, like=False) data = BookSerializer([book_1, book_2], many=True).data expected_data = [ { "id": book_1.id, "name": 'Test book 1', "price": '25.00', "author_name": 'Author 1', "likes_count": 3 }, { "id": book_2.id, "name": 'Test book 2', "price": '25.00', "author_name": 'Author 2', "likes_count": 2 }, ] self.assertEqual(expected_data, data)
def test_ok(self): data = BookSerializer([self.book_1, self.book_2, self.book_3], many=True).data expected_data = [{ 'id': self.book_1.id, 'name': 'Clean coder', 'price': '500.00', 'author': 'Robert C. Martin', 'likes_count': 0 }, { 'id': self.book_2.id, 'name': 'Clean code', 'price': '600.00', 'author': 'Robert C. Martin', 'likes_count': 0 }, { 'id': self.book_3.id, 'name': 'Code complete', 'price': '1000.00', 'author': 'Steve McConnell', 'likes_count': 0 }] self.assertEqual(expected_data, data)
def get_bought_books(self, obj): from store.serializers import BookSerializer return BookSerializer(obj.get_bought_books(), many=True).data
def test_get_filter_price(self): url = reverse('book-list') response = self.client.get(url, data={'price': '275.00'}) serializer_data = BookSerializer([self.book_3], many=True).data self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(serializer_data, response.data)
def test_ok(self): books = Book.objects.all().annotate( annotated_likes=Count(Case(When(userbookrelation__like=True, then=1))), rating=Avg('userbookrelation__rate') ).order_by('id') data = BookSerializer(books, many=True).data expected_data = [ { 'id': self.book_1.id, 'name': 'Test book 1', 'price': '1500.00', 'author_name': 'Author 1', 'annotated_likes': 3, 'rating': '4.67', 'owner_name': 'test_username1', 'readers': [ { "username": "******", "first_name": "", "last_name": "" }, { "username": "******", "first_name": "Smith", "last_name": "Jack" }, { "username": "******", "first_name": "", "last_name": "" }, ] }, { 'id': self.book_2.id, 'name': 'Test book 2', 'price': '1700.00', 'author_name': 'Author 2', 'annotated_likes': 2, 'rating': '3.50', 'owner_name': 'test_username1', 'readers': [ { "username": "******", "first_name": "", "last_name": "" }, { "username": "******", "first_name": "Smith", "last_name": "Jack" }, { "username": "******", "first_name": "", "last_name": "" }, ] }, ] self.assertEqual(expected_data, data)
def test_get_search(self): response = self.client.get(self.url, data={'search': 'Author 1'}) serializer_data = BookSerializer(self.books.filter(id__in=[self.book_1.id, self.book_2.id]).order_by('id'), many=True).data self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(serializer_data, response.data)
def test_get_one_book(self): url = reverse('book-detail', args=(self.book_1.id,)) serializer_data = BookSerializer(self.books[0]).data response = self.client.get(url) self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(serializer_data, response.data)