Skip to content

Commit

Permalink
Updated storage fake, fixed some warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
Calibretto committed Nov 7, 2023
1 parent edb28bc commit 359d1d8
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 21 deletions.
4 changes: 2 additions & 2 deletions Tests/ConfidenceProviderTests/CacheDataInteractorTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ final class CacheDataInteractorTests: XCTestCase {

Task {
// When cache data add method is called
await cacheDataInteractor.add(resolveToken: "token", flagName: "name", applyTime: Date())
_ = await cacheDataInteractor.add(resolveToken: "token", flagName: "name", applyTime: Date())

// Then event is added with
let cache = await cacheDataInteractor.cache
Expand All @@ -49,7 +49,7 @@ final class CacheDataInteractorTests: XCTestCase {

Task {
// When cache data add method is called
await cacheDataInteractor.add(resolveToken: "token", flagName: "name", applyTime: Date())
_ = await cacheDataInteractor.add(resolveToken: "token", flagName: "name", applyTime: Date())

// Then event is added with
let cache = await cacheDataInteractor.cache
Expand Down
20 changes: 10 additions & 10 deletions Tests/ConfidenceProviderTests/CacheDataTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ final class CacheDataTests: XCTestCase {

// When add event is called
let applyTime = Date()
cacheData.add(resolveToken: "token1", flagName: "flagName", applyTime: applyTime)
_ = cacheData.add(resolveToken: "token1", flagName: "flagName", applyTime: applyTime)

// Then cache data has one resolve event
XCTAssertEqual(cacheData.resolveEvents.count, 1)
Expand All @@ -29,7 +29,7 @@ final class CacheDataTests: XCTestCase {
var cacheData = CacheData(resolveToken: "token1", events: [])

// When add event is called with token that already exist in cache data
cacheData.add(resolveToken: "token1", flagName: "flagName", applyTime: applyTime)
_ = cacheData.add(resolveToken: "token1", flagName: "flagName", applyTime: applyTime)

// Then cache data has one resolve event
XCTAssertEqual(cacheData.resolveEvents.count, 1)
Expand All @@ -46,9 +46,9 @@ final class CacheDataTests: XCTestCase {
var cacheData = try CacheDataUtility.prefilledCacheData()

// When add event is called 3 times with token that already exist in cache data
cacheData.add(resolveToken: "token0", flagName: "flagName", applyTime: Date())
cacheData.add(resolveToken: "token0", flagName: "flagName2", applyTime: Date())
cacheData.add(resolveToken: "token0", flagName: "flagName3", applyTime: Date())
_ = cacheData.add(resolveToken: "token0", flagName: "flagName", applyTime: Date())
_ = cacheData.add(resolveToken: "token0", flagName: "flagName2", applyTime: Date())
_ = cacheData.add(resolveToken: "token0", flagName: "flagName3", applyTime: Date())

// Then cache data has 6 apply events
XCTAssertEqual(cacheData.resolveEvents.first?.events.count, 6)
Expand All @@ -58,11 +58,11 @@ final class CacheDataTests: XCTestCase {
// Given pre filled cache data
let applyTime = Date(timeIntervalSince1970: 1000)
var cacheData = CacheData(resolveToken: "token1", events: [])
cacheData.add(resolveToken: "token1", flagName: "flagName", applyTime: applyTime)
_ = cacheData.add(resolveToken: "token1", flagName: "flagName", applyTime: applyTime)

// When add event is called with token and flagName that already exist in cache
let applyTimeOther = Date(timeIntervalSince1970: 3000)
cacheData.add(resolveToken: "token1", flagName: "flagName", applyTime: applyTimeOther)
_ = cacheData.add(resolveToken: "token1", flagName: "flagName", applyTime: applyTimeOther)

// Then apply record is not overriden
let applyEvent = try XCTUnwrap(cacheData.resolveEvents.first?.events.first)
Expand All @@ -75,9 +75,9 @@ final class CacheDataTests: XCTestCase {
let date = Date(timeIntervalSince1970: 2000)

// When add event is called 3 times with different tokens
cacheData.add(resolveToken: "token1", flagName: "prefilled", applyTime: date)
cacheData.add(resolveToken: "token2", flagName: "prefilled", applyTime: date)
cacheData.add(resolveToken: "token3", flagName: "prefilled", applyTime: date)
_ = cacheData.add(resolveToken: "token1", flagName: "prefilled", applyTime: date)
_ = cacheData.add(resolveToken: "token2", flagName: "prefilled", applyTime: date)
_ = cacheData.add(resolveToken: "token3", flagName: "prefilled", applyTime: date)

// Then cache data has 4 resolve event
XCTAssertEqual(cacheData.resolveEvents.count, 4)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ enum CacheDataUtility {
let applyEvent = FlagApply(name: flagName, applyTime: date)
applyEvents.append(applyEvent)
} else {
cacheData.add(resolveToken: resolveToken, flagName: flagName, applyTime: date)
_ = cacheData.add(resolveToken: resolveToken, flagName: flagName, applyTime: date)
}
}

Expand Down
28 changes: 20 additions & 8 deletions Tests/ConfidenceProviderTests/Helpers/StorageMock.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,41 @@ import XCTest

class StorageMock: Storage {
var data = ""

var saveExpectation: XCTestExpectation?
private let storageQueue = DispatchQueue(label: "com.confidence.storagemock")

convenience init(data: Encodable) throws {
self.init()
try self.save(data: data)
}

func save(data: Encodable) throws {
let dataB = try JSONEncoder().encode(data)
self.data = String(data: dataB, encoding: .utf8) ?? ""
try storageQueue.sync {
let dataB = try JSONEncoder().encode(data)
self.data = String(data: dataB, encoding: .utf8) ?? ""

saveExpectation?.fulfill()
saveExpectation?.fulfill()
}
}

func load<T>(defaultValue: T) throws -> T where T: Decodable {
if data.isEmpty {
return defaultValue
try storageQueue.sync {
if data.isEmpty {
return defaultValue
}
return try JSONDecoder().decode(T.self, from: data.data)
}
return try JSONDecoder().decode(T.self, from: data.data)
}

func clear() throws {
data = ""
storageQueue.sync {
data = ""
}
}

func isEmpty() -> Bool {
storageQueue.sync {
return data.isEmpty
}
}
}

0 comments on commit 359d1d8

Please sign in to comment.