From 2c144d61a118fcc759c22f47d9b7f588adc8d383 Mon Sep 17 00:00:00 2001 From: Dave Date: Tue, 16 Apr 2024 13:21:06 -0700 Subject: [PATCH] Basic AGCOD mock test. Don't have time to do more/make it better right now. --- server/utils/agcod.py | 8 +++++++- server/utils/test_agcod.py | 9 ++++++--- server/vb/migrations/0001_initial.py | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/server/utils/agcod.py b/server/utils/agcod.py index 2ad3ae6..43a5bb4 100644 --- a/server/utils/agcod.py +++ b/server/utils/agcod.py @@ -41,8 +41,14 @@ def _httpx_invoker( ) -> dict: """Invoke an HTTP request.""" response = httpx.request(method, url, content=body, headers=headers) + # TODO: for now, we just blow up in a generic way if the response is bad. + # AGCOD has a specific error format that we should parse and raise to provide + # detail. response.raise_for_status() - return response.json() # assumes dict-like JSON response + maybe_response = response.json() + if not isinstance(maybe_response, dict): + raise ValueError(f"Unexpected AGCOD response type: {type(maybe_response)}") + return maybe_response class AmazonClient: diff --git a/server/utils/test_agcod.py b/server/utils/test_agcod.py index 3459f82..058cd78 100644 --- a/server/utils/test_agcod.py +++ b/server/utils/test_agcod.py @@ -52,14 +52,17 @@ def create_gift_card_invoker(self, amount: int = 100): class CreateGiftCardTestCase(AGCODTextMixin, unittest.TestCase): """Test the create_gift_card function.""" + # TODO: flesh out the the architecture and tests if I have time + def test_create_gift_card(self): """Test creating a gift card.""" - invoker = self.create_gift_card_invoker() - client = AGCODTestClient(invoker) amount = 50 - client.create_gift_card(amount) + invoker = self.create_gift_card_invoker(amount) + client = AGCODTestClient(invoker) + response = client.create_gift_card(amount) call_args = invoker.call_args[0] self.assertEqual(invoker.call_count, 1) self.assertEqual(call_args[0], "POST") self.assertTrue("/CreateGiftCard" in call_args[1]) self.assertTrue("test_partner_id-" in call_args[2].decode()) + self.assertEqual(response.card_info.value.amount, amount) diff --git a/server/vb/migrations/0001_initial.py b/server/vb/migrations/0001_initial.py index 1bd427e..31e8f46 100644 --- a/server/vb/migrations/0001_initial.py +++ b/server/vb/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 5.0.3 on 2024-04-16 17:50 +# Generated by Django 5.0.3 on 2024-04-16 20:20 import django.core.validators import django.db.models.deletion