@@ -2,13 +2,17 @@ import XCTest
22import Cache
33
44final class StorageTests : XCTestCase {
5- private var storage : Storage !
5+ private var storage : Storage < User > !
66 let user = User ( firstName: " John " , lastName: " Snow " )
77
88 override func setUp( ) {
99 super. setUp ( )
1010
11- storage = try ! Storage ( diskConfig: DiskConfig ( name: " Thor " ) , memoryConfig: MemoryConfig ( ) )
11+ storage = try ! Storage < User > (
12+ diskConfig: DiskConfig ( name: " Thor " ) ,
13+ memoryConfig: MemoryConfig ( ) ,
14+ transformer: TransformerFactory . forCodable ( ofType: User . self)
15+ )
1216 }
1317
1418 override func tearDown( ) {
@@ -18,7 +22,7 @@ final class StorageTests: XCTestCase {
1822
1923 func testSync( ) throws {
2024 try storage. setObject ( user, forKey: " user " )
21- let cachedObject = try storage. object ( ofType : User . self , forKey: " user " )
25+ let cachedObject = try storage. object ( forKey: " user " )
2226
2327 XCTAssertEqual ( cachedObject, user)
2428 }
@@ -27,7 +31,7 @@ final class StorageTests: XCTestCase {
2731 let expectation = self . expectation ( description: #function)
2832 storage. async . setObject ( user, forKey: " user " , expiry: nil , completion: { _ in } )
2933
30- storage. async . object ( ofType : User . self , forKey: " user " , completion: { result in
34+ storage. async . object ( forKey: " user " , completion: { result in
3135 switch result {
3236 case . value( let cachedUser) :
3337 XCTAssertEqual ( cachedUser, self . user)
@@ -50,20 +54,23 @@ final class StorageTests: XCTestCase {
5054 let lastName : String
5155 }
5256
57+ let person1Storage = storage. transformCodable ( ofType: Person1 . self)
58+ let person2Storage = storage. transformCodable ( ofType: Person2 . self)
59+
5360 // Firstly, save object of type Person1
5461 let person = Person1 ( fullName: " John Snow " )
5562
56- try ! storage . setObject ( person, forKey: " person " )
57- XCTAssertNil ( try ? storage . object ( ofType : Person2 . self , forKey: " person " ) )
63+ try ! person1Storage . setObject ( person, forKey: " person " )
64+ XCTAssertNil ( try ? person2Storage . object ( forKey: " person " ) )
5865
5966 // Later, convert to Person2, do the migration, then overwrite
60- let tempPerson = try ! storage . object ( ofType : Person1 . self , forKey: " person " )
67+ let tempPerson = try ! person1Storage . object ( forKey: " person " )
6168 let parts = tempPerson. fullName. split ( separator: " " )
6269 let migratedPerson = Person2 ( firstName: String ( parts [ 0 ] ) , lastName: String ( parts [ 1 ] ) )
63- try ! storage . setObject ( migratedPerson, forKey: " person " )
70+ try ! person2Storage . setObject ( migratedPerson, forKey: " person " )
6471
6572 XCTAssertEqual (
66- try ! storage . object ( ofType : Person2 . self , forKey: " person " ) . firstName,
73+ try ! person2Storage . object ( forKey: " person " ) . firstName,
6774 " John "
6875 )
6976 }
@@ -79,11 +86,14 @@ final class StorageTests: XCTestCase {
7986 let lastName : String
8087 }
8188
89+ let personStorage = storage. transformCodable ( ofType: Person . self)
90+ let alienStorage = storage. transformCodable ( ofType: Alien . self)
91+
8292 let person = Person ( firstName: " John " , lastName: " Snow " )
83- try ! storage . setObject ( person, forKey: " person " )
93+ try ! personStorage . setObject ( person, forKey: " person " )
8494
8595 // As long as it has same properties, it works too
86- let cachedObject = try ! storage . object ( ofType : Alien . self , forKey: " person " )
96+ let cachedObject = try ! alienStorage . object ( forKey: " person " )
8797 XCTAssertEqual ( cachedObject. firstName, " John " )
8898 }
8999}
0 commit comments