From db6b29afa8925675cff2bb045d45822ba0e29087 Mon Sep 17 00:00:00 2001 From: Joshua Harms Date: Thu, 4 Jan 2024 23:45:37 -0600 Subject: [PATCH] Make CartUpdatedPayload.Note nullable --- ShopifySharp.Tests/ShopifySharp.Tests.csproj | 4 + .../CartUpdatedPayloadTests.cs | 18 +++++ .../cart_updated_payload_with_null_note.json | 80 +++++++++++++++++++ .../CartUpdated/CartUpdatedPayload.cs | 2 +- 4 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 ShopifySharp.Tests/WebhookPayloads/cart_updated_payload_with_null_note.json diff --git a/ShopifySharp.Tests/ShopifySharp.Tests.csproj b/ShopifySharp.Tests/ShopifySharp.Tests.csproj index 785e4f419..615497b43 100644 --- a/ShopifySharp.Tests/ShopifySharp.Tests.csproj +++ b/ShopifySharp.Tests/ShopifySharp.Tests.csproj @@ -42,5 +42,9 @@ PreserveNewest CartUpdatedPayloadTests.cs + + PreserveNewest + CartUpdatedPayloadTests.cs + diff --git a/ShopifySharp.Tests/WebhookPayloads/CartUpdatedPayloadTests.cs b/ShopifySharp.Tests/WebhookPayloads/CartUpdatedPayloadTests.cs index 0655322e6..04f4ee8b9 100644 --- a/ShopifySharp.Tests/WebhookPayloads/CartUpdatedPayloadTests.cs +++ b/ShopifySharp.Tests/WebhookPayloads/CartUpdatedPayloadTests.cs @@ -14,6 +14,7 @@ public class CartUpdatedPayloadTests { private const string JsonFilePath = "./WebhookPayloads/cart_updated_payload.json"; private const string JsonWithPropertiesFilePath = "./WebhookPayloads/cart_updated_payload_with_properties.json"; + private const string JsonWithNullNoteFilePath = "./WebhookPayloads/cart_updated_payload_with_null_note.json"; [Fact] public async Task ShouldDeserializeACartWebhookUpdatedRequest() @@ -38,6 +39,23 @@ public async Task ShouldDeserializeACartWebhookUpdatedRequest() subject.LineItems.Should().NotBeNullOrEmpty(); } + [Fact] + public async Task ShouldDeserializeACartWebhookUpdatedRequest_WithNullNote() + { + // Setup + var json = await ReadJsonFile(JsonWithNullNoteFilePath); + + // Act + var act = () => Infrastructure.Serializer.Deserialize(json); + + // Test + act.Should().NotThrow(); + + var subject = act.Should().NotThrow().Subject; + + subject.Note.Should().BeNull(); + } + [Fact] public async Task ShouldDeserializeACartWebhookPayload_WithLineItems() { diff --git a/ShopifySharp.Tests/WebhookPayloads/cart_updated_payload_with_null_note.json b/ShopifySharp.Tests/WebhookPayloads/cart_updated_payload_with_null_note.json new file mode 100644 index 000000000..5af7361cd --- /dev/null +++ b/ShopifySharp.Tests/WebhookPayloads/cart_updated_payload_with_null_note.json @@ -0,0 +1,80 @@ +{ + "id": "c1-f880804cdbfc39c683dc9fad79ab940a", + "token": "c1-f880804cdbfc39c683dc9fad79ab940a", + "line_items": [ + { + "id": 44901482856738, + "properties": null, + "quantity": 3, + "variant_id": 44901482856738, + "key": "44901482856738:f81223baedf50c10666b0a66c7f612b6", + "discounted_price": "749.95", + "discounts": [], + "gift_card": false, + "grams": 0, + "line_price": "2249.85", + "original_line_price": "2249.85", + "original_price": "749.95", + "price": "749.95", + "product_id": 8213868347682, + "sku": "test-sku", + "taxable": true, + "title": "The Collection Snowboard: Liquid", + "total_discount": "0.00", + "vendor": "Hydrogen Vendor", + "discounted_price_set": { + "shop_money": { + "amount": "749.95", + "currency_code": "USD" + }, + "presentment_money": { + "amount": "749.95", + "currency_code": "USD" + } + }, + "line_price_set": { + "shop_money": { + "amount": "2249.85", + "currency_code": "USD" + }, + "presentment_money": { + "amount": "2249.85", + "currency_code": "USD" + } + }, + "original_line_price_set": { + "shop_money": { + "amount": "2249.85", + "currency_code": "USD" + }, + "presentment_money": { + "amount": "2249.85", + "currency_code": "USD" + } + }, + "price_set": { + "shop_money": { + "amount": "749.95", + "currency_code": "USD" + }, + "presentment_money": { + "amount": "749.95", + "currency_code": "USD" + } + }, + "total_discount_set": { + "shop_money": { + "amount": "0.0", + "currency_code": "USD" + }, + "presentment_money": { + "amount": "0.0", + "currency_code": "USD" + } + } + } + ], + "note": null, + "updated_at": "2023-12-11T04:44:14.751Z", + "created_at": "2023-12-11T04:40:09.792Z" +} diff --git a/ShopifySharp/WebhookPayloads/CartUpdated/CartUpdatedPayload.cs b/ShopifySharp/WebhookPayloads/CartUpdated/CartUpdatedPayload.cs index 375cb3191..509b8d87f 100644 --- a/ShopifySharp/WebhookPayloads/CartUpdated/CartUpdatedPayload.cs +++ b/ShopifySharp/WebhookPayloads/CartUpdated/CartUpdatedPayload.cs @@ -21,7 +21,7 @@ public class CartUpdatedPayload public ICollection LineItems { get; set; } [JsonProperty("note")] - public string Note { get; set; } + public string? Note { get; set; } [JsonProperty("token")] public string Token { get; set; }