ios/BitwardenKit/UI/Platform/DebugMenu/DebugMenuCoordinatorTests.swift
2025-12-09 12:09:44 -06:00

67 lines
1.7 KiB
Swift

import BitwardenKit
import BitwardenKitMocks
import SwiftUI
import XCTest
class DebugMenuCoordinatorTests: BitwardenTestCase {
// MARK: Properties
var configService: MockConfigService!
var delegate: MockDebugMenuCoordinatorDelegate!
var stackNavigator: MockStackNavigator!
var subject: DebugMenuCoordinator!
// MARK: Setup & Teardown
override func setUp() {
super.setUp()
configService = MockConfigService()
delegate = MockDebugMenuCoordinatorDelegate()
stackNavigator = MockStackNavigator()
subject = DebugMenuCoordinator(
delegate: delegate,
services: ServiceContainer.withMocks(
configService: configService,
),
stackNavigator: stackNavigator,
)
}
override func tearDown() {
super.tearDown()
configService = nil
delegate = nil
stackNavigator = nil
subject = nil
}
// MARK: Tests
/// The coordinator has error alert services.
@MainActor
func test_errorAlertServices() {
XCTAssertNotNil(subject.errorAlertServices)
}
/// `navigate(to:)` with `.dismiss` dismisses the view.
@MainActor
func test_navigate_dismiss() throws {
subject.navigate(to: .dismiss)
let action = try XCTUnwrap(stackNavigator.actions.last)
XCTAssertEqual(action.type, .dismissedWithCompletionHandler)
XCTAssertTrue(delegate.didDismissDebugMenuCalled)
}
/// `start()` correctly shows the `DebugMenuView`.
@MainActor
func test_start() {
subject.start()
XCTAssertTrue(stackNavigator.actions.last?.view is DebugMenuView)
}
}