marshroute
/
NavigationTransitionsHandlerImplTests.swift
98 строк · 4.2 Кб
1import XCTest
2@testable import Marshroute
3
4final class NavigationTransitionsHandlerImplTests: XCTestCase {
5
6var transitionsCoordinatorSpy: TransitionsCoordinatorSpy!
7var navigationTransitionsHandler: NavigationTransitionsHandlerImpl!
8var navigationController = UINavigationController()
9
10override func setUp() {
11super.setUp()
12
13transitionsCoordinatorSpy = TransitionsCoordinatorSpy()
14
15navigationTransitionsHandler = NavigationTransitionsHandlerImpl(
16navigationController: navigationController,
17transitionsCoordinator: transitionsCoordinatorSpy
18)
19}
20
21// MARK: - TransitionsHandler
22
23func testThatNavigationTransitionsHandlerForwards_PerformTransition_CallsToItsTransitionsCoordinator() {
24// Given
25let presentationContext = TransitionContextsCreator.createPresentationTransitionContext()
26
27// When
28navigationTransitionsHandler.performTransition(context: presentationContext)
29
30// Then
31if case .forAnimating(let context, let transitionsHandler) = transitionsCoordinatorSpy.coordinatePerformingTransition! {
32XCTAssert(context == presentationContext)
33XCTAssert(transitionsHandler === navigationTransitionsHandler)
34} else { XCTFail() }
35}
36
37func testThatNavigationTransitionsHandlerForwards_UndoTransitionsAfter_CallsToItsTransitionsCoordinator() {
38// Given
39let generatedTansitionId = TransitionIdGeneratorImpl().generateNewTransitionId()
40
41// When
42navigationTransitionsHandler.undoTransitionsAfter(transitionId: generatedTansitionId)
43
44// Then
45if case .forAnimating(let transitionId, let transitionsHandler) = transitionsCoordinatorSpy.coordinateUndoingTransitionsAfter! {
46XCTAssert(transitionId == generatedTansitionId)
47XCTAssert(transitionsHandler === navigationTransitionsHandler)
48} else { XCTFail() }
49}
50
51func testThatNavigationTransitionsHandlerForwards_UndoTransitionWith_CallsToItsTransitionsCoordinator() {
52// Given
53let generatedTansitionId = TransitionIdGeneratorImpl().generateNewTransitionId()
54
55// When
56navigationTransitionsHandler.undoTransitionWith(transitionId: generatedTansitionId)
57
58// Then
59if case .forAnimating(let transitionId, let transitionsHandler) = transitionsCoordinatorSpy.coordinateUndoingTransitionWith! {
60XCTAssert(transitionId == generatedTansitionId)
61XCTAssert(transitionsHandler === navigationTransitionsHandler)
62} else { XCTFail() }
63}
64
65func testThatNavigationTransitionsHandlerForwards_UndoAllChainedTransitions_CallsToItsTransitionsCoordinator() {
66// When
67navigationTransitionsHandler.undoAllChainedTransitions()
68
69// Then
70if case .forAnimating(let transitionsHandler) = transitionsCoordinatorSpy.coordinateUndoingAllChainedTransitions! {
71XCTAssert(transitionsHandler === navigationTransitionsHandler)
72} else { XCTFail() }
73}
74
75func testThatNavigationTransitionsHandlerForwards_UndoAllTransitions_CallsToItsTransitionsCoordinator() {
76// When
77navigationTransitionsHandler.undoAllTransitions()
78
79// Then
80if case .forAnimating(let transitionsHandler) = transitionsCoordinatorSpy.coordinateUndoingAllTransitions! {
81XCTAssert(transitionsHandler === navigationTransitionsHandler)
82} else { XCTFail() }
83}
84
85func testThatNavigationTransitionsHandlerForwards_ResetWithTransition_CallsToItsTransitionsCoordinator() {
86// Given
87let resettingContext = TransitionContextsCreator.createRegisteringEndpointNavigationControllerTransitionContext()
88
89// When
90navigationTransitionsHandler.resetWithTransition(context: resettingContext)
91
92// Then
93if case .forAnimating(let context, let transitionsHandler) = transitionsCoordinatorSpy.coordinateResettingWithTransition! {
94XCTAssert(context == resettingContext)
95XCTAssert(transitionsHandler === navigationTransitionsHandler)
96} else { XCTFail() }
97}
98}
99