Created
June 1, 2021 14:36
-
-
Save atereshkov/9e431dfa5a3883fbfa10225f89f4e1a0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
import Combine | |
import XCTest | |
class Sut { | |
private var bag = Set<AnyCancellable>() | |
var triggerSubject = PassthroughSubject<Void, Never>() | |
func start() { | |
Swift.print("I'm starting doing a work") | |
doWork() | |
.receive(on: DispatchQueue.main) | |
.sink(receiveValue: { [weak self] value in | |
Swift.print("I'm done: \(value)") | |
self?.triggerSubject.send() | |
}) | |
.store(in: &bag) | |
} | |
func doWork() -> Future<Int, Never> { | |
return Future { promise in | |
promise(.success(100500)) | |
} | |
} | |
} | |
class TestCase: XCTestCase { | |
var sut: Sut! | |
var bag = Set<AnyCancellable>() | |
override func setUpWithError() throws { | |
sut = Sut() | |
} | |
override func tearDownWithError() throws { | |
sut = nil | |
} | |
func test() { | |
var subjectTriggered = false | |
sut.triggerSubject.sink(receiveValue: { _ in | |
Swift.print("Triggered") | |
subjectTriggered = true | |
}) | |
.store(in: &bag) | |
XCTAssertFalse(subjectTriggered) | |
Swift.print("Please, start") | |
sut.start() | |
XCTAssertTrue(subjectTriggered) | |
} | |
} | |
TestCase.defaultTestSuite.run() | |
//let sut = Sut() | |
//sut.start() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment