Skip to content

Commit 57c73da

Browse files
committed
Add fallback when variation SKU is a number
1 parent 68bbc4c commit 57c73da

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

Networking/Networking/Model/Product/ProductVariation.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,12 @@ public struct ProductVariation: Codable, GeneratedCopiable, Equatable, Generated
206206
let statusKey = try container.decode(String.self, forKey: .statusKey)
207207
let status = ProductStatus(rawValue: statusKey)
208208
let description = try container.decodeIfPresent(String.self, forKey: .description)
209-
let sku = try container.decodeIfPresent(String.self, forKey: .sku)
209+
210+
// Even though a plain install of WooCommerce Core provides String values,
211+
// some plugins alter the field value from String to Int or Decimal.
212+
let sku = container.failsafeDecodeIfPresent(targetType: String.self,
213+
forKey: .sku,
214+
alternativeTypes: [.decimal(transform: { NSDecimalNumber(decimal: $0).stringValue })])
210215

211216
// Even though a plain install of WooCommerce Core provides string values,
212217
// some plugins alter the field value from String to Int or Decimal.

Networking/NetworkingTests/Mapper/ProductVariationMapperTests.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ final class ProductVariationMapperTests: XCTestCase {
4040
XCTAssertFalse(productVariation.manageStock)
4141
XCTAssertTrue(productVariation.purchasable)
4242
XCTAssertEqual(productVariation.permalink, "")
43+
XCTAssertEqual(productVariation.sku, "12345")
4344
}
4445

4546
/// Test that the fields for variations of a subscription product are properly parsed.

Networking/NetworkingTests/Responses/product-variation-alternative-types.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"date_modified_gmt": "2019-11-14T13:06:42",
99
"description": "<p>Nutty chocolate marble, 99% and organic.</p>\n",
1010
"permalink": 0,
11-
"sku": "99%-nuts-marble",
11+
"sku": 12345,
1212
"price": 13.99,
1313
"regular_price": 16,
1414
"sale_price": 9.99,

0 commit comments

Comments
 (0)