view SimoleonUITests/SimoleonUITests.swift @ 44:415d51d6923f

Adding tests
author Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
date Mon, 26 Jul 2021 17:36:09 +0100
parents e0c2bda6c51f
children 1c7687d30373
line wrap: on
line source

//
//  SimoleonUITests.swift
//  SimoleonUITests
//
//  Created by Dennis Concepción Martín on 08/07/2021.
//

import XCTest

class SimoleonUITests: XCTestCase {

    override func setUpWithError() throws {
        // Put setup code here. This method is called before the invocation of each test method in the class.

        // In UI tests it is usually best to stop immediately when a failure occurs.
        continueAfterFailure = false

        // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
    }

    override func tearDownWithError() throws {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
    }
    
    // MARK: - Tab View
    func testTabBarButtons() {
        let app = XCUIApplication()
        app.launch()
        
        app.tabBars.buttons["Favourites"].tap()
        XCTAssertTrue(app.navigationBars["Favourites"].exists)
        
        app.tabBars.buttons["Settings"].tap()
        XCTAssertTrue(app.navigationBars["Settings"].exists)
        
        app.tabBars.buttons["Convert"].tap()
        XCTAssertTrue(app.navigationBars["Convert"].exists)
    }
    
    // MARK: - Conversion View
    func testCurrencySelector() {
        let app = XCUIApplication()
        app.launch()
        
        let currencySelectorButton = app.buttons["CurrencySelector"]
        currencySelectorButton.tap()
        
        let searchBar = app.textFields["SearchBar"]
        searchBar.typeText("BTC/USD")
        
        let currencyRowButton = app.buttons["CurrencyRowButton"].firstMatch
        let currencyRowButtonLabel = currencyRowButton.label
        currencyRowButton.tap()
        
        XCTAssertTrue(currencyRowButtonLabel == currencySelectorButton.label)
    }

    func testLaunchPerformance() throws {
        if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
            // This measures how long it takes to launch your application.
            measure(metrics: [XCTApplicationLaunchMetric()]) {
                XCUIApplication().launch()
            }
        }
    }
}