* Initial plan
* Migrate 3 test files from XCTest to Swift Testing
- MediaUploadPreviewScreenViewModelTests: @MainActor @Suite struct with init(),
BundleFinder class for Bundle(for:), mutating test/setup functions,
[self] capture replacing [weak self] in closures
- NotificationManagerTests: @MainActor @Suite final class with init()/deinit,
expectation/fulfillment(of:) replaced with confirmation(...), test_ prefix stripped
- NotificationSettingsScreenViewModelTests: @MainActor @Suite struct with
init() throws, non-optional stored properties, test prefix stripped
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Migrate 3 XCTest files to Swift Testing
- NotificationSettingsEditScreenViewModelTests: @MainActor @Suite struct with init() throws, mutating test methods
- TimelineViewModelTests: @MainActor @Suite final class with init() async throws + deinit
- AttributedStringBuilderTests: @Suite struct with init() async throws
All XCT assertions replaced with #expect/#require/Issue.record
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Migrate 4 test files from XCTest to Swift Testing
- TimelineMediaPreviewViewModelTests: @Suite struct, mutating @Test funcs,
testLoadingItem renamed to loadingItem (called internally by other tests)
- ServerConfirmationScreenViewModelTests: @Suite final class with init()/deinit
- CompletionSuggestionServiceTests: @Suite struct with init()
- RoomFlowCoordinatorTests: @Suite final class with deinit
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Migrate 4 test files from XCTest to Swift Testing
- VoiceMessageRecorderTests: @Suite struct with init() async throws,
added BundleFinder class for Bundle lookup, migrated all assertions
- SpaceScreenViewModelTests: @Suite struct, private mutating setupViewModel,
all test funcs mutating, XCTestExpectation → confirmation
- RoomNotificationSettingsScreenViewModelTests: @Suite struct with
init() throws, cancellable tests marked mutating
- JoinRoomScreenViewModelTests: @Suite final class with init()/deinit,
XCTestExpectation → confirmation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Migrate 6 test files from XCTestCase to Swift Testing
Co-authored-by: pixlwave <6060466+pixlwave@users.noreply.github.com>
* Fix trailing blank line in RoomPollsHistoryScreenViewModelTests
Co-authored-by: pixlwave <6060466+pixlwave@users.noreply.github.com>
* Migrate 3 test files from XCTest to Swift Testing
- MediaUploadingPreprocessorTests: @Suite final class with init()/deinit,
removed executionTimeAllowance, XCTAssertEqual(accuracy:) → abs(Double)
- SecurityAndPrivacyScreenViewModelTests: @MainActor @Suite final class,
5 expectation+fulfillment → await confirmation(...)
- CreateRoomViewModelTests: @MainActor @Suite final class,
4 expectation+fulfillment → await confirmation(...)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Migrate RoomScreenViewModelTests and RoomDetailsScreenViewModelTests to Swift Testing
- Replace XCTest with Testing framework
- RoomScreenViewModelTests: final class with init() async throws + deinit
- RoomDetailsScreenViewModelTests: struct with init() and mutating funcs
- Convert XCT assertions to #expect / Issue.record
- Convert XCTestExpectation patterns to confirmation { confirm in }
- Strip 'test' prefix from all test function names
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Migrate ComposerToolbarViewModelTests from XCTest to Swift Testing
- Replace import XCTest with import Testing
- Convert XCTestCase class to @MainActor @Suite final class
- Replace setUp()/tearDown() with init()/deinit
- Strip 'test' prefix from all 41 test method names and add @Test
- Replace XCTAssert* with #expect()/#require()
- Replace try XCTUnwrap() with try #require()
- Convert expectation+wait patterns to deferFulfillment with PassthroughSubject
- Convert isInverted expectation to boolean flag checked after await
- Use deferFulfillment on $viewState for state-transition tests
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address comments with Copilot.
* Fix the failing tests.
* Fixed flaky tests (#5137)
resolved flaky tests
* Tweaks and fixes.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: pixlwave <6060466+pixlwave@users.noreply.github.com>
Co-authored-by: Doug <douglase@element.io>
Co-authored-by: Mauro <34335419+Velin92@users.noreply.github.com>
* Stop using Rust's JoinRule.private in mocks.
It isn't used anywhere else (see MSC4413 for more context).
* Use our own JoinRule (and AllowRule) types.
* Update ElementX/Sources/Services/Room/JoinRule.swift
Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>
---------
Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>
* create space flow implementation
# Conflicts:
# ElementX/Sources/FlowCoordinators/SpacesTabFlowCoordinator.swift
* create space flow fully implemented and working
* updated tests and updated the create room camera button UI
* updated the avatar button in the create room screen, and added power level overrides for spaces
* update power level content overrides to behave just as EW, and removed ask to join when creating a space regardless of the FF
* updated UI tests snapshots
* invite for a public space should always be forced to 50
* pr suggestions + PL override fix
* fix a missed code change
* Introduce a basic StartChatFlowCoordinator.
* Move the rest of the start chat flow from the screen coordinator into the flow coordinator.
* Add a UI test for the entire start chat flow.
* Refactor CreateRoom… to CreateRoomScreen…
* Present members of a space
* present the members modally from the space
* Implemented a room members flow coordinator to make such flow more modular and reusable
this is required since we will need to reuse this module also in the space settings, and later we could also replace it in the RoomFlowCoordinator.
* the implementation to support at least the SpaceFlowCoordinator is done a follow UP should do the refactor.
* remove modal usage from the flow, we want to always be a navigation flow
* Improved and implemented the room navigation in the members flow coordinator
* pr suggestions and refactored the start chat flow and the invite screen
* updated copies for managing room members
* Update ElementX/Sources/Screens/Spaces/SpaceScreen/SpaceScreenViewModel.swift
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
---------
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* Don't set the room topic when creating a room if it is blank.
Also fix the styling on the room name text field.
* Snapshots
* Add a test for the empty topic.
* added the address section
* updated code and strings
* syncing name and address
* improved code
* added a way to reset the state
* better documentation
* update strings
* handling the alias
* alias error state
* update strings
* error handling
* improved the error handling
* new preview tests, even if they do not work well
* improved tests
* unit tests
* pr comments and using the correct value
* fix
* pr comments
* to improve safety and control of the FF
* fixed a test
* updated tests
* update SDK
* #750 - Convert the SoftLogoutScreen to combine
* #750 - Convert the UserSessionFlowCoordinator to Combine
* #750 - Convert the AnalyticsPromptScreen to Combine
* #750 - Convert the LoginScreen to Combine
* #750 - Convert the ServerSelectionScreen to Combine
* #750 - Convert the EmojiPickerScreen to Combine
* #750 - Convert the HomeScreen to Combine
* #750 - Convert the MediaUploadPreviewScreen to Combine
* #750 - Convert the OnboardingScreen to Combine
* Rename `Onboarding` to `OnboardingScreen`
* #750 - Convert the ReportContentScreen to Combine
* #750 - Convert the RoomDetailsSscreen to Combine
* #750 - Convert the RoomMemberDetailsScreen to Combine
* #750 - Convert the RoomMembersListScreen to Combine
* #750 - Convert the SessionVerificationScreen to Combine
* #750 - Convert the SettingsScreen to Combine
* #750 - Convert the AdvancedSettingsScreen to Combine
* #750 - Convert the DeveloperOptionsScreen to Combine
* Fix the unit tests
* Use .sink action and the same cancellables constructor everywhere
* Cleanup cancellables when setting up tests
Squashed commits:
[d64bb3bb] Stop using the ServiceLocator directly in the ScreenTrackerViewModifier
[37c46ab9] Rename Analytics to AnalyticsService
[8852a371] #920 - Cleanup ServiceLocator usages