marshroute
/
PeekAndPopUtilityImplTests_releasesPeekViewController.swift
95 строк · 3.0 Кб
1import XCTest
2@testable import Marshroute
3
4final class PeekAndPopUtilityImplTests_releasesPeekViewController: BasePeekAndPopUtilityImplTestCase {
5func testPeekAndPopUtility_releasesPeekViewController_ifPeekBeginsOnOffscreenRegisteredViewControllerAndSomeTransitionOccurs() {
6// Given
7let expectation = self.expectation()
8
9weak var weakPeekViewController = peekViewController
10
11unbindSourceViewControllerFromWindow()
12
13registerSourceViewControllerForPreviewing()
14
15// When
16beginPeekOnRegisteredViewController()
17
18invokeTransitionToPeekViewController(
19popAction: {
20self.peekViewController = nil
21self.peekNavigationController?.viewControllers = []
22}
23)
24
25// Then
26DispatchQueue.main.asyncAfter(deadline: .now() + asyncDelay) {
27XCTAssert(weakPeekViewController == nil)
28expectation.fulfill()
29}
30
31waitForExpectations(timeout: asyncTimeout)
32}
33
34func testPeekAndPopUtility_releasesPeekViewController_ifPeekGetsCommitedOnOnscreenRegisteredViewController() {
35// Given
36let expectation = self.expectation()
37
38weak var weakPeekViewController = peekViewController
39
40bindSourceViewControllerToWindow()
41
42registerSourceViewControllerForPreviewing(
43onPeek: { _ in
44self.invokeTransitionToPeekViewController(
45popAction: {
46self.peekViewController = nil
47self.peekNavigationController?.viewControllers = []
48}
49)
50}
51)
52
53// When
54beginPeekOnRegisteredViewController()
55
56commitPickOnRegisteredViewController()
57
58// Then
59DispatchQueue.main.asyncAfter(deadline: .now() + asyncDelay) {
60XCTAssert(weakPeekViewController == nil)
61expectation.fulfill()
62}
63
64waitForExpectations(timeout: asyncTimeout)
65}
66
67func testPeekAndPopUtility_releasesPeekViewController_ifPeekGetsInterruptedWithAnotherTransitionOnOnscreenRegisteredViewController() {
68// Given
69let expectation = self.expectation()
70
71weak var weakPeekViewController = peekViewController
72
73bindSourceViewControllerToWindow()
74
75registerSourceViewControllerForPreviewing(
76onPeek: { _ in
77self.invokeTransitionToPeekViewController()
78self.peekViewController = nil
79}
80)
81
82// When
83beginPeekOnRegisteredViewController()
84
85interruptPeekWithAnotherTransitionOnRegisteredViewController()
86
87// Then
88DispatchQueue.main.asyncAfter(deadline: .now() + asyncDelay) {
89XCTAssert(weakPeekViewController == nil)
90expectation.fulfill()
91}
92
93waitForExpectations(timeout: asyncTimeout)
94}
95}
96