diff --git a/.swiftpm/product.xctestplan b/.swiftpm/product.xctestplan new file mode 100644 index 0000000..100ec99 --- /dev/null +++ b/.swiftpm/product.xctestplan @@ -0,0 +1,24 @@ +{ + "configurations" : [ + { + "id" : "CBA25149-CE25-449E-A308-EE7557C98D23", + "name" : "Test Scheme Action", + "options" : { + + } + } + ], + "defaultOptions" : { + + }, + "testTargets" : [ + { + "target" : { + "containerPath" : "container:", + "identifier" : "Coffee-KitTests", + "name" : "Coffee-KitTests" + } + } + ], + "version" : 1 +} diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/Coffee-Kit.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/Coffee-Kit.xcscheme index 72bff8c..94028d1 100644 --- a/.swiftpm/xcode/xcshareddata/xcschemes/Coffee-Kit.xcscheme +++ b/.swiftpm/xcode/xcshareddata/xcschemes/Coffee-Kit.xcscheme @@ -27,8 +27,13 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - shouldAutocreateTestPlan = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + diff --git a/Sources/Coffee-Kit/Webservice/Manager/MenuManager.swift b/Sources/Coffee-Kit/Webservice/Manager/MenuManager.swift index f3a9bcf..46b359b 100644 --- a/Sources/Coffee-Kit/Webservice/Manager/MenuManager.swift +++ b/Sources/Coffee-Kit/Webservice/Manager/MenuManager.swift @@ -17,8 +17,8 @@ import Foundation // MARK: - Computed Properties - public var itemSequence: CoffeeService { - return CoffeeService(databaseAPI: webservice.databaseAPI) + public var itemSequence: ProductService { + return ProductService(databaseAPI: webservice.databaseAPI) } // MARK: - Initializer diff --git a/Sources/Coffee-Kit/Webservice/Services/CoffeeService.swift b/Sources/Coffee-Kit/Webservice/Services/ProductService.swift similarity index 78% rename from Sources/Coffee-Kit/Webservice/Services/CoffeeService.swift rename to Sources/Coffee-Kit/Webservice/Services/ProductService.swift index 6934c0b..0fbf3cc 100644 --- a/Sources/Coffee-Kit/Webservice/Services/CoffeeService.swift +++ b/Sources/Coffee-Kit/Webservice/Services/ProductService.swift @@ -8,25 +8,25 @@ import Foundation @MainActor -public struct CoffeeService { +public struct ProductService { // MARK: Properties - let coffeeURL: URL + let productURL: URL // MARK: Initializer public init(databaseAPI: DatabaseAPI) { - self.coffeeURL = databaseAPI.baseURL / "coffee" - print(coffeeURL) + self.productURL = databaseAPI.baseURL / "coffee" + print(productURL) } // MARK: Methods public func getIds() async throws -> [String] { - let coffeeIdsUrl = coffeeURL / "ids" - let (data, response) = try await URLSession.shared.data(from: coffeeIdsUrl) + let productIdsUrl = productURL / "ids" + let (data, response) = try await URLSession.shared.data(from: productIdsUrl) - guard let drinkIds = try? JSONDecoder().decode([String].self, from: data) else { + guard let productIds = try? JSONDecoder().decode([String].self, from: data) else { print(response) print(""" Error in \(#file) @@ -36,15 +36,15 @@ public struct CoffeeService { throw FetchError.decodingError } - return drinkIds + return productIds } public func load(by id: consuming String) async throws -> Product { - let coffeeByIdUrl = coffeeURL / "id" / id + let coffeeByIdUrl = productURL / "id" / id let (data, response) = try await URLSession.shared.data(from: coffeeByIdUrl) - guard let coffee = try? JSONDecoder().decode(Product.self, from: data) else { + guard let product = try? JSONDecoder().decode(Product.self, from: data) else { print(response) let stacktrace = Thread.callStackSymbols.joined(separator: "\n") @@ -57,7 +57,7 @@ public struct CoffeeService { throw FetchError.decodingError } - return coffee + return product } public func load(by ids: [String]) async -> AsyncThrowingStream { @@ -65,8 +65,8 @@ public struct CoffeeService { Task { do { for id in ids { - let coffeeModel = try await load(by: id) - continuation.yield(coffeeModel) + let productModel = try await load(by: id) + continuation.yield(productModel) } continuation.finish() } catch { diff --git a/Tests/Coffee-KitTests/Coffee_LoverTests.swift b/Tests/Coffee-KitTests/Coffee_LoverTests.swift index 1326c42..9dd562e 100644 --- a/Tests/Coffee-KitTests/Coffee_LoverTests.swift +++ b/Tests/Coffee-KitTests/Coffee_LoverTests.swift @@ -10,7 +10,7 @@ import Foundation import XCTest final class Coffee_LoverTests: XCTestCase { - fileprivate func decodingCoffeTest() async throws { + func testDecodingProduct() throws { // Write your test here and use APIs like `#expect(...)` to check expected conditions. let ressource = """ @@ -35,4 +35,21 @@ final class Coffee_LoverTests: XCTestCase { XCTAssertEqual(product.id.uuidString, "e074867a-0c6a-49ff-87ca-b1ba5dae5236".uppercased()) } + + func testEncodingProduct() { + let product = Product() + guard let data = try? JSONEncoder().encode(product) + else { + XCTFail("Encoding failed") + return + } + + guard let json = String(data: data, encoding: .utf8) + else { + XCTFail("Decoding failed") + return + } + + XCTAssertFalse(json.isEmpty) + } } diff --git a/Tests/Coffee-KitTests/OrderTests.swift b/Tests/Coffee-KitTests/OrderTests.swift index dd940bb..e0527c9 100644 --- a/Tests/Coffee-KitTests/OrderTests.swift +++ b/Tests/Coffee-KitTests/OrderTests.swift @@ -10,10 +10,10 @@ import Foundation import XCTest final class OrderTests: XCTestCase { - fileprivate func testTakingOrder() async { + func testTakingOrder() async { let databaseAPI = DatabaseAPI.dev let webservice = await WebserviceProvider(inMode: databaseAPI) - let orderManager = await OrderManager(from: webservice) + _ = await OrderManager(from: webservice) // // var products = orderManager.shoppingCard // products.add( CakeModel(), to: "Cakes") @@ -25,4 +25,6 @@ final class OrderTests: XCTestCase { // // await orderManager.takeOrder() } + + }