|
|
@@ -441,10 +441,21 @@ final class DataResponseSerializationTestCase: BaseTestCase {
|
|
|
|
|
|
// MARK: -
|
|
|
|
|
|
+// used by testThatDecodableResponseSerializerSucceedsWhenDataIsNilWithEmptyResponseConformingTypeAndEmptyResponseStatusCode
|
|
|
+extension Bool: EmptyResponse {
|
|
|
+ public static func emptyValue() -> Bool {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
final class DecodableResponseSerializerTests: BaseTestCase {
|
|
|
private let error = AFError.responseSerializationFailed(reason: .inputDataNilOrZeroLength)
|
|
|
|
|
|
- struct DecodableValue: Decodable {
|
|
|
+ struct DecodableValue: Decodable, EmptyResponse {
|
|
|
+ static func emptyValue() -> DecodableValue {
|
|
|
+ return DecodableValue(string: "")
|
|
|
+ }
|
|
|
+
|
|
|
let string: String
|
|
|
}
|
|
|
|
|
|
@@ -555,6 +566,20 @@ final class DecodableResponseSerializerTests: BaseTestCase {
|
|
|
}
|
|
|
|
|
|
func testThatDecodableResponseSerializerSucceedsWhenDataIsNilWithEmptyResponseStatusCode() {
|
|
|
+ // Given
|
|
|
+ let serializer = DecodableResponseSerializer<DecodableValue>()
|
|
|
+ let response = HTTPURLResponse(statusCode: 204)
|
|
|
+
|
|
|
+ // When
|
|
|
+ let result = Result { try serializer.serialize(request: nil, response: response, data: nil, error: nil) }
|
|
|
+
|
|
|
+ // Then
|
|
|
+ XCTAssertTrue(result.isSuccess)
|
|
|
+ XCTAssertNotNil(result.value)
|
|
|
+ XCTAssertNil(result.error)
|
|
|
+ }
|
|
|
+
|
|
|
+ func testThatDecodableResponseSerializerSucceedsWhenDataIsNilWithEmptyTypeAndEmptyResponseStatusCode() {
|
|
|
// Given
|
|
|
let serializer = DecodableResponseSerializer<Empty>()
|
|
|
let response = HTTPURLResponse(statusCode: 204)
|
|
|
@@ -567,6 +592,40 @@ final class DecodableResponseSerializerTests: BaseTestCase {
|
|
|
XCTAssertNotNil(result.value)
|
|
|
XCTAssertNil(result.error)
|
|
|
}
|
|
|
+
|
|
|
+ func testThatDecodableResponseSerializerSucceedsWhenDataIsNilWithEmptyResponseConformingTypeAndEmptyResponseStatusCode() {
|
|
|
+ // Given
|
|
|
+ let serializer = DecodableResponseSerializer<Bool>()
|
|
|
+ let response = HTTPURLResponse(statusCode: 204)
|
|
|
+
|
|
|
+ // When
|
|
|
+ let result = Result { try serializer.serialize(request: nil, response: response, data: nil, error: nil) }
|
|
|
+
|
|
|
+ // Then
|
|
|
+ XCTAssertTrue(result.isSuccess)
|
|
|
+ XCTAssertNotNil(result.value)
|
|
|
+ XCTAssertNil(result.error)
|
|
|
+ }
|
|
|
+
|
|
|
+ func testThatDecodableResponseSerializerFailsWhenDataIsNilWithEmptyResponseNonconformingTypeAndEmptyResponseStatusCode() {
|
|
|
+ // Given
|
|
|
+ let serializer = DecodableResponseSerializer<Int>()
|
|
|
+ let response = HTTPURLResponse(statusCode: 204)
|
|
|
+
|
|
|
+ // When
|
|
|
+ let result = Result { try serializer.serialize(request: nil, response: response, data: nil, error: nil) }
|
|
|
+
|
|
|
+ // Then
|
|
|
+ XCTAssertTrue(result.isFailure)
|
|
|
+ XCTAssertNil(result.value)
|
|
|
+ XCTAssertNotNil(result.error)
|
|
|
+
|
|
|
+ if let error = result.error?.asAFError {
|
|
|
+ XCTAssertTrue(error.isInvalidEmptyResponse)
|
|
|
+ } else {
|
|
|
+ XCTFail("error should not be nil")
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// MARK: -
|