118 lines
4.0 KiB
Swift
118 lines
4.0 KiB
Swift
//
|
|
// ResponseTests.swift
|
|
// PSCB-OOS-iOSTests
|
|
//
|
|
// Created by Antonov Ilia on 23.10.2020.
|
|
//
|
|
|
|
import Foundation
|
|
import XCTest
|
|
|
|
@testable import PSCBOnline
|
|
|
|
final class ResponseTests: XCTestCase {
|
|
|
|
private let mockResponse: String = {
|
|
return """
|
|
{
|
|
"status":"STATUS_SUCCESS",
|
|
"requestId":"PROD-141024-103898B",
|
|
"payment":{
|
|
"orderId":"1111103",
|
|
"showOrderId":"1111103",
|
|
"paymentId":"8067739",
|
|
"account":"shpa",
|
|
"amount":1350.89,
|
|
"state":"sent",
|
|
"marketPlace":47607,
|
|
"paymentMethod":"ac-shpa",
|
|
"stateDate":"2014-10-24T10:38:40.501+04:00"
|
|
},
|
|
"PaReq":"eJydk01TgzAQhu/+CgbPkpBihU6IU60fVWmr4jjjxcnAjkXLRwN12n/",
|
|
"order":"22040229",
|
|
"TermUrl":"https://oos.pscb.ru/merchantApi/confirmShpa",
|
|
"URL":"https://acs.multicarta.ru/PaReqVISA.jsp",
|
|
"MD":"NTJmZTFjMWEtNjQ0Mi00ODQ2LTlkMjMtZDU0MzdkYzA0N2Fk"
|
|
}
|
|
"""
|
|
}()
|
|
|
|
private let anotherMockResponse: String = {
|
|
"""
|
|
{"status":"STATUS_SUCCESS","requestId":"DEMO-201102-1652-2BE12","payment":{"orderId":"XC-33353","showOrderId":"XC-33353","paymentId":"229359620","account":null,"amount":155.35,"state":"end","marketPlace":12345,"paymentMethod":"ac-shpa","stateDate":"2020-11-02T16:52:16.563+03:00"},"description":"Payment processed successfully"}
|
|
"""
|
|
}()
|
|
|
|
private let dateFormatter: DateFormatter = {
|
|
let fmtString = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
|
|
let formatter = DateFormatter()
|
|
|
|
formatter.dateFormat = fmtString
|
|
return formatter
|
|
}()
|
|
|
|
func testDecodeResponse() {
|
|
// given:
|
|
let responseData = mockResponse.data(using: .utf8)!
|
|
let decoder = JSONDecoders.iso8601DateAwareDecoder()
|
|
|
|
// expect:
|
|
XCTAssertNoThrow(try decoder.decode(Response.self, from: responseData))
|
|
|
|
// when:
|
|
let response = try! decoder.decode(Response.self, from: responseData)
|
|
|
|
// then:
|
|
XCTAssertEqual(response.requestId, "PROD-141024-103898B")
|
|
XCTAssertEqual(response.status, .success)
|
|
|
|
// when:
|
|
let payment = response.payment!
|
|
|
|
// then:
|
|
XCTAssertEqual(payment.state, .sent)
|
|
XCTAssertEqual(payment.amount, Decimal(1350.89))
|
|
XCTAssertEqual(payment.marketPlace, 47607)
|
|
XCTAssertEqual(payment.orderId, "1111103")
|
|
XCTAssertEqual(payment.showOrderId, "1111103")
|
|
XCTAssertEqual(payment.stateDate, dateFormatter.date(from: "2014-10-24T10:38:40.501+04:00"))
|
|
XCTAssertEqual(payment.paymentId, "8067739")
|
|
|
|
// when:
|
|
let acquiringData = response.acquiringData
|
|
|
|
// then:
|
|
XCTAssertEqual(acquiringData?.order, "22040229")
|
|
}
|
|
|
|
func testDecodeResponse_another() {
|
|
// given:
|
|
let responseData = anotherMockResponse.data(using: .utf8)!
|
|
let decoder = JSONDecoders.iso8601DateAwareDecoder()
|
|
|
|
// expect:
|
|
XCTAssertNoThrow(try decoder.decode(Response.self, from: responseData))
|
|
|
|
// when:
|
|
let response = try! decoder.decode(Response.self, from: responseData)
|
|
|
|
// then:
|
|
XCTAssertEqual(response.requestId, "DEMO-201102-1652-2BE12")
|
|
XCTAssertEqual(response.status, .success)
|
|
XCTAssertEqual(response.description, "Payment processed successfully")
|
|
|
|
// when:
|
|
let payment = response.payment!
|
|
|
|
// then:
|
|
XCTAssertEqual(payment.state, .end)
|
|
XCTAssertEqual(payment.amount, Decimal(155.35))
|
|
XCTAssertEqual(payment.marketPlace, 12345)
|
|
XCTAssertEqual(payment.orderId, "XC-33353")
|
|
XCTAssertEqual(payment.showOrderId, "XC-33353")
|
|
XCTAssertEqual(payment.stateDate, dateFormatter.date(from: "2020-11-02T16:52:16.563+03:00"))
|
|
XCTAssertEqual(payment.paymentId, "229359620")
|
|
}
|
|
|
|
}
|