product_quantity shouldn't be an issue anymore; and some tests
This commit is contained in:
@@ -166,7 +166,7 @@ public class Product: Codable, ObjectDebugger {
|
|||||||
public var popularityKey: Int?
|
public var popularityKey: Int?
|
||||||
public var producerVersionId: String?
|
public var producerVersionId: String?
|
||||||
public var productName: String?
|
public var productName: String?
|
||||||
public var productQuantity: String?
|
public var productQuantity: Float?
|
||||||
public var purchasePlaces: String?
|
public var purchasePlaces: String?
|
||||||
public var purchasePlacesDebugTags: [String]?
|
public var purchasePlacesDebugTags: [String]?
|
||||||
public var purchasePlacesTags: [String]?
|
public var purchasePlacesTags: [String]?
|
||||||
@@ -397,4 +397,34 @@ public class Product: Codable, ObjectDebugger {
|
|||||||
case vitaminsPrevTags = "vitamins_prev_tags"
|
case vitaminsPrevTags = "vitamins_prev_tags"
|
||||||
case vitaminsTags = "vitamins_tags"
|
case vitaminsTags = "vitamins_tags"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public required init(from decoder: Decoder) throws {
|
||||||
|
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
|
|
||||||
|
// Check for null value
|
||||||
|
if container.contains(.productQuantity) {
|
||||||
|
if try container.decodeNil(forKey: .productQuantity) {
|
||||||
|
productQuantity = nil
|
||||||
|
} else {
|
||||||
|
// Try to decode as Int
|
||||||
|
if let intValue = try? container.decode(Float.self, forKey: .productQuantity) {
|
||||||
|
productQuantity = intValue
|
||||||
|
} else if let stringValue = try? container.decode(String.self, forKey: .productQuantity) {
|
||||||
|
// If decoding as Int fails, try to decode as String
|
||||||
|
productQuantity = Float(stringValue)
|
||||||
|
} else {
|
||||||
|
// If decoding as both Int and String fails, handle the error accordingly
|
||||||
|
throw DecodingError.dataCorruptedError(
|
||||||
|
forKey: .productQuantity,
|
||||||
|
in: container,
|
||||||
|
debugDescription: "Unable to decode productQuantity"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
productQuantity = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... (initialize other properties)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,4 @@ import Foundation
|
|||||||
import OpenFoodFacts
|
import OpenFoodFacts
|
||||||
|
|
||||||
let off = OpenFoodFactsClient()
|
let off = OpenFoodFactsClient()
|
||||||
|
off.prod = true
|
||||||
for barcode in ["0737628064502", "0812133010036", "0849092103196", "22007377", "3033610048398", "3222473161867", "3242272260059", "3245412470929", "3502110000880", "3551100749018", "3560070805259", "3560070976867", "3596710352418", "3800020430781", "4000539770708", "4388858946739", "5010251168577", "5015821151720", "5050854517631", "5054070608074", "5201051001076", "5410228196693", "5449000179661"] {
|
|
||||||
do {
|
|
||||||
try await off.getProductByBarcode(barcode)
|
|
||||||
// print(res.product!)
|
|
||||||
} catch {
|
|
||||||
print("[BARCODE: \(barcode)]\(error)")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
@testable import swift_openfoodfacts_sdk
|
@testable import OpenFoodFacts
|
||||||
import XCTest
|
import XCTest
|
||||||
|
|
||||||
final class swift_openfoodfacts_sdkTests: XCTestCase {
|
final class swift_openfoodfacts_sdkTests: XCTestCase {
|
||||||
func testExample() throws {
|
func testBarcodeProcessing() async throws {
|
||||||
// XCTest Documentation
|
let off = OpenFoodFactsClient()
|
||||||
// https://developer.apple.com/documentation/xctest
|
off.prod = true
|
||||||
|
|
||||||
// Defining Test Cases and Test Methods
|
for barcode in ["0737628064502", "0812133010036", "0849092103196", "22007377", "3033610048398", "3222473161867", "3242272260059", "3245412470929", "3502110000880", "3551100749018", "3560070805259", "3560070976867", "3596710352418", "3800020430781", "4000539770708", "4388858946739", "5010251168577", "5015821151720", "5050854517631", "5054070608074", "5201051001076", "5410228196693", "5449000179661", "5601077161035", "6194002510064", "7311041026670", "7640101710236", "8424259826051", "8585002476821", "8712000031312", "8992696419766", "9300601768226", "9300650658615", "9310155100335"] {
|
||||||
// https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods
|
do {
|
||||||
|
let _ = try await off.getProductByBarcode(barcode)
|
||||||
|
} catch {
|
||||||
|
XCTFail("[BARCODE: \(barcode)] \(error)")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user