Skip to content
Snippets Groups Projects
Select Git revision
  • 71cfd9aaaa8d01489090d0c7e4379eb781faf73d
  • release default protected
  • 11-22-implement-kv-interface-defined-in-collectiveversionedkvgo
  • hotfix/TestHostPool_UpdateNdf_AddFilter
  • XX-4719/announcementChannels
  • xx-4717/logLevel
  • jonah/noob-channel
  • master protected
  • XX-4707/tagDiskJson
  • xx-4698/notification-retry
  • hotfix/notifylockup
  • syncNodes
  • hotfix/localCB
  • XX-4677/NewChanManagerMobile
  • XX-4689/DmSync
  • duplicatePrefix
  • XX-4601/HavenInvites
  • finalizedUICallbacks
  • XX-4673/AdminKeySync
  • debugNotifID
  • anne/test
  • v4.7.5
  • v4.7.4
  • v4.7.3
  • v4.7.2
  • v4.7.1
  • v4.6.3
  • v4.6.1
  • v4.5.0
  • v4.4.4
  • v4.3.11
  • v4.3.8
  • v4.3.7
  • v4.3.6
  • v4.3.5
  • v4.2.0
  • v4.3.0
  • v4.3.4
  • v4.3.3
  • v4.3.2
  • v4.3.1
41 results

firstMessagePart_test.go

Blame
  • SideMenuPresenterTests.swift 3.85 KiB
    import XCTest
    
    @testable import Presentation
    
    final class SideMenuPresenterTests: XCTestCase {
        var sut: SideMenuPresenter!
        private var dismissInteractor: MockSideMenuDismissalInteractor!
        private var menuAnimator: MockSideMenuAnimator!
    
        override func setUp() {
            dismissInteractor = MockSideMenuDismissalInteractor()
            menuAnimator = MockSideMenuAnimator()
    
            sut = SideMenuPresenter(
                dismissInteractor: dismissInteractor,
                menuAnimator: menuAnimator,
                viewAnimator: MockUIViewAnimator.self
            )
        }
    
        override func tearDown() {
            sut = nil
            dismissInteractor = nil
            menuAnimator = nil
        }
    
        func test_animationControllerForPresenting() {
            let animationController = sut.animationController(forPresented: UIViewController(),
                                                              presenting: UIViewController(),
                                                              source: UIViewController())
    
            let sideMenuPresentTransition = animationController as? SideMenuPresentTransition
    
            XCTAssertNotNil(sideMenuPresentTransition)
            XCTAssert((sideMenuPresentTransition?.dismissInteractor as? MockSideMenuDismissalInteractor) === dismissInteractor)
            XCTAssert((sideMenuPresentTransition?.menuAnimator as? MockSideMenuAnimator) === menuAnimator)
            XCTAssertTrue(sideMenuPresentTransition?.viewAnimator is MockUIViewAnimator.Type)
        }
    
        func test_animationControllerForDismissing() {
            let animationController = sut.animationController(forDismissed: UIViewController())
            let sideMenuDismissTransition = animationController as? SideMenuDismissTransition
    
            XCTAssertNotNil(sideMenuDismissTransition)
            XCTAssert((sideMenuDismissTransition?.menuAnimator as? MockSideMenuAnimator) === menuAnimator)
            XCTAssertTrue(sideMenuDismissTransition?.viewAnimator is MockUIViewAnimator.Type)
        }
    
        func test_InteractionForDismissalWhenInteractionIsInProgress() {
            let animatedTransitioning = MockViewControllerAnimatedTransitioning()
            dismissInteractor.interactionInProgress = true
            let controller = sut.interactionControllerForDismissal(using: animatedTransitioning)
    
            XCTAssertNotNil(controller)
        }
    
        func test_InteractionForDismissalWhenInteractionIsNotInProgress() {
            let animatedTransitioning = MockViewControllerAnimatedTransitioning()
            dismissInteractor.interactionInProgress = false
            let controller = sut.interactionControllerForDismissal(using: animatedTransitioning)
    
            XCTAssertNil(controller)
        }
    }
    
    private final class MockViewControllerAnimatedTransitioning: NSObject,
                                                                 UIViewControllerAnimatedTransitioning {
        func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
            fatalError()
        }
    
        func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
            fatalError()
        }
    }
    
    private final class MockSideMenuDismissalInteractor: NSObject, SideMenuDismissInteracting {
        var interactionInProgress: Bool = true
        var percentDrivenInteractiveTransition = UIPercentDrivenInteractiveTransition()
    
        func setup(view: UIView, action: @escaping () -> Void) {
            fatalError()
        }
    
        func startInteractiveTransition(_ transitionContext: UIViewControllerContextTransitioning) {
            fatalError()
        }
    }
    
    private final class MockSideMenuAnimator: SideMenuAnimating {
        func animate(in containerView: UIView, to progress: CGFloat) {
            fatalError()
        }
    }
    
    private final class MockUIViewAnimator: Presentation.UIViewAnimating {
        static func animate(withDuration duration: TimeInterval,
                            animations: @escaping () -> Void,
                            completion: ((Bool) -> Void)?) {
            fatalError()
        }
    }