106 lines
4.1 KiB
Swift
106 lines
4.1 KiB
Swift
import XCTest
|
|
@testable import Wikipedia
|
|
@testable import WMF
|
|
|
|
class ArticleAsLivingDocViewModelTests: XCTestCase {
|
|
|
|
let fetcherTests = SignificantEventsFetcherTests()
|
|
|
|
override func setUpWithError() throws {
|
|
try fetcherTests.setUpWithError()
|
|
// Put setup code here. This method is called before the invocation of each test method in the class.
|
|
}
|
|
|
|
override func tearDownWithError() throws {
|
|
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
|
}
|
|
|
|
func testSmallViewModelCorrectlyInstantiates() throws {
|
|
|
|
let fetchExpectation = expectation(description: "Waiting for fetch callback")
|
|
|
|
let siteURL = URL(string: "https://en.wikipedia.org")!
|
|
let title = "United_States"
|
|
|
|
fetcherTests.fetchManyVariationsResult(title: title, siteURL: siteURL) { (result) in
|
|
switch result {
|
|
case .success(let significantEvents):
|
|
|
|
let regularTraitCollection = UITraitCollection(preferredContentSizeCategory: UIContentSizeCategory.large)
|
|
let lightTheme = Theme.light
|
|
if let viewModel = ArticleAsLivingDocViewModel(significantEvents: significantEvents, traitCollection: regularTraitCollection, theme: lightTheme) {
|
|
XCTAssertEqual(viewModel.nextRvStartId, 979853162)
|
|
XCTAssertEqual(viewModel.sha, "ddb855b98e213935bfa5b23fb37e2d7034fe63eec9673f1fd66f43512c2c92a7")
|
|
|
|
let firstSection = viewModel.sections[0]
|
|
|
|
switch firstSection.typedEvents[0] {
|
|
case .small(let smallEvent):
|
|
XCTAssertEqual(smallEvent.eventDescription, "1 small change made", "Unexpected small change event description")
|
|
|
|
default:
|
|
XCTFail("Unexpected first event type")
|
|
}
|
|
|
|
/*
|
|
Currently not using ArticleAsLivingDoc, so commenting out failing test. Should be fixed if we re-implement AALD in future.
|
|
|
|
let secondSection = viewModel.sections[1]
|
|
|
|
switch secondSection.typedEvents[0] {
|
|
case .small(let smallEvent):
|
|
XCTAssertEqual(smallEvent.eventDescription, "2 small changes made", "Unexpected small change event description")
|
|
|
|
default:
|
|
XCTFail("Unexpected first event type")
|
|
}*/
|
|
|
|
} else {
|
|
XCTFail("Failure to instantiate view model")
|
|
}
|
|
|
|
default:
|
|
XCTFail("Failure fetching significant events")
|
|
}
|
|
|
|
fetchExpectation.fulfill()
|
|
}
|
|
|
|
wait(for: [fetchExpectation], timeout: 10)
|
|
}
|
|
|
|
func testNewTalkPageTopicCorrectlyInstantiates() {
|
|
let fetchExpectation = expectation(description: "Waiting for fetch callback")
|
|
|
|
let siteURL = URL(string: "https://en.wikipedia.org")!
|
|
let title = "United_States"
|
|
|
|
fetcherTests.fetchManyVariationsResult(title: title, siteURL: siteURL) { (result) in
|
|
switch result {
|
|
case .success(let significantEvents):
|
|
|
|
let regularTraitCollection = UITraitCollection(preferredContentSizeCategory: UIContentSizeCategory.large)
|
|
let lightTheme = Theme.light
|
|
if let viewModel = ArticleAsLivingDocViewModel(significantEvents: significantEvents, traitCollection: regularTraitCollection, theme: lightTheme) {
|
|
XCTAssertEqual(viewModel.nextRvStartId, 979853162)
|
|
XCTAssertEqual(viewModel.sha, "ddb855b98e213935bfa5b23fb37e2d7034fe63eec9673f1fd66f43512c2c92a7")
|
|
|
|
let fourthSection = viewModel.sections[4]
|
|
let firstEvent = fourthSection.typedEvents[0]
|
|
|
|
} else {
|
|
XCTFail("Failure to instantiate view model")
|
|
}
|
|
|
|
default:
|
|
XCTFail("Failure fetching significant events")
|
|
}
|
|
|
|
fetchExpectation.fulfill()
|
|
}
|
|
|
|
wait(for: [fetchExpectation], timeout: 10)
|
|
}
|
|
|
|
}
|