Skip to content

Instantly share code, notes, and snippets.

@ncreated
Last active September 5, 2017 20:46
Show Gist options
  • Save ncreated/e6e013cba515a2fba40852169dfda533 to your computer and use it in GitHub Desktop.
Save ncreated/e6e013cba515a2fba40852169dfda533 to your computer and use it in GitHub Desktop.
Medium blogpost snippet
private final class MockTaskStatusDelegate: TaskStatusDelegate {
var didCall_taskDidChangeStatus: ((Task, Task.Status) -> Void)?
func taskDidChangeStatus(task: Task, status: Task.Status) {
didCall_taskDidChangeStatus?(task, status)
}
}
class TaskTests: XCTestCase {
func test_givenTask_whenExecuted_itNotifiesDelegateAboutStatusUpdates() {
let task = Task()
let mockDelegate = MockTaskStatusDelegate()
task.statusDelegate = mockDelegate
let expectation = self.expectation(description: "delegate is called 3 times")
expectation.expectedFulfillmentCount = 3
var recordedStatuses: [Task.Status] = []
mockDelegate.didCall_taskDidChangeStatus = { (_, status) in
recordedStatuses.append(status)
expectation.fulfill()
}
task.execute()
waitForExpectations(timeout: 0.5, handler: nil)
XCTAssertEqual(recordedStatuses, [.downloading, .processing, .finished])
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment