From c5f1d90da655e271221f4cf1fcaf3c6687526a58 Mon Sep 17 00:00:00 2001 From: Thomas De Meyer Date: Tue, 3 Sep 2024 09:19:40 +0200 Subject: [PATCH] fix: fixed nil pointer exception after sdk update --- .../unreleased/Fixed-20240903-091918.yaml | 3 +++ commercetools/resource_shipping_zone_rate.go | 23 ++++++++++++------- .../resource_shipping_zone_rate_test.go | 11 ++------- 3 files changed, 20 insertions(+), 17 deletions(-) create mode 100644 .changes/unreleased/Fixed-20240903-091918.yaml diff --git a/.changes/unreleased/Fixed-20240903-091918.yaml b/.changes/unreleased/Fixed-20240903-091918.yaml new file mode 100644 index 00000000..3175f8eb --- /dev/null +++ b/.changes/unreleased/Fixed-20240903-091918.yaml @@ -0,0 +1,3 @@ +kind: Fixed +body: Fixed shipping_zone_rate freeAbove handling when empty +time: 2024-09-03T09:19:18.036808639+02:00 diff --git a/commercetools/resource_shipping_zone_rate.go b/commercetools/resource_shipping_zone_rate.go index c8ffe324..aae876ee 100644 --- a/commercetools/resource_shipping_zone_rate.go +++ b/commercetools/resource_shipping_zone_rate.go @@ -381,7 +381,7 @@ func resourceShippingZoneRateDelete(ctx context.Context, d *schema.ResourceData, func createShippingRateDraft(rate *platform.ShippingRate) *platform.ShippingRateDraft { var freeAbove *platform.Money if rate.FreeAbove != nil { - m := coerceTypedMoney(rate.FreeAbove) + m := coerceTypedMoney(*rate.FreeAbove) freeAbove = &m } @@ -444,13 +444,20 @@ func setShippingZoneRateState(d *schema.ResourceData, shippingMethod *platform.S return err } - freeAbove := map[string]any{ - "currency_code": shippingRate.FreeAbove.CurrencyCode, - "cent_amount": shippingRate.FreeAbove.CentAmount, - } - err = d.Set("free_above", []any{freeAbove}) - if err != nil { - return err + if shippingRate.FreeAbove != nil { + freeAbove := map[string]any{ + "currency_code": shippingRate.FreeAbove.CurrencyCode, + "cent_amount": shippingRate.FreeAbove.CentAmount, + } + err = d.Set("free_above", []any{freeAbove}) + if err != nil { + return err + } + } else { + err = d.Set("free_above", nil) + if err != nil { + return err + } } return nil } diff --git a/commercetools/resource_shipping_zone_rate_test.go b/commercetools/resource_shipping_zone_rate_test.go index 9208dcee..5073e376 100644 --- a/commercetools/resource_shipping_zone_rate_test.go +++ b/commercetools/resource_shipping_zone_rate_test.go @@ -22,12 +22,10 @@ func TestAccShippingZoneRate_createAndUpdate(t *testing.T) { CheckDestroy: testAccCheckShippingZoneRateDestroy, Steps: []resource.TestStep{ { - Config: testAccShippingZoneRateConfig(taxCategoryName, shippingMethodName, "EUR"), + Config: testAccShippingZoneRateCreate(taxCategoryName, shippingMethodName, "EUR"), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(resourceName, "price.0.cent_amount", "5000"), resource.TestCheckResourceAttr(resourceName, "price.0.currency_code", "EUR"), - resource.TestCheckResourceAttr(resourceName, "free_above.0.cent_amount", "50000"), - resource.TestCheckResourceAttr(resourceName, "free_above.0.currency_code", "EUR"), resource.TestCheckResourceAttr(resourceName, "shipping_rate_price_tier.#", "2"), resource.TestCheckResourceAttr(resourceName, "shipping_rate_price_tier.0.type", "CartValue"), resource.TestCheckResourceAttr(resourceName, "shipping_rate_price_tier.0.minimum_cent_amount", "5000"), @@ -60,7 +58,7 @@ func TestAccShippingZoneRate_createAndUpdate(t *testing.T) { }) } -func testAccShippingZoneRateConfig(taxCategoryName string, shippingMethodName string, currencyCode string) string { +func testAccShippingZoneRateCreate(taxCategoryName string, shippingMethodName string, currencyCode string) string { return hclTemplate(` resource "commercetools_tax_category" "standard" { name = "{{ .taxCategoryName }}" @@ -93,11 +91,6 @@ func testAccShippingZoneRateConfig(taxCategoryName string, shippingMethodName st currency_code = "{{ .currencyCode }}" } - free_above { - cent_amount = 50000 - currency_code = "{{ .currencyCode }}" - } - shipping_rate_price_tier { type = "CartValue" minimum_cent_amount = 5000