Skip to content

Commit

Permalink
Add overlay/fullScreenCover tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
pixlwave committed Aug 16, 2024
1 parent 5748e3c commit b9fa309
Showing 1 changed file with 83 additions and 0 deletions.
83 changes: 83 additions & 0 deletions UnitTests/Sources/NavigationSplitCoordinatorTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,52 @@ class NavigationSplitCoordinatorTests: XCTestCase {
assertCoordinatorsEqual(someOtherSheetCoordinator, navigationSplitCoordinator.sheetCoordinator)
}

func testFullScreenCover() {
let sidebarCoordinator = SomeTestCoordinator()
navigationSplitCoordinator.setSidebarCoordinator(sidebarCoordinator)
let detailCoordinator = SomeTestCoordinator()
navigationSplitCoordinator.setDetailCoordinator(detailCoordinator)

let fullScreenCoordinator = SomeTestCoordinator()
navigationSplitCoordinator.setFullScreenCoverCoordinator(fullScreenCoordinator)

assertCoordinatorsEqual(sidebarCoordinator, navigationSplitCoordinator.sidebarCoordinator)
assertCoordinatorsEqual(detailCoordinator, navigationSplitCoordinator.detailCoordinator)
assertCoordinatorsEqual(fullScreenCoordinator, navigationSplitCoordinator.fullScreenCoverCoordinator)

navigationSplitCoordinator.setFullScreenCoverCoordinator(nil)

assertCoordinatorsEqual(sidebarCoordinator, navigationSplitCoordinator.sidebarCoordinator)
assertCoordinatorsEqual(detailCoordinator, navigationSplitCoordinator.detailCoordinator)
XCTAssertNil(navigationSplitCoordinator.fullScreenCoverCoordinator)
}

func testOverlay() {
let sidebarCoordinator = SomeTestCoordinator()
navigationSplitCoordinator.setSidebarCoordinator(sidebarCoordinator)
let detailCoordinator = SomeTestCoordinator()
navigationSplitCoordinator.setDetailCoordinator(detailCoordinator)

let overlayCoordinator = SomeTestCoordinator()
navigationSplitCoordinator.setOverlayCoordinator(overlayCoordinator)

assertCoordinatorsEqual(sidebarCoordinator, navigationSplitCoordinator.sidebarCoordinator)
assertCoordinatorsEqual(detailCoordinator, navigationSplitCoordinator.detailCoordinator)
assertCoordinatorsEqual(overlayCoordinator, navigationSplitCoordinator.overlayCoordinator)

// The coordinator should still be retained when changing the presentation mode.
navigationSplitCoordinator.setOverlayPresentationMode(.minimized)
assertCoordinatorsEqual(overlayCoordinator, navigationSplitCoordinator.overlayCoordinator)
navigationSplitCoordinator.setOverlayPresentationMode(.fullScreen)
assertCoordinatorsEqual(overlayCoordinator, navigationSplitCoordinator.overlayCoordinator)

navigationSplitCoordinator.setOverlayCoordinator(nil)

assertCoordinatorsEqual(sidebarCoordinator, navigationSplitCoordinator.sidebarCoordinator)
assertCoordinatorsEqual(detailCoordinator, navigationSplitCoordinator.detailCoordinator)
XCTAssertNil(navigationSplitCoordinator.overlayCoordinator)
}

func testSidebarReplacementCallbacks() {
let sidebarCoordinator = SomeTestCoordinator()

Expand Down Expand Up @@ -135,6 +181,43 @@ class NavigationSplitCoordinatorTests: XCTestCase {
waitForExpectations(timeout: 1.0)
}

func testFullScreenCoverDismissalCallback() {
let fullScreenCoordinator = SomeTestCoordinator()

let expectation = expectation(description: "Wait for callback")
navigationSplitCoordinator.setFullScreenCoverCoordinator(fullScreenCoordinator) {
expectation.fulfill()
}

navigationSplitCoordinator.setFullScreenCoverCoordinator(nil)
waitForExpectations(timeout: 1.0)
}

func testOverlayDismissalCallback() {
let overlayCoordinator = SomeTestCoordinator()

let expectation = expectation(description: "Wait for callback")
navigationSplitCoordinator.setOverlayCoordinator(overlayCoordinator) {
expectation.fulfill()
}

navigationSplitCoordinator.setOverlayCoordinator(nil)
waitForExpectations(timeout: 1.0)
}

func testOverlayDismissalCallbackWhenChangingMode() {
let overlayCoordinator = SomeTestCoordinator()

let expectation = expectation(description: "Wait for callback")
expectation.isInverted = true
navigationSplitCoordinator.setOverlayCoordinator(overlayCoordinator) {
expectation.fulfill()
}

navigationSplitCoordinator.setOverlayPresentationMode(.minimized)
waitForExpectations(timeout: 1.0)
}

func testEmbeddedStackPresentsSheetThroughSplit() {
let sidebarNavigationStackCoordinator = NavigationStackCoordinator(navigationSplitCoordinator: navigationSplitCoordinator)
sidebarNavigationStackCoordinator.setRootCoordinator(SomeTestCoordinator())
Expand Down

0 comments on commit b9fa309

Please sign in to comment.