Move call presentation from the chats flow into the user session flow. (#4459)

This commit is contained in:
Doug
2025-09-03 17:01:07 +01:00
committed by GitHub
parent eda37eb626
commit c48580aeb4
16 changed files with 299 additions and 260 deletions
@@ -83,6 +83,30 @@ class NavigationTabCoordinatorTests: XCTestCase {
XCTAssertNil(navigationTabCoordinator.fullScreenCoverCoordinator)
}
func testOverlay() {
let tabCoordinator = SomeTestCoordinator()
navigationTabCoordinator.setTabs([.init(coordinator: tabCoordinator, details: .init(tag: .tab, title: "Tab", icon: \.help, selectedIcon: \.helpSolid))])
let overlayCoordinator = SomeTestCoordinator()
navigationTabCoordinator.setOverlayCoordinator(overlayCoordinator)
assertCoordinatorsEqual(navigationTabCoordinator.tabCoordinators, [tabCoordinator])
assertCoordinatorsEqual(overlayCoordinator, navigationTabCoordinator.overlayCoordinator)
// The coordinator should still be retained when changing the presentation mode.
navigationTabCoordinator.setOverlayPresentationMode(.minimized)
assertCoordinatorsEqual(overlayCoordinator, navigationTabCoordinator.overlayCoordinator)
navigationTabCoordinator.setOverlayPresentationMode(.fullScreen)
assertCoordinatorsEqual(overlayCoordinator, navigationTabCoordinator.overlayCoordinator)
navigationTabCoordinator.setOverlayCoordinator(nil)
assertCoordinatorsEqual(navigationTabCoordinator.tabCoordinators, [tabCoordinator])
XCTAssertNil(navigationTabCoordinator.overlayCoordinator)
}
// MARK: - Dismissal Callbacks
func testTabDismissalCallbacks() {
let chatsCoordinator = SomeTestCoordinator()
let spacesCoordinator = SomeTestCoordinator()
@@ -122,6 +146,31 @@ class NavigationTabCoordinatorTests: XCTestCase {
waitForExpectations(timeout: 1.0)
}
func testOverlayDismissalCallback() {
let overlayCoordinator = SomeTestCoordinator()
let expectation = expectation(description: "Wait for callback")
navigationTabCoordinator.setOverlayCoordinator(overlayCoordinator) {
expectation.fulfill()
}
navigationTabCoordinator.setOverlayCoordinator(nil)
waitForExpectations(timeout: 1.0)
}
func testOverlayDismissalCallbackWhenChangingMode() {
let overlayCoordinator = SomeTestCoordinator()
let expectation = expectation(description: "Wait for callback")
expectation.isInverted = true
navigationTabCoordinator.setOverlayCoordinator(overlayCoordinator) {
expectation.fulfill()
}
navigationTabCoordinator.setOverlayPresentationMode(.minimized)
waitForExpectations(timeout: 1.0)
}
// MARK: - Private
private func assertCoordinatorsEqual(_ lhs: CoordinatorProtocol?, _ rhs: CoordinatorProtocol?) {