Ejemplo n.º 1
0
    def test_anonymous_cart(self):
        # before we add a product to the cart, no session shall exist
        response = self.client.get('/')
        self.assertFalse('sessionid' in response.cookies)

        # add a product anonymously
        sdhc_4gb = SmartCard.objects.get(slug="sdhc-card-4gb")
        self.add_product2cart(sdhc_4gb)

        # now a session must be assigned to the client
        response = self.client.get('/')
        self.assertTrue(settings.SESSION_COOKIE_NAME in response.cookies)
        sessionid = response.cookies[settings.SESSION_COOKIE_NAME].value

        # check that the added item is in the cart
        request = self.factory.get('/')
        self.middleware_process_request(request, sessionid)
        cart = CartModel.objects.get_from_request(request)
        self.assertEquals(cart.items.count(), 1)

        # change the quantity of our item using the REST interface
        client = APIClient()
        client.cookies = self.client.cookies
        cart_url = reverse('shop:cart-list')
        response = client.get(cart_url)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(response.data['total_quantity'], 1)
        self.assertEquals(response.data['num_items'], 1)
        self.assertEquals(response.data['items'][0]['quantity'], 1)
        put_data = dict(response.data['items'][0], quantity=2)
        response = client.put(put_data['url'], put_data, format='json')
        self.assertEquals(response.status_code, 200)
        response = client.get(cart_url)
        self.assertEquals(response.data['total_quantity'], 2)
        self.assertEquals(response.data['num_items'], 1)
        self.assertEquals(response.data['items'][0]['quantity'], 2)

        # move the item to the watch-list
        put_data = dict(response.data['items'][0], quantity=0)
        response = client.put(put_data['url'], put_data, format='json')
        self.assertEquals(response.status_code, 200)
        response = client.get(cart_url)
        self.assertEquals(response.data['total_quantity'], 0)
        self.assertEquals(response.data['num_items'], 0)

        # check that it is listed in the watch-list
        watch_url = reverse('shop:watch-list')
        response = client.get(watch_url)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(response.data['num_items'], 0)
        self.assertEquals(response.data['items'][0]['quantity'], 0)

        # move the item back to the cart
        put_data = dict(response.data['items'][0], quantity=1)
        response = client.put(put_data['url'], put_data, format='json')
        self.assertEquals(response.status_code, 200)
        response = client.get(watch_url)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(response.data['num_items'], 1)
        self.assertEquals(len(response.data['items']), 0)

        # and check that it is re-listed in the cart
        response = client.get(cart_url)
        self.assertEquals(response.data['total_quantity'], 1)
        self.assertEquals(response.data['num_items'], 1)
        self.assertEquals(len(response.data['items']), 1)

        # remove the item from the cart
        put_data = dict(response.data['items'][0])
        response = client.delete(put_data['url'])
        self.assertEquals(response.status_code, 204)

        # and check that the cart is empty
        response = client.get(cart_url)
        self.assertEquals(response.data['total_quantity'], 0)
        self.assertEquals(response.data['num_items'], 0)
        self.assertEquals(len(response.data['items']), 0)
Ejemplo n.º 2
0
    def test_anonymous_cart(self):
        # before we add a product to the cart, no session shall exist
        response = self.client.get('/')
        self.assertFalse('sessionid' in response.cookies)

        # add a product anonymously
        sdhc_4gb = SmartCard.objects.get(slug="sdhc-card-4gb")
        self.add_product2cart(sdhc_4gb)

        # now a session must be assigned to the client
        response = self.client.get('/')
        self.assertTrue(settings.SESSION_COOKIE_NAME in response.cookies)
        sessionid = response.cookies[settings.SESSION_COOKIE_NAME].value

        # check that the added item is in the cart
        request = self.factory.get('/')
        self.middleware_process_request(request, sessionid)
        cart = CartModel.objects.get_from_request(request)
        self.assertEquals(cart.items.count(), 1)

        # change the quantity of our item using the REST interface
        client = APIClient()
        client.cookies = self.client.cookies
        cart_url = reverse('shop:cart-list')
        response = client.get(cart_url)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(response.data['total_quantity'], 1)
        self.assertEquals(response.data['num_items'], 1)
        self.assertEquals(response.data['items'][0]['quantity'], 1)
        put_data = dict(response.data['items'][0], quantity=2)
        response = client.put(put_data['url'], put_data, format='json')
        self.assertEquals(response.status_code, 200)
        response = client.get(cart_url)
        self.assertEquals(response.data['total_quantity'], 2)
        self.assertEquals(response.data['num_items'], 1)
        self.assertEquals(response.data['items'][0]['quantity'], 2)

        # move the item to the watch-list
        put_data = dict(response.data['items'][0], quantity=0)
        response = client.put(put_data['url'], put_data, format='json')
        self.assertEquals(response.status_code, 200)
        response = client.get(cart_url)
        self.assertEquals(response.data['total_quantity'], 0)
        self.assertEquals(response.data['num_items'], 0)

        # check that it is listed in the watch-list
        watch_url = reverse('shop:watch-list')
        response = client.get(watch_url)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(response.data['num_items'], 0)
        self.assertEquals(response.data['items'][0]['quantity'], 0)

        # move the item back to the cart
        put_data = dict(response.data['items'][0], quantity=1)
        response = client.put(put_data['url'], put_data, format='json')
        self.assertEquals(response.status_code, 200)
        response = client.get(watch_url)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(response.data['num_items'], 1)
        self.assertEquals(len(response.data['items']), 0)

        # and check that it is re-listed in the cart
        response = client.get(cart_url)
        self.assertEquals(response.data['total_quantity'], 1)
        self.assertEquals(response.data['num_items'], 1)
        self.assertEquals(len(response.data['items']), 1)

        # remove the item from the cart
        put_data = dict(response.data['items'][0])
        response = client.delete(put_data['url'])
        self.assertEquals(response.status_code, 204)

        # and check that the cart is empty
        response = client.get(cart_url)
        self.assertEquals(response.data['total_quantity'], 0)
        self.assertEquals(response.data['num_items'], 0)
        self.assertEquals(len(response.data['items']), 0)