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)
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)
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------------------"))
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, "")
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)
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)
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")
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)
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")
def test_has_outstanding_balance(self): order = TestOrderFactory() self.assertFalse(send_order(order)) order = Order.objects.get(id=order.id) self.assertFalse(order.fulfilled)