From 828f3c53e174edc9bbad347821494273c60701fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elvis=20Nu=C3=B1ez?= <3lvis@users.noreply.github.com> Date: Sun, 29 Jan 2017 06:03:42 +0100 Subject: [PATCH] Add synchronous networking (#174) * Add synchronous networking * Fix wrong merging --- Sources/Deprecated.swift | 4 ++-- Sources/Networking+Download.swift | 2 +- Sources/Networking.swift | 14 +++++++------- Tests/DELETETests.swift | 4 ++-- Tests/DeprecatedTests.swift | 20 ++++++++++---------- Tests/GETTests.swift | 6 +++--- Tests/ImageTests.swift | 4 ++-- Tests/NetworkingTests.swift | 8 ++++---- Tests/POSTTests.swift | 4 ++-- Tests/PUTTests.swift | 4 ++-- 10 files changed, 35 insertions(+), 35 deletions(-) diff --git a/Sources/Deprecated.swift b/Sources/Deprecated.swift index 73e57b0..f4bf106 100644 --- a/Sources/Deprecated.swift +++ b/Sources/Deprecated.swift @@ -12,7 +12,7 @@ public extension Networking { public func imageFromCache(_ path: String, cacheName: String? = nil, completion: @escaping (_ image: NetworkingImage?) -> Void) { let object = self.imageFromCache(path, cacheName: cacheName) - TestCheck.testBlock(self.disableTestingMode) { + TestCheck.testBlock(self.isSynchronous) { completion(object) } } @@ -56,7 +56,7 @@ public extension Networking { public func dataFromCache(for path: String, cacheName: String? = nil, completion: @escaping (_ data: Data?) -> Void) { let object = self.dataFromCache(for: path, cacheName: cacheName) - TestCheck.testBlock(self.disableTestingMode) { + TestCheck.testBlock(self.isSynchronous) { completion(object) } } diff --git a/Sources/Networking+Download.swift b/Sources/Networking+Download.swift index aa15d7e..f3b1ff1 100644 --- a/Sources/Networking+Download.swift +++ b/Sources/Networking+Download.swift @@ -23,7 +23,7 @@ public extension Networking { @discardableResult public func downloadImage(_ path: String, cacheName: String? = nil, completion: @escaping (_ image: NetworkingImage?, _ error: NSError?) -> Void) -> String { let requestIdentifier = self.request(.GET, path: path, cacheName: cacheName, parameterType: nil, parameters: nil, parts: nil, responseType: .image) { response, _, error in - TestCheck.testBlock(self.disableTestingMode) { + TestCheck.testBlock(self.isSynchronous) { completion(response as? NetworkingImage, error) } } diff --git a/Sources/Networking.swift b/Sources/Networking.swift index 95461ed..003f463 100644 --- a/Sources/Networking.swift +++ b/Sources/Networking.swift @@ -136,9 +136,9 @@ public class Networking { var configurationType: ConfigurationType /** - Flag used to disable synchronous request when running automatic tests. + Flag used to indicate synchronous request. */ - var disableTestingMode = false + public var isSynchronous = false /** Flag used to disable error logging. Useful when want to disable log before release build. @@ -456,14 +456,14 @@ extension Networking { } } } - TestCheck.testBlock(self.disableTestingMode) { + TestCheck.testBlock(self.isSynchronous) { completion(returnedResponse, headers, returnedError) } } case .data, .image: let object = self.objectFromCache(for: path, cacheName: cacheName, responseType: responseType) if let object = object { - TestCheck.testBlock(self.disableTestingMode) { + TestCheck.testBlock(self.isSynchronous) { completion(object, [String: Any](), nil) } } else { @@ -486,7 +486,7 @@ extension Networking { fatalError("Response Type is different than Data and Image") } } - TestCheck.testBlock(self.disableTestingMode) { + TestCheck.testBlock(self.isSynchronous) { completion(returnedResponse, headers, error) } } @@ -623,7 +623,7 @@ extension Networking { } } - if TestCheck.isTesting && self.disableTestingMode == false { + if TestCheck.isTesting && self.isSynchronous == false { semaphore.signal() } else { DispatchQueue.main.async { @@ -642,7 +642,7 @@ extension Networking { session.taskDescription = requestID session.resume() - if TestCheck.isTesting && self.disableTestingMode == false { + if TestCheck.isTesting && self.isSynchronous == false { _ = semaphore.wait(timeout: DispatchTime.now() + 60.0) self.logError(parameterType: parameterType, parameters: parameters, data: returnedData, request: request as URLRequest, response: returnedResponse, error: connectionError as NSError?) if let unauthorizedRequestCallback = self.unauthorizedRequestCallback, let error = connectionError as NSError?, error.code == 403 || error.code == 401 { diff --git a/Tests/DELETETests.swift b/Tests/DELETETests.swift index c13b4be..bc1530d 100644 --- a/Tests/DELETETests.swift +++ b/Tests/DELETETests.swift @@ -87,7 +87,7 @@ class DELETETests: XCTestCase { let expectation = self.expectation(description: "testCancelDELETE") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false networking.DELETE("/delete") { _, error in XCTAssertTrue(completed) @@ -105,7 +105,7 @@ class DELETETests: XCTestCase { let expectation = self.expectation(description: "testCancelDELETE") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true let requestID = networking.DELETE("/delete") { _, error in XCTAssertEqual(error?.code, URLError.cancelled.rawValue) expectation.fulfill() diff --git a/Tests/DeprecatedTests.swift b/Tests/DeprecatedTests.swift index 702d3d5..3793284 100644 --- a/Tests/DeprecatedTests.swift +++ b/Tests/DeprecatedTests.swift @@ -7,7 +7,7 @@ class DeprecatedTests: XCTestCase { func testCancelWithRequestID() { let expectation = self.expectation(description: "testCancelAllRequests") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var cancelledGET = false let requestID = networking.GET("/get") { _, error in @@ -27,7 +27,7 @@ class DeprecatedTests: XCTestCase { func testCancelAllRequests() { let expectation = self.expectation(description: "testCancelAllRequests") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var cancelledGET = false var cancelledPOST = false @@ -58,7 +58,7 @@ class DeprecatedTests: XCTestCase { let expectation = self.expectation(description: "testCancelGET") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false networking.GET("/get") { _, error in XCTAssertTrue(completed) @@ -77,7 +77,7 @@ class DeprecatedTests: XCTestCase { let expectation = self.expectation(description: "testCancelGET") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false let requestID = networking.GET("/get") { _, error in XCTAssertTrue(completed) @@ -96,7 +96,7 @@ class DeprecatedTests: XCTestCase { let expectation = self.expectation(description: "testCancelPOST") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false networking.POST("/post", parameters: ["username": "jameson", "password": "secret"]) { _, error in XCTAssertTrue(completed) @@ -115,7 +115,7 @@ class DeprecatedTests: XCTestCase { let expectation = self.expectation(description: "testCancelPOST") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false let requestID = networking.POST("/post", parameters: ["username": "jameson", "password": "secret"]) { _, error in XCTAssertTrue(completed) @@ -134,7 +134,7 @@ class DeprecatedTests: XCTestCase { let expectation = self.expectation(description: "testCancelPUT") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false networking.PUT("/put", parameters: ["username": "jameson", "password": "secret"]) { _, error in XCTAssertTrue(completed) @@ -153,7 +153,7 @@ class DeprecatedTests: XCTestCase { let expectation = self.expectation(description: "testCancelPUT") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false let requestID = networking.PUT("/put", parameters: ["username": "jameson", "password": "secret"]) { _, error in XCTAssertTrue(completed) @@ -172,7 +172,7 @@ class DeprecatedTests: XCTestCase { let expectation = self.expectation(description: "testCancelDELETE") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false networking.DELETE("/delete") { _, error in XCTAssertTrue(completed) @@ -191,7 +191,7 @@ class DeprecatedTests: XCTestCase { let expectation = self.expectation(description: "testCancelDELETE") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false let requestID = networking.DELETE("/delete") { _, error in XCTAssertTrue(completed) diff --git a/Tests/GETTests.swift b/Tests/GETTests.swift index 83eb8ea..8411053 100644 --- a/Tests/GETTests.swift +++ b/Tests/GETTests.swift @@ -17,7 +17,7 @@ class GETTests: XCTestCase { func testRequestReturnBlockInMainThread() { let expectation = self.expectation(description: "testRequestReturnBlockInMainThread") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true networking.GET("/get") { _, _ in XCTAssertTrue(Thread.isMainThread) expectation.fulfill() @@ -117,7 +117,7 @@ class GETTests: XCTestCase { let expectation = self.expectation(description: "testCancelGET") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false networking.GET("/get") { _, error in XCTAssertTrue(completed) @@ -135,7 +135,7 @@ class GETTests: XCTestCase { let expectation = self.expectation(description: "testCancelGET") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true let requestID = networking.GET("/get") { _, error in XCTAssertEqual(error?.code, URLError.cancelled.rawValue) expectation.fulfill() diff --git a/Tests/ImageTests.swift b/Tests/ImageTests.swift index f384f24..38adf7a 100644 --- a/Tests/ImageTests.swift +++ b/Tests/ImageTests.swift @@ -22,7 +22,7 @@ class ImageTests: XCTestCase { func testDownloadImageReturnBlockInMainThread() { let expectation = self.expectation(description: "testDownloadImageReturnBlockInMainThread") let networking = Networking(baseURL: self.baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true networking.downloadImage("/image/png") { _, _ in XCTAssertTrue(Thread.isMainThread) expectation.fulfill() @@ -128,7 +128,7 @@ class ImageTests: XCTestCase { let expectation = self.expectation(description: "testCancelImageDownload") let networking = Networking(baseURL: self.baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true let path = "/image/png" try! Helper.removeFileIfNeeded(networking, path: path) diff --git a/Tests/NetworkingTests.swift b/Tests/NetworkingTests.swift index 243b151..32f0399 100644 --- a/Tests/NetworkingTests.swift +++ b/Tests/NetworkingTests.swift @@ -70,7 +70,7 @@ class NetworkingTests: XCTestCase { let expectation = self.expectation(description: "testSkipTestMode") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var synchronous = false networking.GET("/get") { _, _ in @@ -144,7 +144,7 @@ class NetworkingTests: XCTestCase { func testCancelWithRequestID() { let expectation = self.expectation(description: "testCancelAllRequests") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var cancelledGET = false let requestID = networking.GET("/get") { _, error in @@ -164,7 +164,7 @@ class NetworkingTests: XCTestCase { func testCancelAllRequests() { let expectation = self.expectation(description: "testCancelAllRequests") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var cancelledGET = false var cancelledPOST = false @@ -194,7 +194,7 @@ class NetworkingTests: XCTestCase { func testCancelRequestsReturnInMainThread() { let expectation = self.expectation(description: "testCancelRequestsReturnInMainThread") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true networking.GET("/get") { _, error in XCTAssertTrue(Thread.isMainThread) XCTAssertEqual(error?.code, URLError.cancelled.rawValue) diff --git a/Tests/POSTTests.swift b/Tests/POSTTests.swift index 71bb6fc..15dbe75 100644 --- a/Tests/POSTTests.swift +++ b/Tests/POSTTests.swift @@ -204,7 +204,7 @@ class POSTTests: XCTestCase { let expectation = self.expectation(description: "testCancelPOST") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false networking.POST("/post", parameters: ["username": "jameson", "password": "secret"]) { _, error in XCTAssertTrue(completed) @@ -222,7 +222,7 @@ class POSTTests: XCTestCase { let expectation = self.expectation(description: "testCancelPOST") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true let requestID = networking.POST("/post", parameters: ["username": "jameson", "password": "secret"]) { _, error in XCTAssertEqual(error?.code, URLError.cancelled.rawValue) expectation.fulfill() diff --git a/Tests/PUTTests.swift b/Tests/PUTTests.swift index 2210b4b..d1c5f76 100644 --- a/Tests/PUTTests.swift +++ b/Tests/PUTTests.swift @@ -88,7 +88,7 @@ class PUTTests: XCTestCase { let expectation = self.expectation(description: "testCancelPUT") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true var completed = false networking.PUT("/put", parameters: ["username": "jameson", "password": "secret"]) { _, error in XCTAssertTrue(completed) @@ -106,7 +106,7 @@ class PUTTests: XCTestCase { let expectation = self.expectation(description: "testCancelPUT") let networking = Networking(baseURL: baseURL) - networking.disableTestingMode = true + networking.isSynchronous = true let requestID = networking.PUT("/put", parameters: ["username": "jameson", "password": "secret"]) { _, error in XCTAssertEqual(error?.code, URLError.cancelled.rawValue) expectation.fulfill()