Skip to content

Commit

Permalink
Merge branch 'coverting-objc-to-swift' into platform-example-app
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisdlangham committed Sep 28, 2023
2 parents d320c35 + 257b7cc commit 3a1190e
Show file tree
Hide file tree
Showing 17 changed files with 398 additions and 472 deletions.
4 changes: 4 additions & 0 deletions packages/url_launcher/url_launcher_ios/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 6.1.6

* Migrates plugin from Objective-C to Swift.

## 6.1.5

* Adds pub topics to package metadata.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,7 @@
baseConfigurationReference = 666BCD7C181C34F8BE58929B /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = RunnerTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
Expand All @@ -651,6 +652,7 @@
baseConfigurationReference = D25C434271ACF6555E002440 /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = RunnerTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,49 +9,42 @@ import XCTest

final class URLLauncherTests: XCTestCase {

private func createPlugin() -> FLTURLLauncherPlugin {
private func createPlugin() -> URLLauncherPlugin {
let launcher = FakeLauncher()
return FLTURLLauncherPlugin(launcher: launcher)
return URLLauncherPlugin(launcher: launcher)
}

private func createPlugin(launcher: FakeLauncher) -> FLTURLLauncherPlugin {
FLTURLLauncherPlugin(launcher: launcher)
private func createPlugin(launcher: FakeLauncher) -> URLLauncherPlugin {
return URLLauncherPlugin(launcher: launcher)
}

func testCanLaunchSuccess() {
var error: FlutterError?
let result = createPlugin().canLaunchURL("good://url", error: &error)
let result = createPlugin().canLaunchUrl(url: "good://url")

XCTAssertNotNil(result)
XCTAssertTrue(result?.boolValue ?? false)
XCTAssertNil(error)
XCTAssertTrue(result)
}

func testCanLaunchFailure() {
var error: FlutterError?
let result = createPlugin().canLaunchURL("bad://url", error: &error)
let result = createPlugin().canLaunchUrl(url: "bad://url")

XCTAssertNotNil(result)
XCTAssertFalse(result?.boolValue ?? true)
XCTAssertFalse(result)
}

func testCanLaunchFailureWithInvalidURL() {
var error: FlutterError?
let result = createPlugin().canLaunchURL("urls can't have spaces", error: &error)

XCTAssertNil(result)
XCTAssertNotNil(error)
XCTAssertEqual(error?.code, "argument_error")
XCTAssertEqual(error?.message, "Unable to parse URL")
XCTAssertEqual(error?.details as? String, "Provided URL: urls can't have spaces")
let result = createPlugin().canLaunchUrl(url: "urls can't have spaces")

XCTAssertFalse(result)
}

func testLaunchSuccess() {
let expectation = XCTestExpectation(description: "completion called")
createPlugin().launchURL("good://url", universalLinksOnly: false) { result, error in
XCTAssertNotNil(result)
XCTAssertTrue(result?.boolValue ?? false)
XCTAssertNil(error)
createPlugin().launchUrl(url: "good://url", universalLinksOnly: false) { result in
switch result {
case .success(let success):
XCTAssertTrue(success)
case .failure(let error):
XCTFail("Unexpected error: \(error)")
}
expectation.fulfill()
}

Expand All @@ -60,11 +53,13 @@ final class URLLauncherTests: XCTestCase {

func testLaunchFailure() {
let expectation = XCTestExpectation(description: "completion called")

createPlugin().launchURL("bad://url", universalLinksOnly: false) { result, error in
XCTAssertNotNil(result)
XCTAssertFalse(result?.boolValue ?? true)
XCTAssertNil(error)
createPlugin().launchUrl(url: "bad://url", universalLinksOnly: false) { result in
switch result {
case .success(let success):
XCTAssertFalse(success)
case .failure(let error):
XCTFail("Unexpected error: \(error)")
}
expectation.fulfill()
}

Expand All @@ -73,14 +68,16 @@ final class URLLauncherTests: XCTestCase {

func testLaunchFailureWithInvalidURL() {
let expectation = XCTestExpectation(description: "completion called")

createPlugin().launchURL("urls can't have spaces", universalLinksOnly: false) { result, error in
XCTAssertNil(result)
XCTAssertNotNil(error)
XCTAssertEqual(error?.code, "argument_error")
XCTAssertEqual(error?.message, "Unable to parse URL")
XCTAssertEqual(error?.details as? String, "Provided URL: urls can't have spaces")

createPlugin().launchUrl(url: "urls can't have spaces", universalLinksOnly: false) { result in
switch result {
case .success(_):
XCTFail("Expected an error")
case .failure(let error):
let generalError = error as! GeneralError
XCTAssertEqual(generalError.code, "argument_error")
XCTAssertEqual(generalError.message, "Unable to parse URL")
XCTAssertEqual(generalError.details, "Provided URL: urls can't have spaces")
}
expectation.fulfill()
}

Expand All @@ -92,13 +89,17 @@ final class URLLauncherTests: XCTestCase {
let plugin = createPlugin(launcher: launcher)

let expectation = XCTestExpectation(description: "completion called")
plugin.launchURL("good://url", universalLinksOnly: false) { result, error in
XCTAssertNil(error)
plugin.launchUrl(url: "good://url", universalLinksOnly: false) { result in
switch result {
case .success(let success):
XCTAssertTrue(success)
case .failure(let error):
XCTFail("Unexpected error: \(error)")
}
expectation.fulfill()
}

wait(for: [expectation], timeout: 1)

XCTAssertEqual(launcher.passedOptions?[.universalLinksOnly] as? Bool, false)
}

Expand All @@ -107,31 +108,34 @@ final class URLLauncherTests: XCTestCase {
let plugin = createPlugin(launcher: launcher)

let expectation = XCTestExpectation(description: "completion called")

plugin.launchURL("good://url", universalLinksOnly: true) { result, error in
XCTAssertNil(error)
plugin.launchUrl(url: "good://url", universalLinksOnly: true) { result in
switch result {
case .success(let success):
XCTAssertTrue(success)
case .failure(let error):
XCTFail("Unexpected error: \(error)")
}
expectation.fulfill()
}

wait(for: [expectation], timeout: 1)

XCTAssertEqual(launcher.passedOptions?[.universalLinksOnly] as? Bool, true)
}

}

final private class FakeLauncher: NSObject, FULLauncher {
final private class FakeLauncher: NSObject, Launcher {
var passedOptions: [UIApplication.OpenExternalURLOptionsKey: Any]?

func canOpen(_ url: URL) -> Bool {
return url.scheme == "good"
func canOpenURL(_ url: URL) -> Bool {
url.scheme == "good"
}

func open(
_ url: URL, options: [UIApplication.OpenExternalURLOptionsKey: Any] = [:],
completionHandler: ((Bool) -> Void)? = nil
func openURL(
_ url: URL, options: [UIApplication.OpenExternalURLOptionsKey: Any],
completionHandler completion: ((Bool) -> Void)?
) {
self.passedOptions = options
completionHandler?(url.scheme == "good")
completion?(url.scheme == "good")
}
}

This file was deleted.

Loading

0 comments on commit 3a1190e

Please sign in to comment.