mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 01:20:12 +00:00
Fix flakiness for tests that rely on room members loading quickly.
This commit is contained in:
committed by
Stefan Ceriu
parent
7615e97c7f
commit
f5c43ed68f
@@ -111,6 +111,8 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
|||||||
|
|
||||||
buildTimelineViews()
|
buildTimelineViews()
|
||||||
|
|
||||||
|
updateMembers(roomProxy.membersPublisher.value)
|
||||||
|
|
||||||
// Note: beware if we get to e.g. restore a reply / edit,
|
// Note: beware if we get to e.g. restore a reply / edit,
|
||||||
// maybe we are tracking a non-needed first initial state
|
// maybe we are tracking a non-needed first initial state
|
||||||
trackComposerMode(.default)
|
trackComposerMode(.default)
|
||||||
@@ -270,6 +272,12 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func updateMembers(_ members: [RoomMemberProxyProtocol]) {
|
||||||
|
state.members = members.reduce(into: [String: RoomMemberState]()) { dictionary, member in
|
||||||
|
dictionary[member.userID] = RoomMemberState(displayName: member.displayName, avatarURL: member.avatarURL)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private func setupSubscriptions() {
|
private func setupSubscriptions() {
|
||||||
timelineController.callbacks
|
timelineController.callbacks
|
||||||
.receive(on: DispatchQueue.main)
|
.receive(on: DispatchQueue.main)
|
||||||
@@ -320,13 +328,8 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
|||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
|
|
||||||
roomProxy.membersPublisher
|
roomProxy.membersPublisher
|
||||||
.map { members in
|
|
||||||
members.reduce(into: [String: RoomMemberState]()) { dictionary, member in
|
|
||||||
dictionary[member.userID] = RoomMemberState(displayName: member.displayName, avatarURL: member.avatarURL)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.receive(on: DispatchQueue.main)
|
.receive(on: DispatchQueue.main)
|
||||||
.weakAssign(to: \.state.members, on: self)
|
.sink { [weak self] in self?.updateMembers($0) }
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
|
|
||||||
roomProxy.typingMembersPublisher
|
roomProxy.typingMembersPublisher
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:15512881ca14cf2eae9556c280880243cc619817f87e27ed05887c07e8f21329
|
oid sha256:8f7b0844007df5ea840a959b85171d3c256cf091a69972a1f7f30c0c2280958e
|
||||||
size 112214
|
size 125301
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
func testKickMember() async throws {
|
func testKickMember() async throws {
|
||||||
setup(with: .allMembers)
|
setup(with: .allMembers)
|
||||||
var deferred = deferFulfillment(context.$viewState) { !$0.visibleJoinedMembers.isEmpty }
|
let deferred = deferFulfillment(context.$viewState) { !$0.visibleJoinedMembers.isEmpty }
|
||||||
try await deferred.fulfill()
|
try await deferred.fulfill()
|
||||||
|
|
||||||
context.send(viewAction: .kickMember(viewModel.state.visibleJoinedMembers[0]))
|
context.send(viewAction: .kickMember(viewModel.state.visibleJoinedMembers[0]))
|
||||||
@@ -141,7 +141,7 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
func testBanMember() async throws {
|
func testBanMember() async throws {
|
||||||
setup(with: .allMembers)
|
setup(with: .allMembers)
|
||||||
var deferred = deferFulfillment(context.$viewState) { !$0.visibleJoinedMembers.isEmpty }
|
let deferred = deferFulfillment(context.$viewState) { !$0.visibleJoinedMembers.isEmpty }
|
||||||
try await deferred.fulfill()
|
try await deferred.fulfill()
|
||||||
|
|
||||||
context.send(viewAction: .banMember(viewModel.state.visibleJoinedMembers[0]))
|
context.send(viewAction: .banMember(viewModel.state.visibleJoinedMembers[0]))
|
||||||
@@ -154,7 +154,7 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
func testUnbanMember() async throws {
|
func testUnbanMember() async throws {
|
||||||
setup(with: .allMembers)
|
setup(with: .allMembers)
|
||||||
var deferred = deferFulfillment(context.$viewState) { !$0.visibleJoinedMembers.isEmpty }
|
let deferred = deferFulfillment(context.$viewState) { !$0.visibleJoinedMembers.isEmpty }
|
||||||
try await deferred.fulfill()
|
try await deferred.fulfill()
|
||||||
|
|
||||||
context.send(viewAction: .unbanMember(viewModel.state.visibleJoinedMembers[0]))
|
context.send(viewAction: .unbanMember(viewModel.state.visibleJoinedMembers[0]))
|
||||||
|
|||||||
Reference in New Issue
Block a user