pscbonline-ios/PSCBOnlineTests/Sources/Models/ResponseTests.swift

118 lines
4.0 KiB
Swift
Raw Permalink Normal View History

2024-07-08 15:20:00 +03:00
//
// 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")
}
}