From 25e27e59fcdb4a10dede06df04daae486dd501e0 Mon Sep 17 00:00:00 2001 From: Fin Date: Fri, 14 Jan 2022 17:55:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8D=95=E5=85=83=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BarkTests/HomeViewModelTests.swift | 37 +++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/BarkTests/HomeViewModelTests.swift b/BarkTests/HomeViewModelTests.swift index f4ee481..c429d8b 100644 --- a/BarkTests/HomeViewModelTests.swift +++ b/BarkTests/HomeViewModelTests.swift @@ -72,7 +72,7 @@ class HomeViewModelTests: XCTestCase { let input = generateInput() let output = homeViewModel.transform(input: input) - + let testStr = "hello bark" // 测试是否正常 copy output.copy.drive { str in @@ -91,16 +91,47 @@ class HomeViewModelTests: XCTestCase { waitForExpectations(timeout: 1, handler: nil) } + /// 测试推送状态 打开和关闭时,示例 tableView 和 startButton 是否正常显示和隐藏 + func testAuthorizationStatus() { + let exp = expectation(description: #function) + let homeViewModel = HomeViewModel() + + let notDeterminedInput = generateInput(authorizationStatus: Observable.just(UNAuthorizationStatus.notDetermined).asSingle()) + let notDeterminedOutput = homeViewModel.transform(input: notDeterminedInput) + + notDeterminedOutput.tableViewHidden.drive { hidden in + XCTAssertTrue(hidden == false) + }.disposed(by: rx.disposeBag) + + + let authorizedInput = generateInput(authorizationStatus: Observable.just(UNAuthorizationStatus.authorized).asSingle()) + let authorizedOutput = homeViewModel.transform(input: authorizedInput) + + authorizedOutput.tableViewHidden.drive { hidden in + XCTAssertTrue(hidden) + exp.fulfill() + }.disposed(by: rx.disposeBag) + waitForExpectations(timeout: 1, handler: nil) + } + /// 生成Input private func generateInput(addCustomServerTap: Driver = Driver.empty(), viewDidAppear: Driver = Driver.empty(), start: Driver = Driver.empty(), - clientState: Driver = Driver.empty()) -> HomeViewModel.Input + clientState: Driver = Driver.empty(), + authorizationStatus: Single = Observable.just(UNAuthorizationStatus.authorized).asSingle(), + startRequestAuthorizationCreator: @escaping () -> Observable = { + Observable.just(true) + }) -> HomeViewModel.Input { + return HomeViewModel.Input( addCustomServerTap: addCustomServerTap, viewDidAppear: viewDidAppear, start: start, - clientState: clientState) + clientState: clientState, + authorizationStatus: authorizationStatus, + startRequestAuthorizationCreator: startRequestAuthorizationCreator + ) } }