diff --git a/Pine.xcodeproj/project.pbxproj b/Pine.xcodeproj/project.pbxproj index 8ed18c0..e4765e8 100644 --- a/Pine.xcodeproj/project.pbxproj +++ b/Pine.xcodeproj/project.pbxproj @@ -27,6 +27,7 @@ A148C3A020914F0F00B1165C /* SyntaxThemes.swift in Sources */ = {isa = PBXBuildFile; fileRef = A148C39F20914F0F00B1165C /* SyntaxThemes.swift */; }; A148E4232231F066001AEAAC /* PreferenceKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = A148E4222231F066001AEAAC /* PreferenceKey.swift */; }; A148E4252231F7D7001AEAAC /* NSButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = A148E4242231F7D7001AEAAC /* NSButton.swift */; }; + A14C1B24223B8888002E0827 /* MenuItemUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A14C1B23223B8888002E0827 /* MenuItemUITests.swift */; }; A156AF812090606C0098BBDD /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A156AF802090606C0098BBDD /* AppDelegate.swift */; }; A156AF832090606C0098BBDD /* MarkdownViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A156AF822090606C0098BBDD /* MarkdownViewController.swift */; }; A156AF852090606C0098BBDD /* Document.swift in Sources */ = {isa = PBXBuildFile; fileRef = A156AF842090606C0098BBDD /* Document.swift */; }; @@ -111,6 +112,7 @@ A148C39F20914F0F00B1165C /* SyntaxThemes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyntaxThemes.swift; sourceTree = ""; }; A148E4222231F066001AEAAC /* PreferenceKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferenceKey.swift; sourceTree = ""; }; A148E4242231F7D7001AEAAC /* NSButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSButton.swift; sourceTree = ""; }; + A14C1B23223B8888002E0827 /* MenuItemUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuItemUITests.swift; sourceTree = ""; }; A156AF7D2090606C0098BBDD /* Pine.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Pine.app; sourceTree = BUILT_PRODUCTS_DIR; }; A156AF802090606C0098BBDD /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; A156AF822090606C0098BBDD /* MarkdownViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkdownViewController.swift; sourceTree = ""; }; @@ -333,6 +335,7 @@ children = ( A156AFA22090606D0098BBDD /* Info.plist */, A156AFA02090606D0098BBDD /* InitialOpenUITests.swift */, + A14C1B23223B8888002E0827 /* MenuItemUITests.swift */, ); path = PineUITests; sourceTree = ""; @@ -676,6 +679,7 @@ buildActionMask = 2147483647; files = ( A156AFA12090606D0098BBDD /* InitialOpenUITests.swift in Sources */, + A14C1B24223B8888002E0827 /* MenuItemUITests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/PineUITests/InitialOpenUITests.swift b/PineUITests/InitialOpenUITests.swift index fbb91e6..eb7c005 100644 --- a/PineUITests/InitialOpenUITests.swift +++ b/PineUITests/InitialOpenUITests.swift @@ -20,10 +20,6 @@ class InitialOpenUITests: XCTestCase { XCUIApplication().launch() } - override func tearDown() { - super.tearDown() - } - func testEmptyTextViewOpened() { let app = XCUIApplication() let textview = app.textViews.firstMatch diff --git a/PineUITests/MenuItemUITests.swift b/PineUITests/MenuItemUITests.swift new file mode 100644 index 0000000..a2aa420 --- /dev/null +++ b/PineUITests/MenuItemUITests.swift @@ -0,0 +1,103 @@ +// +// MenuItemUITests.swift +// PineUITests +// +// Created by Luka Kerr on 15/3/19. +// Copyright © 2019 Luka Kerr. All rights reserved. +// + +import XCTest + +class MenuItemUITests: XCTestCase { + + override func setUp() { + super.setUp() + + // Stop immediately when a failure occurs + continueAfterFailure = false + + // Launch the application + XCUIApplication().launch() + } + + func testToggleSidebar() { + let app = XCUIApplication() + let viewMenu = app.menuBarItems.element(boundBy: 4) + + let sidebar = app.splitGroups.firstMatch + + XCTAssertTrue(sidebar.isHittable) + + let hideSidebarPredicate = NSPredicate(format: "title = %@", "Hide Sidebar") + let hideSidebarMenu = viewMenu.menuItems.element(matching: hideSidebarPredicate) + + hideSidebarMenu.click() + + XCTAssertFalse(sidebar.isHittable) + + let showSidebarPredicate = NSPredicate(format: "title = %@", "Show Sidebar") + let showSidebarMenu = viewMenu.menuItems.element(matching: showSidebarPredicate) + + showSidebarMenu.click() + + XCTAssertTrue(sidebar.isHittable) + } + + func testTogglePreview() { + let app = XCUIApplication() + let viewMenu = app.menuBarItems.element(boundBy: 4) + + let preview = app.splitGroups.element(boundBy: 1) + + XCTAssertTrue(preview.isHittable) + + let togglePreviewPredicate = NSPredicate(format: "title = %@", "Toggle Preview") + let togglePreviewMenu = viewMenu.menuItems.element(matching: togglePreviewPredicate) + + togglePreviewMenu.click() + + XCTAssertFalse(preview.isHittable) + + togglePreviewMenu.click() + + XCTAssertTrue(preview.isHittable) + } + + func testToggleEditor() { + let app = XCUIApplication() + let viewMenu = app.menuBarItems.element(boundBy: 4) + let editor = app.textViews.firstMatch + + XCTAssertTrue(editor.isHittable) + + let toggleEditorPredicate = NSPredicate(format: "title = %@", "Toggle Editor") + let toggleEditorMenu = viewMenu.menuItems.element(matching: toggleEditorPredicate) + + toggleEditorMenu.click() + + XCTAssertFalse(editor.isHittable) + + toggleEditorMenu.click() + + XCTAssertTrue(editor.isHittable) + } + + func testShowReference() { + let app = XCUIApplication() + let viewMenu = app.menuBarItems.element(boundBy: 4) + + XCTAssertEqual(app.windows.count, 1) + + let showReferencePredicate = NSPredicate(format: "title = %@", "Show Reference") + let showReferenceMenu = viewMenu.menuItems.element(matching: showReferencePredicate) + + showReferenceMenu.click() + + XCTAssertEqual(app.windows.count, 2) + + app.typeKey("w", modifierFlags: .command) + + XCTAssertEqual(app.windows.count, 1) + } + +}