Skip to content

Commit ad23970

Browse files
authored
Merge pull request #520 from labd/518-commercetools_shipping_zone_rate-breaks-with-nilpointer-exception
fix: fixed nil pointer exception after sdk update
2 parents b4eb0c9 + c5f1d90 commit ad23970

File tree

3 files changed

+20
-17
lines changed

3 files changed

+20
-17
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kind: Fixed
2+
body: Fixed shipping_zone_rate freeAbove handling when empty
3+
time: 2024-09-03T09:19:18.036808639+02:00

commercetools/resource_shipping_zone_rate.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ func resourceShippingZoneRateDelete(ctx context.Context, d *schema.ResourceData,
381381
func createShippingRateDraft(rate *platform.ShippingRate) *platform.ShippingRateDraft {
382382
var freeAbove *platform.Money
383383
if rate.FreeAbove != nil {
384-
m := coerceTypedMoney(rate.FreeAbove)
384+
m := coerceTypedMoney(*rate.FreeAbove)
385385
freeAbove = &m
386386
}
387387

@@ -444,13 +444,20 @@ func setShippingZoneRateState(d *schema.ResourceData, shippingMethod *platform.S
444444
return err
445445
}
446446

447-
freeAbove := map[string]any{
448-
"currency_code": shippingRate.FreeAbove.CurrencyCode,
449-
"cent_amount": shippingRate.FreeAbove.CentAmount,
450-
}
451-
err = d.Set("free_above", []any{freeAbove})
452-
if err != nil {
453-
return err
447+
if shippingRate.FreeAbove != nil {
448+
freeAbove := map[string]any{
449+
"currency_code": shippingRate.FreeAbove.CurrencyCode,
450+
"cent_amount": shippingRate.FreeAbove.CentAmount,
451+
}
452+
err = d.Set("free_above", []any{freeAbove})
453+
if err != nil {
454+
return err
455+
}
456+
} else {
457+
err = d.Set("free_above", nil)
458+
if err != nil {
459+
return err
460+
}
454461
}
455462
return nil
456463
}

commercetools/resource_shipping_zone_rate_test.go

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,10 @@ func TestAccShippingZoneRate_createAndUpdate(t *testing.T) {
2222
CheckDestroy: testAccCheckShippingZoneRateDestroy,
2323
Steps: []resource.TestStep{
2424
{
25-
Config: testAccShippingZoneRateConfig(taxCategoryName, shippingMethodName, "EUR"),
25+
Config: testAccShippingZoneRateCreate(taxCategoryName, shippingMethodName, "EUR"),
2626
Check: resource.ComposeTestCheckFunc(
2727
resource.TestCheckResourceAttr(resourceName, "price.0.cent_amount", "5000"),
2828
resource.TestCheckResourceAttr(resourceName, "price.0.currency_code", "EUR"),
29-
resource.TestCheckResourceAttr(resourceName, "free_above.0.cent_amount", "50000"),
30-
resource.TestCheckResourceAttr(resourceName, "free_above.0.currency_code", "EUR"),
3129
resource.TestCheckResourceAttr(resourceName, "shipping_rate_price_tier.#", "2"),
3230
resource.TestCheckResourceAttr(resourceName, "shipping_rate_price_tier.0.type", "CartValue"),
3331
resource.TestCheckResourceAttr(resourceName, "shipping_rate_price_tier.0.minimum_cent_amount", "5000"),
@@ -60,7 +58,7 @@ func TestAccShippingZoneRate_createAndUpdate(t *testing.T) {
6058
})
6159
}
6260

63-
func testAccShippingZoneRateConfig(taxCategoryName string, shippingMethodName string, currencyCode string) string {
61+
func testAccShippingZoneRateCreate(taxCategoryName string, shippingMethodName string, currencyCode string) string {
6462
return hclTemplate(`
6563
resource "commercetools_tax_category" "standard" {
6664
name = "{{ .taxCategoryName }}"
@@ -93,11 +91,6 @@ func testAccShippingZoneRateConfig(taxCategoryName string, shippingMethodName st
9391
currency_code = "{{ .currencyCode }}"
9492
}
9593
96-
free_above {
97-
cent_amount = 50000
98-
currency_code = "{{ .currencyCode }}"
99-
}
100-
10194
shipping_rate_price_tier {
10295
type = "CartValue"
10396
minimum_cent_amount = 5000

0 commit comments

Comments
 (0)