106 lines
4.1 KiB
Swift
Raw Normal View History

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)
}
}