@@ -100,10 +100,69 @@ class UserSessionCardViewDataTests: XCTestCase {
100100
101101 XCTAssertEqual ( verificationState, . permanentlyUnverified)
102102 }
103+
104+ func testObsoletedDeviceInformation_someMatch( ) {
105+ let mxSession = MockSession ( canCrossSign: true )
106+ let dataProvider = UserSessionsDataProvider ( session: mxSession)
107+
108+ let accountDataEvents : [ String : Any ] = [
109+ " io.element.matrix_client_information.D " : " " ,
110+ " foo " : " "
111+ ]
112+
113+ let expectedObsoletedEvents : Set = [
114+ " io.element.matrix_client_information.D "
115+ ]
116+
117+ let obsoletedEvents = dataProvider. obsoletedDeviceAccountData ( deviceList: . mockDevices, accountDataEvents: accountDataEvents)
118+
119+ XCTAssertEqual ( obsoletedEvents, expectedObsoletedEvents)
120+ }
121+
122+ func testObsoletedDeviceInformation_noMatch( ) {
123+ let mxSession = MockSession ( canCrossSign: true )
124+ let dataProvider = UserSessionsDataProvider ( session: mxSession)
125+
126+ let accountDataEvents : [ String : Any ] = [
127+ " io.element.matrix_client_information.C " : " " ,
128+ " foo " : " "
129+ ]
130+
131+ let expectedObsoletedEvents : Set < String > = [ ]
132+ let obsoletedEvents = dataProvider. obsoletedDeviceAccountData ( deviceList: . mockDevices, accountDataEvents: accountDataEvents)
133+
134+ XCTAssertEqual ( obsoletedEvents, expectedObsoletedEvents)
135+ }
136+
137+ func testObsoletedDeviceInformation_allMatch( ) {
138+ let mxSession = MockSession ( canCrossSign: true )
139+ let dataProvider = UserSessionsDataProvider ( session: mxSession)
140+
141+ let expectedObsoletedEvents = Set ( [ " D " , " E " , " F " ] . map { " io.element.matrix_client_information. \( $0) " } )
142+
143+ let accountDataEvents : [ String : Any ] = expectedObsoletedEvents. reduce ( into: [ " foo " : " " ] ) { partialResult, value in
144+ partialResult [ value] = " "
145+ }
146+
147+ let obsoletedEvents = dataProvider. obsoletedDeviceAccountData ( deviceList: . mockDevices, accountDataEvents: accountDataEvents)
148+
149+ XCTAssertEqual ( obsoletedEvents, expectedObsoletedEvents)
150+ }
103151}
104152
105153// MARK: Mocks
106154
155+ private extension Array where Element == MXDevice {
156+ static let mockDevices : [ MXDevice ] = {
157+ [ " A " , " B " , " C " ]
158+ . map {
159+ let device = MXDevice ( )
160+ device. deviceId = $0
161+ return device
162+ }
163+ } ( )
164+ }
165+
107166// Device ID constants.
108167private extension String {
109168 static var otherDeviceA : String { " abcdef " }
0 commit comments