Пример #1
0
    def test_request_exception(self):
        @httmock.all_requests
        def response(url, request):
            raise HTTPError

        order = PaidOrderFactory()
        with httmock.HTTMock(response):
            self.assertFalse(send_order(order))

        order = Order.objects.get(id=order.id)
        self.assertFalse(order.fulfilled)
Пример #2
0
    def test_invalid_json(self):
        @httmock.all_requests
        def response(url, request):
            headers = {"content-type": "application/json"}
            content = "{sf"
            return httmock.response(200, content, headers, request=request)

        order = PaidOrderFactory()
        with httmock.HTTMock(response):
            self.assertFalse(send_order(order))

        order = Order.objects.get(id=order.id)
        self.assertFalse(order.fulfilled)
Пример #3
0
    def test_existing_order_notes(self):
        @httmock.all_requests
        def response(url, request):
            headers = {"content-type": "application/json"}
            content = {"order_ref": order.id, "success": True}
            return httmock.response(200, content, headers, request=request)

        order = PaidOrderFactory(notes="Test Notes")
        with httmock.HTTMock(response):
            self.assertTrue(send_order(order))

        order = Order.objects.get(id=order.id)
        self.assertTrue(order.fulfilled)
        self.assertTrue(order.notes.startswith("Test Notes\n\n------------------"))
Пример #4
0
    def test_empty_order_notes(self):
        @httmock.all_requests
        def response(url, request):
            headers = {"content-type": "application/json"}
            content = {"order_ref": order.id, "success": True}
            return httmock.response(200, content, headers, request=request)

        order = PaidOrderFactory()
        with httmock.HTTMock(response):
            self.assertTrue(send_order(order))

        order = Order.objects.get(id=order.id)
        self.assertTrue(order.fulfilled)
        self.assertEqual(order.notes, "")
Пример #5
0
    def test_wrong_order_id(self):
        # Neither should be processed
        @httmock.all_requests
        def response(url, request):
            headers = {"content-type": "application/json"}
            content = {"order_ref": other_order.id}
            return httmock.response(200, content, headers, request=request)

        order = PaidOrderFactory()
        other_order = PaidOrderFactory()
        with httmock.HTTMock(response):
            self.assertFalse(send_order(order))

        order = Order.objects.get(id=order.id)
        self.assertFalse(order.fulfilled)
        other_order = Order.objects.get(id=other_order.id)
        self.assertFalse(other_order.fulfilled)
Пример #6
0
    def test_client_area_link(self):
        @httmock.all_requests
        def response(url, request):
            headers = {"content-type": "application/json"}
            content = {
                "order_ref": order.id,
                "success": True,
                "client_area_link": "http://example.com/",
            }
            return httmock.response(200, content, headers, request=request)

        order = PaidOrderFactory(notes="Test Notes")
        with httmock.HTTMock(response):
            self.assertTrue(send_order(order))

        order = Order.objects.get(id=order.id)
        self.assertTrue(order.fulfilled)
        self.assertIn("Client area: http://example.com/\n", order.notes)
Пример #7
0
    def test_success(self):
        @httmock.all_requests
        def response(url, request):
            headers = {'content-type': 'application/json'}
            content = {
                "order_ref": order.id,
                "success": True,
                "client_area_link": "http://example.com/"
            }
            return httmock.response(200, content, headers, request=request)

        order = PaidOrderFactory(notes="Test Notes")
        with httmock.HTTMock(response):
            self.assertTrue(send_order(order))

        order = Order.objects.get(id=order.id)
        self.assertTrue(order.fulfilled)
        self.assertIsNotNone(order.notes)
        self.assertEqual(order.status.status.status, "Pick & Pack")
Пример #8
0
    def test_success(self):
        @httmock.all_requests
        def response(url, request):
            headers = {'content-type': 'application/json'}
            content = {
                "order_ref": order.id,
                "success": True,
                "client_area_link": "http://example.com/"
            }
            return httmock.response(200, content, headers, request=request)

        order = PaidOrderFactory(notes="Test Notes")
        with httmock.HTTMock(response):
            self.assertTrue(send_order(order))

        order = Order.objects.get(id=order.id)
        self.assertTrue(order.fulfilled)
        self.assertIsNotNone(order.notes)
        self.assertEqual(order.status.status.status, "Pick & Pack")
Пример #9
0
    def test_update_stock(self):
        @httmock.all_requests
        def response(url, request):
            headers = {"content-type": "application/json"}
            content = {
                "order_ref": order.id,
                "success": True,
                "client_area_link": "http://example.com/",
                "update_stock": True,
                "stock_changes": {product.slug: 5, "does-not-exist": 0},
            }
            return httmock.response(200, content, headers, request=request)

        order = PaidOrderFactory(notes="Test Notes")
        product = order.orderitem_set.all()[0].product
        with httmock.HTTMock(response):
            self.assertTrue(send_order(order))

        # Reload product
        product = Product.objects.get(slug=product.slug)
        self.assertEqual(product.items_in_stock, 5)
Пример #10
0
    def test_failure(self):
        @httmock.all_requests
        def response(url, request):
            headers = {"content-type": "application/json"}
            content = {
                "order_ref": order.id,
                "success": False,
                "client_area_link": "http://example.com/",
                "error": "Test Error",
                "valid": True,
            }
            return httmock.response(200, content, headers, request=request)

        order = PaidOrderFactory(notes="Test Notes")
        with httmock.HTTMock(response):
            self.assertTrue(send_order(order))

        order = Order.objects.get(id=order.id)
        self.assertFalse(order.fulfilled)
        self.assertIn("Test Error\n", order.notes)
        self.assertIn("Valid: True\n", order.notes)
        self.assertEqual(order.status.status.status, "Error")
Пример #11
0
    def test_has_outstanding_balance(self):
        order = TestOrderFactory()
        self.assertFalse(send_order(order))

        order = Order.objects.get(id=order.id)
        self.assertFalse(order.fulfilled)