You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.9 KiB
108 lines
3.9 KiB
5 years ago
|
// Copyright © 2015 Abhishek Banthia
|
||
|
|
||
|
import XCTest
|
||
|
|
||
|
class OnboardingSearchTests: XCTestCase {
|
||
|
var app: XCUIApplication!
|
||
|
|
||
|
override func setUpWithError() throws {
|
||
|
continueAfterFailure = false
|
||
|
app = XCUIApplication()
|
||
|
app.launchArguments.append(CLOnboaringTestsLaunchArgument)
|
||
|
app.launch()
|
||
|
|
||
|
// Let's go to the Search View
|
||
|
moveForward()
|
||
|
moveForward()
|
||
|
moveForward()
|
||
|
}
|
||
|
|
||
|
override func tearDownWithError() throws {
|
||
|
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||
|
}
|
||
|
|
||
|
func testRegularSearch() throws {
|
||
|
let searchField = app.searchFields["MainSearchField"]
|
||
|
searchField.reset(text: "Paris")
|
||
|
searchField.typeKey(XCUIKeyboardKey.return, modifierFlags: XCUIElement.KeyModifierFlags())
|
||
|
|
||
|
sleep(2) // Wait for the query to return
|
||
|
|
||
|
let results = app.tables["ResultsTableView"]
|
||
|
let firstResult = results.cells.firstMatch
|
||
|
XCTAssertTrue(results.cells.count > 0)
|
||
|
|
||
|
let resultsPredicate = NSPredicate(format: "value CONTAINS 'Paris'", "")
|
||
|
XCTAssertTrue(firstResult.staticTexts.matching(resultsPredicate).count > 0)
|
||
|
|
||
|
// Let's retrieve the tap and add it!
|
||
|
firstResult.doubleClick()
|
||
|
|
||
|
sleep(2) // Wait for the Undo button to appear
|
||
|
|
||
|
// Ensure Added Text is shown properly!
|
||
|
let predicate = NSPredicate(format: "value BEGINSWITH 'Added'", "")
|
||
|
let successTextShown = app.staticTexts.containing(predicate)
|
||
|
XCTAssertTrue(successTextShown.count > 0)
|
||
|
}
|
||
|
|
||
|
func testUndoSearch() throws {
|
||
|
let searchField = app.searchFields["MainSearchField"]
|
||
|
searchField.reset(text: "Seoul")
|
||
|
searchField.typeKey(XCUIKeyboardKey.return, modifierFlags: XCUIElement.KeyModifierFlags())
|
||
|
|
||
|
sleep(2) // Wait for the query to return
|
||
|
|
||
|
let results = app.tables["ResultsTableView"]
|
||
|
let firstResult = results.cells.firstMatch
|
||
|
XCTAssertTrue(results.cells.count > 0)
|
||
|
|
||
|
let resultsPredicate = NSPredicate(format: "value CONTAINS 'Seoul'", "")
|
||
|
XCTAssertTrue(firstResult.staticTexts.containing(resultsPredicate).count > 0)
|
||
|
|
||
|
// Let's retrieve the tap and add it!
|
||
|
firstResult.doubleClick()
|
||
|
|
||
|
sleep(2) // Wait for the Undo button to appear
|
||
|
|
||
|
// Ensure Added Text is shown properly!
|
||
|
let predicate = NSPredicate(format: "value BEGINSWITH 'Added'", "")
|
||
|
let successTextShown = app.staticTexts.containing(predicate)
|
||
|
XCTAssertTrue(successTextShown.count > 0)
|
||
|
|
||
|
let undoButton = app.buttons.matching(identifier: "UndoButton").firstMatch
|
||
|
undoButton.click()
|
||
|
|
||
|
// Ensure Removed Text is shown!
|
||
|
let removedPredicate = NSPredicate(format: "value BEGINSWITH 'Removed.'", "")
|
||
|
let removedText = app.staticTexts.containing(removedPredicate)
|
||
|
XCTAssertTrue(removedText.count > 0)
|
||
|
}
|
||
|
|
||
|
func testMispelledCityNameSearch() throws {
|
||
|
let searchField = app.searchFields["MainSearchField"]
|
||
|
searchField.reset(text: "ajsdkjasdkjhasdkashkjda")
|
||
|
searchField.typeKey(XCUIKeyboardKey.return, modifierFlags: XCUIElement.KeyModifierFlags())
|
||
|
|
||
|
sleep(2) // Wait for the query to return
|
||
|
|
||
|
let results = app.tables["ResultsTableView"]
|
||
|
let firstResult = results.cells.firstMatch
|
||
|
XCTAssertTrue(results.cells.count == 0)
|
||
|
XCTAssertFalse(firstResult.staticTexts["Paris, France"].exists)
|
||
|
|
||
|
sleep(2) // Wait for the Undo button to appear
|
||
|
|
||
|
// Ensure Added Text is shown properly!
|
||
|
let noErrorTextPredicate = NSPredicate(format: "value CONTAINS 'No results! 😔 Try entering the exact name.'", "")
|
||
|
let noErrorText = app.staticTexts.containing(noErrorTextPredicate)
|
||
|
XCTAssertTrue(noErrorText.count > 0)
|
||
|
}
|
||
|
|
||
|
private func moveForward() {
|
||
|
let onboardingWindow = app.windows["OnboardingWindow"]
|
||
|
onboardingWindow.buttons["Forward"].click()
|
||
|
sleep(1)
|
||
|
}
|
||
|
}
|