mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Add the spaces feature announcement sheet. (#4571)
This commit is contained in:
@@ -14,12 +14,22 @@ import XCTest
|
||||
class SpaceListScreenViewModelTests: XCTestCase {
|
||||
var joinedSpacesSubject: CurrentValueSubject<[SpaceRoomProxyProtocol], Never>!
|
||||
var spaceServiceProxy: SpaceServiceProxyMock!
|
||||
var appSettings: AppSettings!
|
||||
|
||||
var viewModel: SpaceListScreenViewModelProtocol!
|
||||
|
||||
var context: SpaceListScreenViewModelType.Context {
|
||||
viewModel.context
|
||||
}
|
||||
|
||||
override func setUp() {
|
||||
AppSettings.resetAllSettings()
|
||||
appSettings = AppSettings()
|
||||
}
|
||||
|
||||
override func tearDown() {
|
||||
AppSettings.resetAllSettings()
|
||||
}
|
||||
|
||||
func testInitialState() {
|
||||
setupViewModel()
|
||||
@@ -59,6 +69,27 @@ class SpaceListScreenViewModelTests: XCTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
func testFeatureAnnouncement() async throws {
|
||||
setupViewModel()
|
||||
XCTAssertFalse(appSettings.hasSeenSpacesAnnouncement)
|
||||
XCTAssertFalse(context.isPresentingFeatureAnnouncement)
|
||||
|
||||
let deferred = deferFulfillment(context.observe(\.isPresentingFeatureAnnouncement)) { $0 == true }
|
||||
viewModel.context.send(viewAction: .screenAppeared)
|
||||
try await deferred.fulfill()
|
||||
XCTAssertTrue(context.isPresentingFeatureAnnouncement)
|
||||
|
||||
viewModel.context.send(viewAction: .featureAnnouncementAppeared)
|
||||
XCTAssertTrue(appSettings.hasSeenSpacesAnnouncement)
|
||||
|
||||
context.isPresentingFeatureAnnouncement = false
|
||||
|
||||
let deferredFailure = deferFailure(context.observe(\.isPresentingFeatureAnnouncement), timeout: 1) { $0 == true }
|
||||
viewModel.context.send(viewAction: .screenAppeared)
|
||||
try await deferredFailure.fulfill()
|
||||
XCTAssertFalse(context.isPresentingFeatureAnnouncement)
|
||||
}
|
||||
|
||||
// MARK: - Helpers
|
||||
|
||||
private func setupViewModel() {
|
||||
@@ -80,6 +111,7 @@ class SpaceListScreenViewModelTests: XCTestCase {
|
||||
|
||||
viewModel = SpaceListScreenViewModel(userSession: userSession,
|
||||
selectedSpacePublisher: .init(nil),
|
||||
appSettings: ServiceLocator.shared.settings,
|
||||
userIndicatorController: UserIndicatorControllerMock())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user