From 5dc08de697886e3a3a55e05d0b56fea14f537127 Mon Sep 17 00:00:00 2001 From: Laurent Date: Mon, 14 Apr 2025 10:44:26 +0200 Subject: [PATCH] Test for tryPutBeforeUpdating --- PadelClub/Data/DataStore.swift | 4 ++++ PadelClubTests/ServerDataTests.swift | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/PadelClub/Data/DataStore.swift b/PadelClub/Data/DataStore.swift index a3783e6..1482175 100644 --- a/PadelClub/Data/DataStore.swift +++ b/PadelClub/Data/DataStore.swift @@ -246,6 +246,10 @@ class DataStore: ObservableObject { } + func tryUserUpdate(userCopy: CustomUser) async throws -> CustomUser? { + return try await self.userStorage.tryPutBeforeUpdating(userCopy) + } + // func copyToLocalServer(tournament: Tournament) { // // Task { diff --git a/PadelClubTests/ServerDataTests.swift b/PadelClubTests/ServerDataTests.swift index dcc0837..c0d7984 100644 --- a/PadelClubTests/ServerDataTests.swift +++ b/PadelClubTests/ServerDataTests.swift @@ -435,7 +435,7 @@ final class ServerDataTests: XCTestCase { let transactionId = UInt64.random(in: 0...100000) let quantity = Int.random(in: 0...10) - let purchase: Purchase = Purchase(user: userId, transactionId: transactionId, purchaseDate: Date(), productId: "app.padelclub.productId", quantity: quantity, revocationDate: Date(), expirationDate: Date()) + let purchase: Purchase = Purchase(transactionId: transactionId, user: userId, purchaseDate: Date(), productId: "app.padelclub.productId", quantity: quantity, revocationDate: Date(), expirationDate: Date()) if let p: Purchase = try await StoreCenter.main.service().post(purchase) { @@ -476,4 +476,21 @@ final class ServerDataTests: XCTestCase { } } + /// needs a user with the licenceId set to "5186803D" to suceed + func testTryPutBeforeUpdating() async throws { + + let service = try StoreCenter.main.service() + let user: CustomUser = try await service.login(username: self.username, password: self.password) + + let copy: CustomUser = user.copy() + copy.licenceId = "5186803D" + do { + _ = try await DataStore.shared.tryUserUpdate(userCopy: copy) + XCTFail("should fail because licenceId is the same than dummy's") + } catch { + Logger.error(error) + } + + } + }