Files
swift-openfoodfacts-sdk/Tests/OpenFoodFactsTests/OpenFoodFactsTests.swift
cdricms 043de16a16 Api v2
2025-12-06 16:33:17 +01:00

51 lines
1.3 KiB
Swift

import XCTest
@testable import OpenFoodFactsSDK
final class OpenFoodFactsTests: XCTestCase {
var client: OpenFoodFactsClient!
override func setUp() {
let config = OpenFoodFactsConfig(
environment: .staging,
userAgent: .init(
appName: "SwiftOpenFoodFactsTests", version: "1.0",
contactInfo: "(test@test.com)")
)
client = OpenFoodFactsClient(config: config)
}
func testProductFetch() async throws {
// Fetch specific fields only
let product = try await client.product(
barcode: "3017620422003", // Nutella
fields: [.code, .productName, .nutriscoreGrade, .nutriments]
)
XCTAssertEqual(product?.code, "3017620422003")
XCTAssertNotNil(product?.productName)
XCTAssertNotNil(product?.nutriscoreGrade)
// This field was NOT requested, so it should be nil (if decoding handles strict optionals)
// or the struct just holds nil.
}
func testSearch() async throws {
let results = try await client.search(
.query("chocolate"),
.tag(tag: .brands, value: "milka"),
.pageSize(5),
.sort(.popularity),
fields: [.nutrientLevels]
)
let jsonResults = try JSONEncoder().encode(results)
try jsonResults.write(to: .init(filePath: "./jsonResults.json"))
XCTAssertFalse(results.isEmpty)
XCTAssertEqual(results.count, 5)
// XCTAssertTrue(
// results.first?.brands?.lowercased().contains("milka") ?? false)
}
}