marshroute

Форк
0
/
TabBarTransitionsHandlerImplTests.swift 
200 строк · 9.3 Кб
1
import XCTest
2
@testable import Marshroute
3

4
final class TabBarTransitionsHandlerImplTests: XCTestCase {
5

6
    var transitionsCoordinatorSpy: TransitionsCoordinatorSpy!
7
    var tabBarTransitionsHandler: TabBarTransitionsHandlerImpl!
8
    var tabBarController = UITabBarController()
9
    
10
    override func setUp() {
11
        super.setUp()
12
        
13
        transitionsCoordinatorSpy = TransitionsCoordinatorSpy()
14
        
15
        tabBarTransitionsHandler = TabBarTransitionsHandlerImpl(
16
            tabBarController: tabBarController,
17
            transitionsCoordinator: transitionsCoordinatorSpy
18
        )
19
    }
20
    
21
    // MARK: - TransitionsHandler
22
    
23
    func testThatTabBarTransitionsHandlerForwards_PerformTransition_CallsToItsTransitionsCoordinator() {
24
        // Given
25
        let presentationContext = TransitionContextsCreator.createPresentationTransitionContext()
26
        
27
        // When
28
        tabBarTransitionsHandler.performTransition(context: presentationContext)
29
        
30
        // Then
31
        if case .forContaining(let context, let transitionsHandler) = transitionsCoordinatorSpy.coordinatePerformingTransition! {
32
            XCTAssert(context == presentationContext)
33
            XCTAssert(transitionsHandler === tabBarTransitionsHandler)
34
        } else { XCTFail() }
35
    }
36
    
37
    func testThatTabBarTransitionsHandlerForwards_UndoTransitionsAfter_CallsToItsTransitionsCoordinator() {
38
        // Given
39
        let generatedTansitionId = TransitionIdGeneratorImpl().generateNewTransitionId()
40
        
41
        // When
42
        tabBarTransitionsHandler.undoTransitionsAfter(transitionId: generatedTansitionId)
43
        
44
        // Then
45
        if case .forContaining(let transitionId, let transitionsHandler) = transitionsCoordinatorSpy.coordinateUndoingTransitionsAfter! {
46
            XCTAssert(transitionId == generatedTansitionId)
47
            XCTAssert(transitionsHandler === tabBarTransitionsHandler)
48
        } else { XCTFail() }
49
    }
50
    
51
    func testThatTabBarTransitionsHandlerForwards_UndoTransitionWith_CallsToItsTransitionsCoordinator() {
52
        // Given
53
        let generatedTansitionId = TransitionIdGeneratorImpl().generateNewTransitionId()
54
        
55
        // When
56
        tabBarTransitionsHandler.undoTransitionWith(transitionId: generatedTansitionId)
57
        
58
        // Then
59
        if case .forContaining(let transitionId, let transitionsHandler) = transitionsCoordinatorSpy.coordinateUndoingTransitionWith! {
60
            XCTAssert(transitionId == generatedTansitionId)
61
            XCTAssert(transitionsHandler === tabBarTransitionsHandler)
62
        } else { XCTFail() }
63
    }
64
    
65
    func testThatTabBarTransitionsHandlerDoesNotForward_UndoAllChainedTransitions_CallsToItsTransitionsCoordinator() {
66
        // When
67
        tabBarTransitionsHandler.undoAllChainedTransitions()
68
        
69
        // Then
70
        XCTAssertNil(transitionsCoordinatorSpy.coordinateUndoingAllChainedTransitions)
71
    }
72
    
73
    func testThatTabBarTransitionsHandlerDoesNotForward_UndoAllTransitions_CallsToItsTransitionsCoordinator() {
74
        // When
75
        tabBarTransitionsHandler.undoAllTransitions()
76
        
77
        // Then
78
        XCTAssertNil(transitionsCoordinatorSpy.coordinateUndoingAllChainedTransitions)
79
    }
80

81
    func testThatTabBarTransitionsHandlerDoesNotForward_ResetWithTransition_CallsToItsTransitionsCoordinator() {
82
        // Given
83
        let resettingContext = TransitionContextsCreator.createRegisteringEndpointNavigationControllerTransitionContext()
84
        
85
        // When
86
        tabBarTransitionsHandler.resetWithTransition(context: resettingContext)
87
        
88
        // Then
89
        XCTAssertNil(transitionsCoordinatorSpy.coordinateResettingWithTransition)
90
    }
91
    
92
    // MARK: - TransitionsHandlerContainer
93
    
94
    func testThatTabBarTransitionsHandlerReturnsAllTransitionsHandlersOn_AllTransitionsHandlers_Call_IfAllAreAnimating() {
95
        // Given
96
        let animatingTransitionsHandler1 = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
97
        let animatingTransitionsHandler2 = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
98
        
99
        tabBarController.viewControllers = [UIViewController(), UIViewController()]
100
        tabBarTransitionsHandler.animatingTransitionsHandlers = [
101
            0: animatingTransitionsHandler1,
102
            1: animatingTransitionsHandler2
103
        ]
104
        
105
        // When
106
        let allTransitionsHandlers = tabBarTransitionsHandler.allTransitionsHandlers!
107
        
108
        // Then
109
        XCTAssertNotNil(allTransitionsHandlers.firstIndex { $0 === animatingTransitionsHandler1 })
110
        XCTAssertNotNil(allTransitionsHandlers.firstIndex { $0 === animatingTransitionsHandler2 })
111
    }
112
    
113
    func testThatTabBarTransitionsHandlerUnboxesContainingTransitionsHandlersAndReturnsAllTransitionsHandlersOn_AllTransitionsHandlers_Call() {
114
        // Given
115
        let animatingTransitionsHandler = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
116
        
117
        let masterTransitionsHandler = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
118
        let detailTransitionsHandler = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
119
        
120
        let splitViewController = UISplitViewController()
121
        let splitViewTransitionsHandler = SplitViewTransitionsHandlerImpl(
122
            splitViewController: splitViewController,
123
            transitionsCoordinator: transitionsCoordinatorSpy
124
        )
125
        
126
        splitViewTransitionsHandler.masterTransitionsHandler = masterTransitionsHandler
127
        splitViewTransitionsHandler.detailTransitionsHandler = detailTransitionsHandler
128
        
129
        tabBarController.viewControllers = [splitViewController, UIViewController()]
130
        tabBarTransitionsHandler.containingTransitionsHandlers = [
131
            0: splitViewTransitionsHandler
132
        ]
133
        tabBarTransitionsHandler.animatingTransitionsHandlers = [
134
            1: animatingTransitionsHandler
135
        ]
136
        
137
        // When
138
        let allTransitionsHandlers = tabBarTransitionsHandler.allTransitionsHandlers!
139
        
140
        // Then
141
        XCTAssertNotNil(allTransitionsHandlers.firstIndex { $0 === animatingTransitionsHandler })
142
        XCTAssertNotNil(allTransitionsHandlers.firstIndex { $0 === masterTransitionsHandler })
143
        XCTAssertNotNil(allTransitionsHandlers.firstIndex { $0 === detailTransitionsHandler })
144
    }
145
    
146
    func testThatTabBarTransitionsHandlerReturnsVisibleTransitionsHandlerOn_VisibleTransitionsHandlers_Call_IfVisibleIsAnimating() {
147
        // Given
148
        let animatingTransitionsHandler1 = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
149
        let animatingTransitionsHandler2 = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
150
        
151
        tabBarController.viewControllers = [UIViewController(), UIViewController()]
152
        tabBarTransitionsHandler.animatingTransitionsHandlers = [
153
            0: animatingTransitionsHandler1,
154
            1: animatingTransitionsHandler2
155
        ]
156
        
157
        // When
158
        tabBarController.selectedViewController = tabBarController.viewControllers?[1]
159
        let visibleTransitionsHandlers = tabBarTransitionsHandler.visibleTransitionsHandlers!
160
        
161
        // Then
162
        XCTAssertNil(visibleTransitionsHandlers.firstIndex { $0 === animatingTransitionsHandler1 })
163
        XCTAssertNotNil(visibleTransitionsHandlers.firstIndex { $0 === animatingTransitionsHandler2 })
164
    }
165
    
166
    func testThatTabBarTransitionsHandlerUnboxesContainingTransitionsHandlerAndReturnsAllItsTransitionsHandlerOn_VisibleTransitionsHandlers_Call_IfVisibleIsContaining() {
167
        // Given
168
        let animatingTransitionsHandler = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
169
        
170
        let masterTransitionsHandler = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
171
        let detailTransitionsHandler = BaseAnimatingTransitionsHandler(transitionsCoordinator: transitionsCoordinatorSpy)
172
        
173
        let splitViewController = UISplitViewController()
174
        let splitViewTransitionsHandler = SplitViewTransitionsHandlerImpl(
175
            splitViewController: splitViewController,
176
            transitionsCoordinator: transitionsCoordinatorSpy
177
        )
178
        
179
        splitViewTransitionsHandler.masterTransitionsHandler = masterTransitionsHandler
180
        splitViewTransitionsHandler.detailTransitionsHandler = detailTransitionsHandler
181
        
182
        tabBarController.viewControllers = [UIViewController(), splitViewController]
183
        tabBarTransitionsHandler.animatingTransitionsHandlers = [
184
            0: animatingTransitionsHandler
185
        ]
186
        tabBarTransitionsHandler.containingTransitionsHandlers = [
187
            1: splitViewTransitionsHandler
188
        ]
189
        
190
        // When
191
        // select a tab with a ContainingTransitionsHandler
192
        tabBarController.selectedViewController = tabBarController.viewControllers?[1]
193
        let visibleTransitionsHandlers = tabBarTransitionsHandler.visibleTransitionsHandlers!
194
        
195
        // Then
196
        XCTAssertNil(visibleTransitionsHandlers.firstIndex { $0 === animatingTransitionsHandler })
197
        XCTAssertNotNil(visibleTransitionsHandlers.firstIndex { $0 === masterTransitionsHandler })
198
        XCTAssertNotNil(visibleTransitionsHandlers.firstIndex { $0 === detailTransitionsHandler })
199
    }
200
}
201

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.