Skip to content

Commit

Permalink
WIP rewrite tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ropiku committed Feb 14, 2017
1 parent dffb97c commit f4962d4
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 64 deletions.
17 changes: 17 additions & 0 deletions ReactiveAlamofire.xcodeproj/project.pbxproj
Expand Up @@ -198,6 +198,7 @@
D8F54BE11C741CD800FD6705 /* Sources */,
D8F54BE21C741CD800FD6705 /* Frameworks */,
D8F54BE31C741CD800FD6705 /* Resources */,
91029D3E1E533C1D00431AB9 /* ShellScript */,
);
buildRules = (
);
Expand Down Expand Up @@ -281,6 +282,22 @@
shellPath = /bin/sh;
shellScript = "/usr/local/bin/carthage copy-frameworks";
};
91029D3E1E533C1D00431AB9 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework",
"$(SRCROOT)/Carthage/Build/iOS/ReactiveSwift.framework",
"$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/usr/local/bin/carthage copy-frameworks";
};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
Expand Down
Expand Up @@ -65,7 +65,7 @@
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Release"
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
Expand Down
92 changes: 49 additions & 43 deletions ReactiveAlamofireTests/RequestAndParseTests.swift
Expand Up @@ -9,21 +9,22 @@
import XCTest

import Alamofire
import ReactiveCocoa
import ReactiveSwift
import Result

class RequestAndParseTests: XCTestCase {
func testResponseProducerWithJSONParsing() {
let exp = expectation(description: "get response")
Alamofire.request(.GET, "http://httpbin.org/get?foo=bar")
Alamofire.request("http://httpbin.org/get?foo=bar")
.responseProducer()
.parseResponse(Request.JSONResponseSerializer())
.startWithNext { result in
XCTAssertNotNil(result.data)
XCTAssertNotNil(result.request)
XCTAssertNotNil(result.response)
XCTAssertTrue(result.result.isSuccess)
let dict = result.result.value! as! [String: AnyObject]
.parseResponse(DataRequest.jsonResponseSerializer())
.startWithResult { result in
let response = result.value!
XCTAssertNotNil(response.data)
XCTAssertNotNil(response.request)
XCTAssertNotNil(response.response)
XCTAssertTrue(response.result.isSuccess)
let dict = response.result.value! as! [String: AnyObject]
XCTAssertEqual(dict["args"] as! [String: String], ["foo": "bar"])
exp.fulfill()
}
Expand All @@ -32,18 +33,19 @@ class RequestAndParseTests: XCTestCase {

func testRequestProducerToResponseProducerWithJSONParsing() {
let exp = expectation(description: "get response")
SignalProducer<Request, NoError> { observer, _ in
let req = Alamofire.request(.GET, "http://httpbin.org/get?foo=bar")
observer.sendNext(req)
SignalProducer<DataRequest, NoError> { observer, _ in
let req = Alamofire.request("http://httpbin.org/get?foo=bar")
observer.send(value: req)
}
.responseProducer()
.parseResponse(Request.JSONResponseSerializer())
.startWithNext { result in
XCTAssertNotNil(result.data)
XCTAssertNotNil(result.request)
XCTAssertNotNil(result.response)
XCTAssertTrue(result.result.isSuccess)
let dict = result.result.value! as! [String: AnyObject]
.parseResponse(DataRequest.jsonResponseSerializer())
.startWithResult { result in
let response = result.value!
XCTAssertNotNil(response.data)
XCTAssertNotNil(response.request)
XCTAssertNotNil(response.response)
XCTAssertTrue(response.result.isSuccess)
let dict = response.result.value! as! [String: AnyObject]
XCTAssertEqual(dict["args"] as! [String: String], ["foo": "bar"])
exp.fulfill()
}
Expand All @@ -53,45 +55,49 @@ class RequestAndParseTests: XCTestCase {
func testRequestProducerToResponseProducerWithMultipleReq() {
let exp0 = expectation(description: "get 1st response")
let exp1 = expectation(description: "get 2nd response")
var results: [[String: String]] = []
SignalProducer(values: [
Alamofire.request(.GET, "http://httpbin.org/get?foo=bar"),
Alamofire.request(.GET, "http://httpbin.org/get?egg=spam")
var results: [[String: Any]] = []
SignalProducer([
Alamofire.request("http://httpbin.org/get?foo=bar"),
Alamofire.request("http://httpbin.org/get?egg=spam")
])
.responseProducer()
.parseResponse(Request.JSONResponseSerializer())
.startWithNext { result in
XCTAssertNotNil(result.data)
XCTAssertNotNil(result.request)
XCTAssertNotNil(result.response)
XCTAssertTrue(result.result.isSuccess)
let dict = result.result.value! as! [String: AnyObject]
.parseResponse(DataRequest.jsonResponseSerializer())
.startWithResult { result in
let response = result.value!
XCTAssertNotNil(response.data)
XCTAssertNotNil(response.request)
XCTAssertNotNil(response.response)
XCTAssertTrue(response.result.isSuccess)
let dict = response.result.value! as! [String: Any]

if results.count == 0 {
exp0.fulfill()
} else {
exp1.fulfill()
}
results.append(dict["args"] as! [String: String])
results.append(dict["args"] as! [String: Any])
}
waitForExpectations(timeout: 3, handler: nil)

XCTAssertEqual(results, [["foo": "bar"], ["egg": "spam"]])

// let expected: [[String: NSObject] = [["foo": "bar"], ["egg": "spam"]]
// XCTAssertEqual(results[0]["foo"], "bar")
}

func testRequestProducerToResponseProducerWithMerging() {
let num = 10
var exps = (0..<num).map { expectation(description: "get \($0)st response") }
let requests = (0..<num).map { Alamofire.request(.GET, "http://httpbin.org/get?req=\($0)") }
let requests = (0..<num).map { Alamofire.request("http://httpbin.org/get?req=\($0)") }
var results: Set<Int> = []
SignalProducer(values: requests)
.responseProducer(.Merge)
.parseResponse(Request.JSONResponseSerializer())
.startWithNext { result in
XCTAssertNotNil(result.data)
XCTAssertNotNil(result.request)
XCTAssertNotNil(result.response)
XCTAssertTrue(result.result.isSuccess)
let dict = result.result.value! as! [String: AnyObject]
SignalProducer(requests)
.responseProducer(.merge)
.parseResponse(DataRequest.jsonResponseSerializer())
.startWithResult { result in
let response = result.value!
XCTAssertNotNil(response.data)
XCTAssertNotNil(response.request)
XCTAssertNotNil(response.response)
XCTAssertTrue(response.result.isSuccess)
let dict = response.result.value! as! [String: AnyObject]
let exp = exps.removeLast()
exp.fulfill()
let numStr = ((dict["args"]! as? [String: String])?["req"])! as String
Expand Down
13 changes: 7 additions & 6 deletions ReactiveAlamofireTests/RequestTests.swift
Expand Up @@ -9,17 +9,18 @@
import XCTest

import Alamofire
import ReactiveCocoa
import ReactiveSwift

class RequestTests: XCTestCase {
func testResponseProducer() {
let exp = expectation(description: "get response")
Alamofire.request(.GET, "http://httpbin.org/get")
Alamofire.request("http://httpbin.org/get")
.responseProducer()
.startWithNext { result in
XCTAssertNotNil(result.data)
XCTAssertNotNil(result.request)
XCTAssertNotNil(result.response)
.startWithResult { result in
XCTAssertNotNil(result.value)
XCTAssertNotNil(result.value!.data)
XCTAssertNotNil(result.value!.request)
XCTAssertNotNil(result.value!.response)
XCTAssertNil(result.error)
exp.fulfill()
}
Expand Down
28 changes: 14 additions & 14 deletions ReactiveAlamofireTests/SignalProducerTests.swift
Expand Up @@ -9,17 +9,17 @@
import XCTest

import Alamofire
import ReactiveCocoa
import ReactiveSwift

class SignalProducerTests: XCTestCase {

func testSignalParseResponseWithStringSerializer() {
let (signal, observer) = Signal<ResponseProducerResult, ResponseProducerResult>.pipe()
var result: Alamofire.Response<String, NSError>?
var result: DataResponse<String>?
signal
.parseResponse(Request.stringResponseSerializer())
.observeNext { value in
result = value
.parseResponse(DataRequest.stringResponseSerializer())
.observeResult { value in
result = value.value
}

let data = "data".data(using: String.Encoding.utf8)!
Expand All @@ -30,19 +30,19 @@ class SignalProducerTests: XCTestCase {
headerFields: ["Content-Type": "image/jpeg; charset=utf-8"]
)

observer.sendNext(ResponseProducerResult(request: nil, response: response, data: data, error: nil))
observer.send(value: ResponseProducerResult(request: nil, response: response, data: data, error: nil))

XCTAssertTrue(result!.result.isSuccess)
XCTAssertEqual(result!.result.value, "data")
}

func testSignalParseResponseWithJSONSerializer() {
let (signal, observer) = Signal<ResponseProducerResult, ResponseProducerResult>.pipe()
var result: Alamofire.Response<AnyObject, NSError>?
var result: DataResponse<Any>?
signal
.parseResponse(Request.JSONResponseSerializer())
.observeNext { value in
result = value
.parseResponse(DataRequest.jsonResponseSerializer())
.observeResult { value in
result = value.value
}

let data = "{\"foo\": \"bar\"}".data(using: String.Encoding.utf8)!
Expand All @@ -53,15 +53,15 @@ class SignalProducerTests: XCTestCase {
headerFields: ["Content-Type": "application/json; charset=utf-8"]
)

observer.sendNext(ResponseProducerResult(request: nil, response: response, data: data, error: nil))
observer.send(value: ResponseProducerResult(request: nil, response: response, data: data, error: nil))

XCTAssertTrue(result!.result.isSuccess)
XCTAssertEqual(result!.result.value as! [String: String], ["foo": "bar"])
}

func testSignalParseResponseWithJSONSerializerAndBadJSONData() {
let (signal, observer) = Signal<ResponseProducerResult, ResponseProducerResult>.pipe()
let result = AnyProperty(initialValue: [], signal: signal.parseResponse(Request.JSONResponseSerializer()).materialize().collect())
let result = Property(initial: [], then: signal.parseResponse(DataRequest.jsonResponseSerializer()).materialize().collect())

let data = "{".data(using: String.Encoding.utf8)!
let response = HTTPURLResponse(
Expand All @@ -71,7 +71,7 @@ class SignalProducerTests: XCTestCase {
headerFields: ["Content-Type": "application/json; charset=utf-8"]
)

observer.sendNext(ResponseProducerResult(request: nil, response: response, data: data, error: nil))
observer.send(value: ResponseProducerResult(request: nil, response: response, data: data, error: nil))
observer.sendCompleted()

XCTAssertEqual(result.value.count, 1)
Expand Down

0 comments on commit f4962d4

Please sign in to comment.