@ -23,6 +23,44 @@ class LK001UpdateFriendRequestStatusStorageTest : XCTestCase {
}
func test_shouldMigrateFriendRequestStatusCorrectly ( ) {
typealias ThreadFriendRequestStatus = NSInteger
let friendRequestMappings : [ ThreadFriendRequestStatus : LKFriendRequestStatus ] = [
0 : . none ,
1 : . requestSending ,
2 : . requestSent ,
3 : . requestReceived ,
4 : . friends ,
5 : . requestExpired
] ;
var hexEncodedPublicKeyMapping : [ String : ThreadFriendRequestStatus ] = [ : ]
for ( threadFriendRequestStatus , _ ) in friendRequestMappings {
let hexEncodedPublicKey = Curve25519 . generateKeyPair ( ) . hexEncodedPublicKey
hexEncodedPublicKeyMapping [ hexEncodedPublicKey ] = threadFriendRequestStatus
}
storage . dbReadWriteConnection . readWrite { transaction in
for ( hexEncodedPublicKey , friendRequestStatus ) in hexEncodedPublicKeyMapping {
let thread = TSContactThread . getOrCreateThread ( withContactId : hexEncodedPublicKey , transaction : transaction )
thread . friendRequestStatus = friendRequestStatus
thread . save ( with : transaction )
}
}
// W a i t f o r m i g r a t i o n t o c o m p l e t e
let migration = self . expectation ( description : " Migration " )
LK001UpdateFriendRequestStatusStorage ( ) . runUp {
migration . fulfill ( )
}
self . wait ( for : [ migration ] , timeout : 5.0 )
storage . dbReadWriteConnection . readWrite { transaction in
for ( hexEncodedPublicKey , threadFriendRequestStatus ) in hexEncodedPublicKeyMapping {
let expectedFriendRequestStatus = friendRequestMappings [ threadFriendRequestStatus ] !
let friendRequestStatus = self . storage . getFriendRequestStatus ( for : hexEncodedPublicKey , transaction : transaction )
XCTAssertEqual ( friendRequestStatus , expectedFriendRequestStatus , " Expected friend request status \( friendRequestStatus . rawValue ) to match \( expectedFriendRequestStatus . rawValue ) " )
}
}
}
}