Skip to content

Commit

Permalink
Merge pull request #164 from devxoul/feature/remove-quick-nimble
Browse files Browse the repository at this point in the history
Remove `Quick`, `Nimble` dependencies
  • Loading branch information
OhKanghoon committed Jul 9, 2023
2 parents 8078e3a + 3030546 commit cd9b9e3
Show file tree
Hide file tree
Showing 17 changed files with 1,397 additions and 1,040 deletions.
43 changes: 0 additions & 43 deletions Package.resolved

This file was deleted.

8 changes: 2 additions & 6 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,10 @@ let package = Package(
.library(name: "URLMatcher", targets: ["URLMatcher"]),
.library(name: "URLNavigator", targets: ["URLNavigator"]),
],
dependencies: [
.package(url: "https://github.com/Quick/Quick.git", .upToNextMajor(from: "5.0.0")),
.package(url: "https://github.com/Quick/Nimble.git", .upToNextMajor(from: "10.0.0")),
],
targets: [
.target(name: "URLMatcher"),
.target(name: "URLNavigator", dependencies: ["URLMatcher"]),
.testTarget(name: "URLMatcherTests", dependencies: ["URLMatcher", "Quick", "Nimble"]),
.testTarget(name: "URLNavigatorTests", dependencies: ["URLNavigator", "Quick", "Nimble"]),
.testTarget(name: "URLMatcherTests", dependencies: ["URLMatcher"]),
.testTarget(name: "URLNavigatorTests", dependencies: ["URLNavigator"]),
]
)
121 changes: 0 additions & 121 deletions Tests/URLMatcherTests/URLConvertibleSpec.swift

This file was deleted.

125 changes: 125 additions & 0 deletions Tests/URLMatcherTests/URLConvertibleTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
import Foundation
import XCTest

import URLMatcher

final class URLConvertibleTests: XCTestCase {

// MARK: URL

func test_urlValue_returns_an_URL_instance() {
// given
let url = URL(string: "https://xoul.kr")!

// then
XCTAssertEqual(url.urlValue, url)
XCTAssertEqual(url.absoluteString.urlValue, url)
}

func test_urlValue_returns_an_URL_instance_from_unicode_string() {
// given
let urlString = "https://xoul.kr/한글"

// then
XCTAssertEqual(urlString.urlValue, URL(string: "https://xoul.kr/%ED%95%9C%EA%B8%80")!)
}

func test_urlStringValue_returns_a_URL_string_value() {
// given
let url = URL(string: "https://xoul.kr")!

// then
XCTAssertEqual(url.urlStringValue, url.absoluteString)
XCTAssertEqual(url.absoluteString.urlStringValue, url.absoluteString)
}


// MARK: Query Parameters

func test_queryParameters_when_there_is_no_query_string_return_empty_dict() {
// given
let url = "https://xoul.kr"

// then
XCTAssertEqual(url.urlValue?.queryParameters, [:])
XCTAssertEqual(url.urlStringValue.queryParameters, [:])
}

func test_queryParameters_when_there_is_an_empty_query_string_returns_empty_dict() {
// given
let url = "https://xoul.kr?"

// then
XCTAssertEqual(url.urlValue?.queryParameters, [:])
XCTAssertEqual(url.urlStringValue.queryParameters, [:])
}

func test_queryParameters_when_there_is_a_query_string() {
// given
let url = "https://xoul.kr?key=this%20is%20a%20value&greeting=hello+world!&int=12&int=34&url=https://foo/bar?hello=world"

// then
/// has proper keys
XCTAssertEqual(Set(url.urlValue!.queryParameters.keys), ["key", "greeting", "int", "url"])
XCTAssertEqual(Set(url.urlStringValue.queryParameters.keys), ["key", "greeting", "int", "url"])

/// decodes a percent encoding
XCTAssertEqual(url.urlValue?.queryParameters["key"], "this is a value")
XCTAssertEqual(url.urlStringValue.queryParameters["key"], "this is a value")

/// doesn't convert + to whitespace
XCTAssertEqual(url.urlValue?.queryParameters["greeting"], "hello+world!")
XCTAssertEqual(url.urlStringValue.queryParameters["greeting"], "hello+world!")

/// takes last value from duplicated keys
XCTAssertEqual(url.urlValue?.queryParameters["int"], "34")
XCTAssertEqual(url.urlStringValue.queryParameters["int"], "34")

/// has an url
XCTAssertEqual(url.urlValue?.queryParameters["url"], "https://foo/bar?hello=world")
}

// MARK: Query Items

func test_queryItems_when_there_is_no_query_string_returns_nil() {
// given
let url = "https://xoul.kr"

// then
XCTAssertNil(url.urlValue?.queryItems)
XCTAssertNil(url.urlStringValue.queryItems)
}

func test_queryItems_when_there_is_an_empty_query_string_returns_an_empty_array() {
// given
let url = "https://xoul.kr?"

// then
XCTAssertEqual(url.urlValue?.queryItems, [])
XCTAssertEqual(url.urlStringValue.queryItems, [])
}

func test_queryItems_when_there_is_a_query_string() {
// given
let url = "https://xoul.kr?key=this%20is%20a%20value&greeting=hello+world!&int=12&int=34"

// then
/// has exact number of items
XCTAssertEqual(url.urlValue?.queryItems?.count, 4)
XCTAssertEqual(url.urlStringValue.queryItems?.count, 4)

/// decodes a percent encoding
XCTAssertEqual(url.urlValue?.queryItems?[0], URLQueryItem(name: "key", value: "this is a value"))
XCTAssertEqual(url.urlStringValue.queryItems?[0], URLQueryItem(name: "key", value: "this is a value"))

/// doesn't convert + to whitespace
XCTAssertEqual(url.urlValue?.queryItems?[1], URLQueryItem(name: "greeting", value: "hello+world!"))
XCTAssertEqual(url.urlStringValue.queryItems?[1], URLQueryItem(name: "greeting", value: "hello+world!"))

/// takes all duplicated keys
XCTAssertEqual(url.urlValue?.queryItems?[2], URLQueryItem(name: "int", value: "12"))
XCTAssertEqual(url.urlValue?.queryItems?[3], URLQueryItem(name: "int", value: "34"))
XCTAssertEqual(url.urlStringValue.queryItems?[2], URLQueryItem(name: "int", value: "12"))
XCTAssertEqual(url.urlStringValue.queryItems?[3], URLQueryItem(name: "int", value: "34"))
}
}
46 changes: 0 additions & 46 deletions Tests/URLMatcherTests/URLMatcherInternalSpec.swift

This file was deleted.

Loading

0 comments on commit cd9b9e3

Please sign in to comment.