diff --git a/WorkflowModals/Sources/AnyModalToastContainer.swift b/WorkflowModals/Sources/AnyModalToastContainer.swift index ec021c37..0aa865d1 100644 --- a/WorkflowModals/Sources/AnyModalToastContainer.swift +++ b/WorkflowModals/Sources/AnyModalToastContainer.swift @@ -187,7 +187,6 @@ public final class AnyModalToastContainerViewController: ScreenViewController( + base: EmptyScreen(), + modals: [] + ) + + let description = modalScreen.viewControllerDescription(environment: .empty) + let viewController = try XCTUnwrap(description.buildViewController() as? AnyModalToastContainerViewController) + + let host = HostViewController() + + show(vc: host) { host in + viewController.view.frame = host.view.bounds + host.view.addSubview(viewController.view) + + XCTAssertNil(viewController.parent) + XCTAssertNotNil(viewController.view.window) + + let updatedScreen = ModalContainer( + base: EmptyScreen(), + modals: [ + Modal( + key: "first-modal", + style: FullScreenModalStyle(), + content: EmptyScreen() + ), + ] + ) + + updatedScreen.viewControllerDescription(environment: .empty) + .update(viewController: viewController) + viewController.view.layoutIfNeeded() + + XCTAssertEqual(host.updateModalsCount, 0) + + viewController.view.removeFromSuperview() + host.addChild(viewController) + host.view.addSubview(viewController.view) + viewController.didMove(toParent: host) + + viewController.view.setNeedsLayout() + viewController.view.layoutIfNeeded() + + XCTAssertEqual(host.updateModalsCount, 1) + XCTAssertEqual(host.aggregatedModalCount, 1) + + viewController.willMove(toParent: nil) + viewController.view.removeFromSuperview() + viewController.removeFromParent() + } + } } extension ModalContainerTests {