Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -714,7 +714,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 6.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/url_launcher_example_example.app/Contents/MacOS/url_launcher_example_example";
};
name = Debug;
Expand All @@ -733,7 +733,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 6.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/url_launcher_example_example.app/Contents/MacOS/url_launcher_example_example";
};
name = Release;
Expand All @@ -752,7 +752,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 6.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/url_launcher_example_example.app/Contents/MacOS/url_launcher_example_example";
};
name = Profile;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
// found in the LICENSE file.

import FlutterMacOS
import XCTest
import Testing

@testable import url_launcher_macos

Expand All @@ -14,7 +14,7 @@ private func urlParsingIsStrict() -> Bool {
}

/// A stub to simulate the system Url handler.
class StubWorkspace: SystemURLHandler {
private class StubWorkspace: SystemURLHandler {

var isSuccessful = true

Expand All @@ -23,66 +23,63 @@ class StubWorkspace: SystemURLHandler {
}

func urlForApplication(toOpen: URL) -> URL? {
return toOpen
return isSuccessful ? toOpen : nil
}
}

class RunnerTests: XCTestCase {
struct RunnerTests {

func testCanLaunchSuccessReturnsTrue() throws {
let plugin = UrlLauncherPlugin()

let result = try plugin.canLaunch(url: "https://flutter.dev")
XCTAssertNil(result.error)
XCTAssertTrue(result.value)
}

func testCanLaunchNoAppIsAbleToOpenUrlReturnsFalse() throws {
let plugin = UrlLauncherPlugin()
@Test(arguments: [
(url: "https://flutter.dev", isSuccessful: true),
(url: "example://flutter.dev", isSuccessful: false),
])
func canLaunch(url: String, isSuccessful: Bool) throws {
let workspace = StubWorkspace()
workspace.isSuccessful = isSuccessful
let plugin = UrlLauncherPlugin(workspace)

let result = try plugin.canLaunch(url: "example://flutter.dev")
XCTAssertNil(result.error)
XCTAssertFalse(result.value)
let result = try plugin.canLaunch(url: url)
#expect(result.error == nil)
#expect(result.value == isSuccessful)
}

func testCanLaunchInvalidUrlReturnsError() throws {
let plugin = UrlLauncherPlugin()
@Test func canLaunchInvalidUrlReturnsError() throws {
let workspace = StubWorkspace()
workspace.isSuccessful = false
let plugin = UrlLauncherPlugin(workspace)

let result = try plugin.canLaunch(url: "invalid url")
if urlParsingIsStrict() {
XCTAssertEqual(result.error, .invalidUrl)
#expect(result.error == .invalidUrl)
} else {
XCTAssertFalse(result.value)
#expect(!result.value)
}
}

func testLaunchSuccessReturnsTrue() throws {
@Test(arguments: [
(url: "https://flutter.dev", isSuccessful: true),
(url: "schemethatdoesnotexist://flutter.dev", isSuccessful: false),
])
func launch(url: String, isSuccessful: Bool) throws {
let workspace = StubWorkspace()
workspace.isSuccessful = isSuccessful
let plugin = UrlLauncherPlugin(workspace)

let result = try plugin.launch(url: "https://flutter.dev")
XCTAssertNil(result.error)
XCTAssertTrue(result.value)
let result = try plugin.launch(url: url)
#expect(result.error == nil)
#expect(result.value == isSuccessful)
}

func testLaunchNoAppIsAbleToOpenUrlReturnsFalse() throws {
@Test func launchInvalidUrlReturnsError() throws {
let workspace = StubWorkspace()
workspace.isSuccessful = false
let plugin = UrlLauncherPlugin(workspace)

let result = try plugin.launch(url: "schemethatdoesnotexist://flutter.dev")
XCTAssertNil(result.error)
XCTAssertFalse(result.value)
}

func testLaunchInvalidUrlReturnsError() throws {
let plugin = UrlLauncherPlugin()

let result = try plugin.launch(url: "invalid url")
if urlParsingIsStrict() {
XCTAssertEqual(result.error, .invalidUrl)
#expect(result.error == .invalidUrl)
} else {
XCTAssertFalse(result.value)
#expect(!result.value)
}
}
}
Loading