Skip to content

Commit

Permalink
Fixed RTP2a test.
Browse files Browse the repository at this point in the history
  • Loading branch information
maratal committed Apr 26, 2024
1 parent 150070f commit 1e0c2a7
Showing 1 changed file with 23 additions and 22 deletions.
45 changes: 23 additions & 22 deletions Test/Tests/RealtimeClientPresenceTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1477,11 +1477,10 @@ class RealtimeClientPresenceTests: XCTestCase {
}
}

// FIXME: Fix flaky presence tests and re-enable. See https://ably-real-time.slack.com/archives/C030C5YLY/p1623172436085700
// RTP2

// RTP2a
func skipped__test__045__Presence__PresenceMap__all_incoming_presence_messages_must_be_compared_for_newness_with_the_matching_member_already_in_the_PresenceMap() throws {
func test__045__Presence__PresenceMap__all_incoming_presence_messages_must_be_compared_for_newness_with_the_matching_member_already_in_the_PresenceMap() throws {
let test = Test()
let options = try AblyTests.commonAppSetup(for: test)
let client = ARTRealtime(options: options)
Expand All @@ -1497,38 +1496,40 @@ class RealtimeClientPresenceTests: XCTestCase {
channel.presence.unsubscribe()
partialDone()
}
channel.presence.enterClient("tester", data: nil) { error in
channel.presence.enterClient("tester", data: "existing") { error in
XCTAssertNil(error)
partialDone()
}
}

guard let intialPresenceMessage = channel.internal.presence.members["\(channel.internal.connectionId):tester"] else {
fail("Missing Presence message"); return
}

XCTAssertEqual(intialPresenceMessage.memberKey(), "\(client.connection.id!):tester")

var compareForNewnessMethodCalls = 0
let hook = channel.internal.presence.testSuite_injectIntoMethod(after: #selector(ARTRealtimePresenceInternal.member(_:isNewerThan:))) {
compareForNewnessMethodCalls += 1
var presence1: ARTPresenceMessage!
var presence2: ARTPresenceMessage!

let selector = #selector(ARTRealtimePresenceInternal.member(_:isNewerThan:))

let hook = channel.internal.presence.testSuite_injectIntoMethod(after: selector) {
channel.internal.presence.testSuite_getArgument(from: selector, at: 1) { arg in
presence1 = arg as? ARTPresenceMessage
}
channel.internal.presence.testSuite_getArgument(from: selector, at: 0) { arg in
presence2 = arg as? ARTPresenceMessage
}
}

waitUntil(timeout: testTimeout) { done in
channel.presence.enterClient("tester", data: nil) { error in
channel.presence.enterClient("tester", data: "new") { error in
XCTAssertNil(error)
done()
}
}

guard let updatedPresenceMessage = channel.internal.presence.members["\(channel.internal.connectionId):tester"] else {
fail("Missing Presence message"); return
}

XCTAssertEqual(intialPresenceMessage.memberKey(), updatedPresenceMessage.memberKey())
expect(intialPresenceMessage.timestamp).to(beLessThan(updatedPresenceMessage.timestamp))

XCTAssertEqual(compareForNewnessMethodCalls, 1)
XCTAssertEqual(presence1.clientId, "tester")
XCTAssertEqual(presence2.clientId, "tester")

XCTAssertEqual(presence1.data as! String, "existing")
XCTAssertEqual(presence2.data as! String, "new")

expect(presence1.timestamp).to(beLessThan(presence2.timestamp))

hook.remove()
}
Expand Down Expand Up @@ -1694,7 +1695,7 @@ class RealtimeClientPresenceTests: XCTestCase {
// RTP2c

// FIXME: Fix flaky presence tests and re-enable. See https://ably-real-time.slack.com/archives/C030C5YLY/p1623172436085700
func skipped__test__054__Presence__PresenceMap__all_presence_messages_from_a_SYNC_must_also_be_compared_for_newness_in_the_same_way_as_they_would_from_a_PRESENCE__discard_members_where_messages_have_arrived_before_the_SYNC() throws {
func test__054__Presence__PresenceMap__all_presence_messages_from_a_SYNC_must_also_be_compared_for_newness_in_the_same_way_as_they_would_from_a_PRESENCE__discard_members_where_messages_have_arrived_before_the_SYNC() throws {
let test = Test()
let options = try AblyTests.commonAppSetup(for: test)
let timeBeforeSync = NSDate()
Expand Down

0 comments on commit 1e0c2a7

Please sign in to comment.