Skip to content

Commit

Permalink
Test without OHHTTPStubs
Browse files Browse the repository at this point in the history
  • Loading branch information
ishkawa committed Sep 29, 2016
1 parent 1ff261d commit 0a17987
Show file tree
Hide file tree
Showing 11 changed files with 70 additions and 53 deletions.
3 changes: 0 additions & 3 deletions .gitmodules
@@ -1,6 +1,3 @@
[submodule "Carthage/Checkouts/Result"]
path = Carthage/Checkouts/Result
url = https://github.com/antitypical/Result.git
[submodule "Carthage/Checkouts/OHHTTPStubs"]
path = Carthage/Checkouts/OHHTTPStubs
url = https://github.com/AliSoftware/OHHTTPStubs.git
4 changes: 4 additions & 0 deletions APIKit.xcodeproj/project.pbxproj
Expand Up @@ -50,6 +50,7 @@
7F7048F01D9D8A12003C99F6 /* ResponseError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F7048ED1D9D8A12003C99F6 /* ResponseError.swift */; };
7F7048F11D9D8A12003C99F6 /* SessionTaskError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F7048EE1D9D8A12003C99F6 /* SessionTaskError.swift */; };
7F7048F31D9D8A1F003C99F6 /* URLEncodedSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F7048F21D9D8A1F003C99F6 /* URLEncodedSerialization.swift */; };
7FA1690D1D9D8C80006C982B /* HTTPStub.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FA1690C1D9D8C80006C982B /* HTTPStub.swift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand Down Expand Up @@ -126,6 +127,7 @@
7F7048EE1D9D8A12003C99F6 /* SessionTaskError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SessionTaskError.swift; path = Sources/APIKit/Error/SessionTaskError.swift; sourceTree = SOURCE_ROOT; };
7F7048F21D9D8A1F003C99F6 /* URLEncodedSerialization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = URLEncodedSerialization.swift; path = Sources/APIKit/Serializations/URLEncodedSerialization.swift; sourceTree = SOURCE_ROOT; };
7F8ECDFD1B6A799E00234E04 /* Demo.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Demo.playground; sourceTree = "<group>"; };
7FA1690C1D9D8C80006C982B /* HTTPStub.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPStub.swift; sourceTree = "<group>"; };
CD5115241B1FFBA900514240 /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CD51152D1B1FFCC700514240 /* OHHTTPStubs.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OHHTTPStubs.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
Expand Down Expand Up @@ -260,6 +262,7 @@
7F698E4C1D9D680C00F1561D /* TestComponents */ = {
isa = PBXGroup;
children = (
7FA1690C1D9D8C80006C982B /* HTTPStub.swift */,
7F698E4D1D9D680C00F1561D /* TestRequest.swift */,
7F698E4E1D9D680C00F1561D /* TestSessionAdapter.swift */,
7F698E4F1D9D680C00F1561D /* TestSessionTask.swift */,
Expand Down Expand Up @@ -481,6 +484,7 @@
7F698E581D9D680C00F1561D /* RequestTests.swift in Sources */,
7F698E5E1D9D680C00F1561D /* TestRequest.swift in Sources */,
7F698E601D9D680C00F1561D /* TestSessionTask.swift in Sources */,
7FA1690D1D9D8C80006C982B /* HTTPStub.swift in Sources */,
7F698E5A1D9D680C00F1561D /* URLSessionAdapterTests.swift in Sources */,
7F698E561D9D680C00F1561D /* StringDataParserTests.swift in Sources */,
7F698E541D9D680C00F1561D /* FormURLEncodedDataParserTests.swift in Sources */,
Expand Down
3 changes: 0 additions & 3 deletions APIKit.xcworkspace/contents.xcworkspacedata

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion Cartfile.private

This file was deleted.

1 change: 0 additions & 1 deletion Cartfile.resolved
@@ -1,2 +1 @@
github "AliSoftware/OHHTTPStubs" "5.2.1-swift3"
github "antitypical/Result" "3.0.0"
1 change: 0 additions & 1 deletion Carthage/Checkouts/OHHTTPStubs
Submodule OHHTTPStubs deleted from 624d51
@@ -1,6 +1,5 @@
import Foundation
import XCTest
import OHHTTPStubs
import APIKit

class URLSessionAdapterSubclassTests: XCTestCase {
Expand All @@ -25,24 +24,16 @@ class URLSessionAdapterSubclassTests: XCTestCase {
super.setUp()

let configuration = URLSessionConfiguration.default
configuration.protocolClasses = [HTTPStub.self]

adapter = SessionAdapter(configuration: configuration)
session = Session(adapter: adapter)
}

override func tearDown() {
OHHTTPStubs.removeAllStubs()
super.tearDown()
}

func testDelegateMethodCall() {
let data = try! JSONSerialization.data(withJSONObject: [:], options: [])

OHHTTPStubs.stubRequests(passingTest: { request in
return true
}, withStubResponse: { request in
return OHHTTPStubsResponse(data: data, statusCode: 200, headers: nil)
})

let data = "{}".data(using: .utf8)!
HTTPStub.stubResult = .success(data)

let expectation = self.expectation(description: "wait for response")
let request = TestRequest()

Expand Down
38 changes: 10 additions & 28 deletions Tests/APIKitTests/SessionAdapterType/URLSessionAdapterTests.swift
@@ -1,38 +1,29 @@
import Foundation
import APIKit
import XCTest
import OHHTTPStubs

class URLSessionAdapterTests: XCTestCase {
var session: Session!

override func setUp() {
super.setUp()

let configuration = URLSessionConfiguration.default
configuration.protocolClasses = [HTTPStub.self]

let adapter = URLSessionAdapter(configuration: configuration)
session = Session(adapter: adapter)
}

override func tearDown() {
OHHTTPStubs.removeAllStubs()
super.tearDown()
}

// MARK: - integration tests
func testSuccess() {
let dictionary = ["key": "value"]
let data = try! JSONSerialization.data(withJSONObject: dictionary, options: [])

OHHTTPStubs.stubRequests(passingTest: { request in
return true
}, withStubResponse: { request in
return OHHTTPStubsResponse(data: data, statusCode: 200, headers: nil)
})
HTTPStub.stubResult = .success(data)

let expectation = self.expectation(description: "wait for response")
let request = TestRequest()

session.send(request) { response in
switch response {
case .success(let dictionary):
Expand All @@ -50,12 +41,7 @@ class URLSessionAdapterTests: XCTestCase {

func testConnectionError() {
let error = NSError(domain: NSURLErrorDomain, code: NSURLErrorTimedOut, userInfo: nil)

OHHTTPStubs.stubRequests(passingTest: { request in
return true
}, withStubResponse: { request in
return OHHTTPStubsResponse(error: error)
})
HTTPStub.stubResult = .failure(error)

let expectation = self.expectation(description: "wait for response")
let request = TestRequest()
Expand All @@ -82,18 +68,14 @@ class URLSessionAdapterTests: XCTestCase {
}

func testCancel() {
let data = try! JSONSerialization.data(withJSONObject: [:], options: [])

OHHTTPStubs.stubRequests(passingTest: { request in
return true
}, withStubResponse: { request in
return OHHTTPStubsResponse(data: data, statusCode: 200, headers: nil).responseTime(1.0)
})

let data = "{}".data(using: .utf8)!
HTTPStub.stubResult = .success(data)

let expectation = self.expectation(description: "wait for response")
let request = TestRequest()

session.send(request) { result in
print(result)
guard case .failure(let error) = result,
case .connectionError(let connectionError as NSError) = error else {
XCTFail()
Expand Down
1 change: 0 additions & 1 deletion Tests/APIKitTests/SessionCallbackQueueTests.swift
@@ -1,7 +1,6 @@
import Foundation
import APIKit
import XCTest
import OHHTTPStubs

class SessionCallbackQueueTests: XCTestCase {
var adapter: TestSessionAdapter!
Expand Down
1 change: 0 additions & 1 deletion Tests/APIKitTests/SessionTests.swift
@@ -1,7 +1,6 @@
import Foundation
import APIKit
import XCTest
import OHHTTPStubs
import Result

class SessionTests: XCTestCase {
Expand Down
51 changes: 51 additions & 0 deletions Tests/APIKitTests/TestComponents/HTTPStub.swift
@@ -0,0 +1,51 @@
import Foundation
import Dispatch
import Result

class HTTPStub: URLProtocol {
static var stubResult: Result<Data, NSError> = .success(Data())

private var isCancelled = false

// MARK: URLProtocol -

override class func canInit(with: URLRequest) -> Bool {
return true
}

override class func canonicalRequest(for request: URLRequest) -> URLRequest {
return request
}

override func startLoading() {
let response = HTTPURLResponse(
url: request.url!,
statusCode: 200,
httpVersion: "1.1",
headerFields: nil)

let queue = DispatchQueue.global(qos: .default)

queue.asyncAfter(deadline: .now() + 0.01) {
guard !self.isCancelled else {
return
}

self.client?.urlProtocol(self, didReceive: response!, cacheStoragePolicy: .notAllowed)

switch HTTPStub.stubResult {
case .success(let data):
self.client?.urlProtocol(self, didLoad: data)

case .failure(let error):
self.client?.urlProtocol(self, didFailWithError: error)
}

self.client?.urlProtocolDidFinishLoading(self)
}
}

override func stopLoading() {
isCancelled = true
}
}

0 comments on commit 0a17987

Please sign in to comment.