Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 5
0
    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')
Esempio n. 6
0
class MyOrderItemSerializer(serializers.ModelSerializer):
    book = BookSerializer()

    class Meta:
        model = OrderItem
        fields = (
            "price",
            "book",
            "quantity",
        )
Esempio n. 7
0
 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)
     ])
Esempio n. 8
0
    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'])
Esempio n. 9
0
 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)
Esempio n. 11
0
 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)
Esempio n. 13
0
    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)
Esempio n. 14
0
 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)
Esempio n. 17
0
 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)
Esempio n. 18
0
 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)