100 lines
3.3 KiB
Swift
100 lines
3.3 KiB
Swift
|
//
|
||
|
// ComposeTests.swift
|
||
|
// TuskerUITests
|
||
|
//
|
||
|
// Created by Shadowfacts on 9/12/20.
|
||
|
// Copyright © 2020 Shadowfacts. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import XCTest
|
||
|
import Pachyderm
|
||
|
|
||
|
class ComposeTests: TuskerUITests {
|
||
|
|
||
|
override func setUp() {
|
||
|
super.setUp()
|
||
|
|
||
|
router.allRoutes()
|
||
|
|
||
|
app.launchEnvironment["UI_TESTING_LOGIN"] = "true"
|
||
|
app.launch()
|
||
|
|
||
|
app.tabBars.buttons["Compose"].tap()
|
||
|
}
|
||
|
|
||
|
func testCurrentAccount() {
|
||
|
XCTAssertTrue(app.images["Admin Account avatar"].exists, "avatar image exists")
|
||
|
XCTAssertTrue(app.staticTexts["Admin Account"].exists, "display name label exists")
|
||
|
XCTAssertTrue(app.staticTexts["@admin"].exists, "acct label exists")
|
||
|
}
|
||
|
|
||
|
func testBodyPlaceholder() {
|
||
|
XCTAssertTrue(app.staticTexts["What's on your mind?"].exists, "placeholder exists")
|
||
|
app.textViews.firstMatch.typeText("Blah")
|
||
|
XCTAssertFalse(app.staticTexts["What's on your mind?"].exists, "placeholder does not exist")
|
||
|
}
|
||
|
|
||
|
func testCharacterCounter() {
|
||
|
XCTAssertTrue(app.staticTexts["500 characters remaining"].exists, "initial character count is 500")
|
||
|
let textView = app.textViews.firstMatch
|
||
|
|
||
|
let fragments = [
|
||
|
"Hello",
|
||
|
"World",
|
||
|
"@admin",
|
||
|
"@admin@example.com",
|
||
|
"https://foo.example.com/?bar=baz#qux",
|
||
|
]
|
||
|
|
||
|
var remaining = 500
|
||
|
for s in fragments {
|
||
|
let length = CharacterCounter.count(text: s)
|
||
|
// add 1 for newline
|
||
|
remaining -= length + 1
|
||
|
|
||
|
textView.typeText(s + "\n")
|
||
|
XCTAssertTrue(app.staticTexts["\(remaining) characters remaining"].exists, "subsequent character count is \(remaining)")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// func testToolbarSwitching() {
|
||
|
// // text view is automatically focused, so unfocus
|
||
|
// app.swipeDown()
|
||
|
//
|
||
|
// XCTAssertEqual(app.toolbars.count, 1)
|
||
|
// XCTAssertEqual(app.toolbars.buttons.count, 3)
|
||
|
// XCTAssertTrue(app.toolbars.buttons["CW"].exists)
|
||
|
// XCTAssertTrue(app.toolbars.buttons["Visibility: Public"].exists)
|
||
|
// XCTAssertTrue(app.toolbars.buttons["Drafts"].exists)
|
||
|
//
|
||
|
// }
|
||
|
|
||
|
func testContentWarning() {
|
||
|
let toolbar = app.toolbars.firstMatch
|
||
|
XCTAssertTrue(toolbar.waitForExistence(timeout: 0.1))
|
||
|
XCTAssertEqual(app.toolbars.count, 1, "there is only 1 toolbar")
|
||
|
let cwButton = toolbar.buttons["CW"]
|
||
|
XCTAssertTrue(cwButton.exists, "the CW button exists")
|
||
|
|
||
|
cwButton.tap()
|
||
|
let cwField = app.textFields.firstMatch
|
||
|
XCTAssertEqual(cwField.placeholderValue, "Write your warning here")
|
||
|
|
||
|
XCTAssertTrue(app.staticTexts["500 characters remaining"].exists)
|
||
|
cwField.tap()
|
||
|
let str: String
|
||
|
// on iOS 14, the first type text is typed into a SwiftUI TextField, the 2nd character is inexplicably dropped >.<
|
||
|
if #available(iOS 14.0, *) {
|
||
|
str = "fooo"
|
||
|
} else {
|
||
|
str = "foo"
|
||
|
}
|
||
|
cwField.typeText(str)
|
||
|
XCTAssertTrue(app.staticTexts["497 characters remaining"].exists)
|
||
|
// CharacterCounter is not used => '@' is counted
|
||
|
cwField.typeText(" @bar")
|
||
|
XCTAssertTrue(app.staticTexts["492 characters remaining"].exists)
|
||
|
}
|
||
|
|
||
|
}
|