marshroute
/
SplitViewTransitionsHandlerImplTests.swift
123 строки · 5.5 Кб
1import XCTest
2@testable import Marshroute
3
4final class SplitViewTransitionsHandlerImplTests: XCTestCase {
5
6var transitionsCoordinatorSpy: TransitionsCoordinatorSpy!
7var splitViewTransitionsHandler: SplitViewTransitionsHandlerImpl!
8var splitViewController = UISplitViewController()
9
10override func setUp() {
11super.setUp()
12
13transitionsCoordinatorSpy = TransitionsCoordinatorSpy()
14
15splitViewTransitionsHandler = SplitViewTransitionsHandlerImpl(
16splitViewController: splitViewController,
17transitionsCoordinator: transitionsCoordinatorSpy
18)
19}
20
21// MARK: - TransitionsHandler
22
23func testThatSplitViewTransitionsHandlerForwards_PerformTransition_CallsToItsTransitionsCoordinator() {
24// Given
25let presentationContext = TransitionContextsCreator.createPresentationTransitionContext()
26
27// When
28splitViewTransitionsHandler.performTransition(context: presentationContext)
29
30// Then
31if case .forContaining(let context, let transitionsHandler) = transitionsCoordinatorSpy.coordinatePerformingTransition! {
32XCTAssert(context == presentationContext)
33XCTAssert(transitionsHandler === splitViewTransitionsHandler)
34} else { XCTFail() }
35}
36
37func testThatSplitViewTransitionsHandlerForwards_UndoTransitionsAfter_CallsToItsTransitionsCoordinator() {
38// Given
39let generatedTansitionId = TransitionIdGeneratorImpl().generateNewTransitionId()
40
41// When
42splitViewTransitionsHandler.undoTransitionsAfter(transitionId: generatedTansitionId)
43
44// Then
45if case .forContaining(let transitionId, let transitionsHandler) = transitionsCoordinatorSpy.coordinateUndoingTransitionsAfter! {
46XCTAssert(transitionId == generatedTansitionId)
47XCTAssert(transitionsHandler === splitViewTransitionsHandler)
48} else { XCTFail() }
49}
50
51func testThatSplitViewTransitionsHandlerForwards_UndoTransitionWith_CallsToItsTransitionsCoordinator() {
52// Given
53let generatedTansitionId = TransitionIdGeneratorImpl().generateNewTransitionId()
54
55// When
56splitViewTransitionsHandler.undoTransitionWith(transitionId: generatedTansitionId)
57
58// Then
59if case .forContaining(let transitionId, let transitionsHandler) = transitionsCoordinatorSpy.coordinateUndoingTransitionWith! {
60XCTAssert(transitionId == generatedTansitionId)
61XCTAssert(transitionsHandler === splitViewTransitionsHandler)
62} else { XCTFail() }
63}
64
65func testThatSplitViewTransitionsHandlerDoesNotForward_UndoAllChainedTransitions_CallsToItsTransitionsCoordinator() {
66// When
67splitViewTransitionsHandler.undoAllChainedTransitions()
68
69// Then
70XCTAssertNil(transitionsCoordinatorSpy.coordinateUndoingAllChainedTransitions)
71}
72
73func testThatSplitViewTransitionsHandlerDoesNotForward_UndoAllTransitions_CallsToItsTransitionsCoordinator() {
74// When
75splitViewTransitionsHandler.undoAllTransitions()
76
77// Then
78XCTAssertNil(transitionsCoordinatorSpy.coordinateUndoingAllChainedTransitions)
79}
80
81func testThatSplitViewTransitionsHandlerDoesNotForward_ResetWithTransition_CallsToItsTransitionsCoordinator() {
82// Given
83let resettingContext = TransitionContextsCreator.createRegisteringEndpointNavigationControllerTransitionContext()
84
85// When
86splitViewTransitionsHandler.resetWithTransition(context: resettingContext)
87
88// Then
89XCTAssertNil(transitionsCoordinatorSpy.coordinateResettingWithTransition)
90}
91
92// MARK: - TransitionsHandlerContainer
93
94func testThatSplitViewTransitionsHandlerReturnsAllTransitionsHandlersOn_AllTransitionsHandlers_Call() {
95// Given
96let masterTransitionsHandler = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
97let detailTransitionsHandler = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
98splitViewTransitionsHandler.masterTransitionsHandler = masterTransitionsHandler
99splitViewTransitionsHandler.detailTransitionsHandler = detailTransitionsHandler
100
101// When
102let allTransitionsHandlers = splitViewTransitionsHandler.allTransitionsHandlers!
103
104// Then
105XCTAssertNotNil(allTransitionsHandlers.firstIndex { $0 === masterTransitionsHandler })
106XCTAssertNotNil(allTransitionsHandlers.firstIndex { $0 === detailTransitionsHandler })
107}
108
109func testThatSplitViewTransitionsHandlerReturnsAllTransitionsHandlersOn_VisibleTransitionsHandlers_Call() {
110// Given
111let masterTransitionsHandler = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
112let detailTransitionsHandler = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
113splitViewTransitionsHandler.masterTransitionsHandler = masterTransitionsHandler
114splitViewTransitionsHandler.detailTransitionsHandler = detailTransitionsHandler
115
116// When
117let visibleTransitionsHandlers = splitViewTransitionsHandler.visibleTransitionsHandlers!
118
119// Then
120XCTAssertNotNil(visibleTransitionsHandlers.firstIndex { $0 === masterTransitionsHandler })
121XCTAssertNotNil(visibleTransitionsHandlers.firstIndex { $0 === detailTransitionsHandler })
122}
123}
124