Improve tests' reliability (#763)

* Create publisher extension into the unit test target

* Add ViewModelContext test extension

* Refactor BugReportViewModelTests

* Fix failing UTs

* Idea PublishedClosure

* Refactor RoomDetailsViewModelTests

* Replace more Task.yield/Task.sleep

* Move leaveRoom/ignore/unignore under the @MainActor

* Revert "Idea PublishedClosure"

This reverts commit 4ab25291041f0dbd99083baf9d95bc6647f1fd97.

* Make process(viewAction:) sync

* Refactor BugReportViewModel callback to a publisher

* Fix UTs

* Refactor ReportContentViewModel

* Fix ui test build error

* Try make sonar happy

* Empty commit

* Revert "Try make sonar happy"

This reverts commit 97804b19373a8f55f12174ccbf27f1fd8db583b7.

* Rename ui test identifier

* Cleanup

* Callback -> actions refactor

* Update template

* Add publisher in TemplateCoordinator

* Add env variable in IntegrationTests.xctestplan

* Add async sequence extension

* Amend integration test plan

* Remove env variable from target.yml

* Cleanup

* Fix failing UI tests
This commit is contained in:
Alfonso Grillo
2023-04-05 17:07:12 +02:00
committed by GitHub
parent d24ee73d15
commit 2439431287
55 changed files with 273 additions and 233 deletions
@@ -87,33 +87,33 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
var callback: ((RoomScreenViewModelAction) -> Void)?
// swiftlint:disable:next cyclomatic_complexity
override func process(viewAction: RoomScreenViewAction) async {
override func process(viewAction: RoomScreenViewAction) {
switch viewAction {
case .displayRoomDetails:
callback?(.displayRoomDetails)
case .paginateBackwards:
await paginateBackwards()
Task { await paginateBackwards() }
case .itemAppeared(let id):
await timelineController.processItemAppearance(id)
Task { await timelineController.processItemAppearance(id) }
case .itemDisappeared(let id):
await timelineController.processItemDisappearance(id)
Task { await timelineController.processItemDisappearance(id) }
case .itemTapped(let id):
await itemTapped(with: id)
Task { await itemTapped(with: id) }
case .itemDoubleTapped(let id):
itemDoubleTapped(with: id)
case .linkClicked(let url):
MXLog.warning("Link clicked: \(url)")
case .sendMessage:
await sendCurrentMessage()
Task { await sendCurrentMessage() }
case .sendReaction(let emoji, let itemId):
await timelineController.sendReaction(emoji, to: itemId)
Task { await timelineController.sendReaction(emoji, to: itemId) }
case .cancelReply:
state.composerMode = .default
case .cancelEdit:
state.composerMode = .default
state.bindings.composerText = ""
case .markRoomAsRead:
await markRoomAsRead()
Task { await markRoomAsRead() }
case .contextMenuAction(let itemID, let action):
processContentMenuAction(action, itemID: itemID)
case .displayCameraPicker: