marshroute

Форк
0
/
SplitViewTransitionsHandlerImplTests.swift 
123 строки · 5.5 Кб
1
import XCTest
2
@testable import Marshroute
3

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

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

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

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

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