mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			57 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			57 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Swift
		
	
| @testable import SignalServiceKit
 | |
| import XCTest
 | |
| import Curve25519Kit
 | |
| 
 | |
| class LK001UpdateFriendRequestStatusStorageTest : XCTestCase {
 | |
| 
 | |
|     private var storage: OWSPrimaryStorage { OWSPrimaryStorage.shared() }
 | |
| 
 | |
|     override func setUp() {
 | |
|         super.setUp()
 | |
| 
 | |
|         LokiTestUtilities.setUpMockEnvironment()
 | |
|     }
 | |
| 
 | |
|     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)
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         // Wait for the migration to complete
 | |
|         let migration = self.expectation(description: "Migration")
 | |
|         LK001UpdateFriendRequestStatusStorage().runUp {
 | |
|             migration.fulfill()
 | |
|         }
 | |
|         wait(for: [ migration ], timeout: 5)
 | |
| 
 | |
|         storage.dbReadConnection.read { 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).")
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
| }
 |