marshroute

Форк
0
151 строка · 6.1 Кб
1
import XCTest
2
@testable import Marshroute
3

4
final class RouterDismissableTests: XCTestCase
5
{
6
    var transitionId: TransitionId!
7
    var transitionIdGenerator: TransitionIdGenerator!
8
    var transitionsCoordinator: TransitionsCoordinatorImpl!
9
    
10
    var presentingTransitionsHandlerSpy: AnimatingTransitionsHandlerSpy!
11
    
12
    override func setUp() {
13
        super.setUp()
14
        
15
        transitionIdGenerator = TransitionIdGeneratorImpl()
16
        transitionId = transitionIdGenerator.generateNewTransitionId()
17
        
18
        transitionsCoordinator = TransitionsCoordinatorImpl(
19
            stackClientProvider: TransitionContextsStackClientProviderImpl(),
20
            peekAndPopTransitionsCoordinator: PeekAndPopUtilityImpl()
21
        )
22
        
23
        presentingTransitionsHandlerSpy = AnimatingTransitionsHandlerSpy(
24
            transitionsCoordinator: transitionsCoordinator
25
        )
26
    }
27
    
28
    // MARK: - BaseRouter
29
    
30
    func testThatNotRootRouterCallsItsPresentingTransitionsHandlerOn_DismissCurrentModule() {
31
        // Given
32
        let router = BaseRouter( // Base Router
33
            routerSeed: RouterSeed(
34
                transitionsHandlerBox: .init(
35
                    animatingTransitionsHandler: AnimatingTransitionsHandlerSpy(
36
                        transitionsCoordinator: transitionsCoordinator
37
                    )
38
                ),
39
                transitionId: transitionId,
40
                presentingTransitionsHandler: presentingTransitionsHandlerSpy, // Not Root Router
41
                transitionsHandlersProvider: transitionsCoordinator,
42
                transitionIdGenerator: transitionIdGenerator,
43
                controllersProvider: RouterControllersProviderImpl(),
44
                routerTransitionDelegate: nil
45
            )
46
        )
47
        
48
        // When
49
        router.dismissCurrentModule()
50
        
51
        // Then
52
        XCTAssert(router.presentingTransitionsHandler === presentingTransitionsHandlerSpy)
53
        
54
        XCTAssert(presentingTransitionsHandlerSpy.undoTransitionWithCalled)
55
        XCTAssertEqual(presentingTransitionsHandlerSpy.undoTransitionWithTransitionIdParameter, transitionId)
56
    }
57
    
58
    func testThatRootRouterDoesNotCallItsPresentingTransitionsHandlerOn_DismissCurrentModule() {
59
        // Given
60
        let router = BaseRouter( // Base Router
61
            routerSeed: RouterSeed(
62
                transitionsHandlerBox: .init(
63
                    animatingTransitionsHandler: AnimatingTransitionsHandlerSpy(
64
                        transitionsCoordinator: transitionsCoordinator
65
                    )
66
                ),
67
                transitionId: transitionId,
68
                presentingTransitionsHandler: nil, // Root Router
69
                transitionsHandlersProvider: transitionsCoordinator,
70
                transitionIdGenerator: transitionIdGenerator,
71
                controllersProvider: RouterControllersProviderImpl(),
72
                routerTransitionDelegate: nil
73
            )
74
        )
75
        
76
        // When
77
        router.dismissCurrentModule()
78
        
79
        // Then
80
        XCTAssertNil(router.presentingTransitionsHandler)
81
        
82
        XCTAssertFalse(presentingTransitionsHandlerSpy.undoTransitionWithCalled)
83
    }
84
    
85
    // MARK: - BaseMasterDetailRouter
86
    
87
    func testThatNotRootMasterDetailRouterCallsItsPresentingTransitionsHandlerOn_DismissCurrentModule() {
88
        // Given
89
        let masterDetailRouter = BaseMasterDetailRouter( // MasterDetail Router
90
            routerSeed: MasterDetailRouterSeed(
91
                masterTransitionsHandlerBox: .init(
92
                    animatingTransitionsHandler: AnimatingTransitionsHandlerSpy(
93
                        transitionsCoordinator: transitionsCoordinator
94
                    )
95
                ),
96
                detailTransitionsHandlerBox: .init(
97
                    animatingTransitionsHandler: AnimatingTransitionsHandlerSpy(
98
                        transitionsCoordinator: transitionsCoordinator
99
                    )
100
                ),
101
                transitionId: transitionId,
102
                presentingTransitionsHandler: presentingTransitionsHandlerSpy, // Not Root Router
103
                transitionsHandlersProvider: transitionsCoordinator,
104
                transitionIdGenerator: transitionIdGenerator,
105
                controllersProvider: RouterControllersProviderImpl(),
106
                routerTransitionDelegate: nil
107
            )
108
        )
109
        
110
        // When
111
        masterDetailRouter.dismissCurrentModule()
112
        
113
        // Then
114
        XCTAssert(masterDetailRouter.presentingTransitionsHandler === presentingTransitionsHandlerSpy)
115
        
116
        XCTAssert(presentingTransitionsHandlerSpy.undoTransitionWithCalled)
117
        XCTAssertEqual(presentingTransitionsHandlerSpy.undoTransitionWithTransitionIdParameter, transitionId)
118
    }
119
    
120
    func testThatRootMasterDetailRouterDoesNotCallItsPresentingTransitionsHandlerOn_DismissCurrentModule() {
121
        // Given
122
        let masterDetailRouter = BaseMasterDetailRouter( // MasterDetail Router
123
            routerSeed: MasterDetailRouterSeed(
124
                masterTransitionsHandlerBox: .init(
125
                    animatingTransitionsHandler: AnimatingTransitionsHandlerSpy(
126
                        transitionsCoordinator: transitionsCoordinator
127
                    )
128
                ),
129
                detailTransitionsHandlerBox: .init(
130
                    animatingTransitionsHandler: AnimatingTransitionsHandlerSpy(
131
                        transitionsCoordinator: transitionsCoordinator
132
                    )
133
                ),
134
                transitionId: transitionId,
135
                presentingTransitionsHandler: nil, // Root Router
136
                transitionsHandlersProvider: transitionsCoordinator,
137
                transitionIdGenerator: transitionIdGenerator,
138
                controllersProvider: RouterControllersProviderImpl(),
139
                routerTransitionDelegate: nil
140
            )
141
        )
142
        
143
        // When
144
        masterDetailRouter.dismissCurrentModule()
145
        
146
        // Then
147
        XCTAssertNil(masterDetailRouter.presentingTransitionsHandler)
148
        
149
        XCTAssertFalse(presentingTransitionsHandlerSpy.undoTransitionWithCalled)
150
    }
151
}
152

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

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

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

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