// // TestGetStreamContentsService.swift // AccountTests // // Created by Kiel Gillard on 28/10/19. // Copyright © 2019 Ranchero Software, LLC. All rights reserved. // import XCTest @testable import Account final class TestGetStreamContentsService: FeedlyGetStreamContentsService { var mockResult: Result? var parameterTester: ((FeedlyResourceId, String?, Date?, Bool?) -> ())? var getStreamContentsExpectation: XCTestExpectation? func getStreamContents(for resource: FeedlyResourceId, continuation: String?, newerThan: Date?, unreadOnly: Bool?, completionHandler: @escaping (Result) -> ()) { guard let result = mockResult else { XCTFail("Missing mock result. Test may time out because the completion will not be called.") return } parameterTester?(resource, continuation, newerThan, unreadOnly) DispatchQueue.main.async { completionHandler(result) self.getStreamContentsExpectation?.fulfill() } } func makeMockFeedlyEntryItem() -> [FeedlyEntry] { let origin = FeedlyOrigin(title: "XCTest@localhost", streamId: "user/12345/category/67890", htmlUrl: "http://localhost/nnw/xctest") let content = FeedlyEntry.Content(content: "In the beginning...", direction: .leftToRight) let items = [FeedlyEntry(id: "feeds/0/article/0", title: "RSS Reader Ingests Man", content: content, summary: content, author: nil, published: Date(), updated: nil, origin: origin, canonical: nil, alternate: nil, unread: true, tags: nil, categories: nil, enclosure: nil)] return items } }