Skip to content

Commit

Permalink
Merge pull request #1705 from HedvigInsurance/feature/payments/update…
Browse files Browse the repository at this point in the history
…-tests

Update payment tests
  • Loading branch information
juliaendre authored Jan 30, 2025
2 parents b5195aa + a82e0ff commit 5a99a3b
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 43 deletions.
49 changes: 34 additions & 15 deletions Projects/Payment/Tests/PaymentMockData.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,39 @@ import hCore
struct MockPaymentData {
@discardableResult static func createMockPaymentService(
fetchPaymentData: @escaping FetchPaymentData = {
.init(
id: "id",
payment: .init(
gross: .init(amount: "230", currency: "SEK"),
net: .init(amount: "230", currency: "SEK"),
carriedAdjustment: .init(amount: "230", currency: "SEK"),
settlementAdjustment: nil,
date: .init()
(
upcoming: .init(
id: "id1",
payment: .init(
gross: .init(amount: "230", currency: "SEK"),
net: .init(amount: "230", currency: "SEK"),
carriedAdjustment: .init(amount: "230", currency: "SEK"),
settlementAdjustment: nil,
date: .init()
),
status: .upcoming,
contracts: [],
discounts: [],
paymentDetails: nil,
addedToThePayment: nil
),
status: .success,
contracts: [],
discounts: [],
paymentDetails: nil,
addedToThePayment: nil
ongoing: [
.init(
id: "id2",
payment: .init(
gross: .init(amount: "230", currency: "SEK"),
net: .init(amount: "230", currency: "SEK"),
carriedAdjustment: .init(amount: "230", currency: "SEK"),
settlementAdjustment: nil,
date: .init()
),
status: .pending,
contracts: [],
discounts: [],
paymentDetails: nil,
addedToThePayment: nil
)
]
)
},
fetchPaymentStatusData: @escaping FetchPaymentStatusData = {
Expand Down Expand Up @@ -60,7 +79,7 @@ struct MockPaymentData {
}
}

typealias FetchPaymentData = () async throws -> PaymentData?
typealias FetchPaymentData = () async throws -> (upcoming: Payment.PaymentData?, ongoing: [Payment.PaymentData])
typealias FetchPaymentStatusData = () async throws -> PaymentStatusData
typealias FetchPaymentDiscountsData = () async throws -> PaymentDiscountsData
typealias FetchPaymentHistoryData = () async throws -> [PaymentHistoryListData]
Expand Down Expand Up @@ -97,7 +116,7 @@ class MockPaymentService: hPaymentClient {
self.fetchConnectPaymentUrl = fetchConnectPaymentUrl
}

func getPaymentData() async throws -> PaymentData? {
func getPaymentData() async throws -> (upcoming: Payment.PaymentData?, ongoing: [Payment.PaymentData]) {
events.append(.getPaymentData)
let data = try await fetchPaymentData()
return data
Expand Down
48 changes: 34 additions & 14 deletions Projects/Payment/Tests/ServiceTests/PaymentServiceTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,39 @@ final class PaymentServiceTests: XCTestCase {
}

func testFetchPaymentDataSuccess() async {
let paymentData: PaymentData = .init(
id: "id",
payment: .init(
gross: .init(amount: "230", currency: "SEK"),
net: .init(amount: "230", currency: "SEK"),
carriedAdjustment: .init(amount: "230", currency: "SEK"),
settlementAdjustment: nil,
date: .init()
let paymentData: (upcoming: Payment.PaymentData?, ongoing: [Payment.PaymentData]) = (
upcoming: .init(
id: "id1",
payment: .init(
gross: .init(amount: "230", currency: "SEK"),
net: .init(amount: "230", currency: "SEK"),
carriedAdjustment: .init(amount: "230", currency: "SEK"),
settlementAdjustment: nil,
date: .init()
),
status: .upcoming,
contracts: [],
discounts: [],
paymentDetails: nil,
addedToThePayment: nil
),
status: .success,
contracts: [],
discounts: [],
paymentDetails: nil,
addedToThePayment: nil
ongoing: [
.init(
id: "id2",
payment: .init(
gross: .init(amount: "230", currency: "SEK"),
net: .init(amount: "230", currency: "SEK"),
carriedAdjustment: .init(amount: "230", currency: "SEK"),
settlementAdjustment: nil,
date: .init()
),
status: .pending,
contracts: [],
discounts: [],
paymentDetails: nil,
addedToThePayment: nil
)
]
)

let mockService = MockPaymentData.createMockPaymentService(
Expand All @@ -41,7 +60,8 @@ final class PaymentServiceTests: XCTestCase {
self.sut = mockService

let respondedPaymentData = try! await mockService.getPaymentData()
assert(respondedPaymentData == paymentData)
assert(respondedPaymentData.ongoing == paymentData.ongoing)
assert(respondedPaymentData.upcoming == paymentData.upcoming)
}

func testFetchPaymentStatusDataSuccess() async {
Expand Down
49 changes: 35 additions & 14 deletions Projects/Payment/Tests/StoreTests/StoreLoadTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,39 @@ final class StoreLoadTests: XCTestCase {
}

func testLoadPaymentDataSuccess() async throws {
let paymentData: PaymentData = .init(
id: "id",
payment: .init(
gross: .init(amount: "230", currency: "SEK"),
net: .init(amount: "230", currency: "SEK"),
carriedAdjustment: .init(amount: "230", currency: "SEK"),
settlementAdjustment: nil,
date: .init()
let paymentData: (upcoming: Payment.PaymentData?, ongoing: [Payment.PaymentData]) = (
upcoming: .init(
id: "id1",
payment: .init(
gross: .init(amount: "230", currency: "SEK"),
net: .init(amount: "230", currency: "SEK"),
carriedAdjustment: .init(amount: "230", currency: "SEK"),
settlementAdjustment: nil,
date: .init()
),
status: .upcoming,
contracts: [],
discounts: [],
paymentDetails: nil,
addedToThePayment: nil
),
status: .success,
contracts: [],
discounts: [],
paymentDetails: nil,
addedToThePayment: nil
ongoing: [
.init(
id: "id2",
payment: .init(
gross: .init(amount: "230", currency: "SEK"),
net: .init(amount: "230", currency: "SEK"),
carriedAdjustment: .init(amount: "230", currency: "SEK"),
settlementAdjustment: nil,
date: .init()
),
status: .pending,
contracts: [],
discounts: [],
paymentDetails: nil,
addedToThePayment: nil
)
]
)

let mockService = MockPaymentData.createMockPaymentService(
Expand All @@ -42,7 +61,8 @@ final class StoreLoadTests: XCTestCase {
await store.sendAsync(.load)
try await Task.sleep(nanoseconds: 100_000_000)
XCTAssertNil(store.loadingState[.getPaymentData])
assert(store.state.paymentData == paymentData)
assert(store.state.ongoingPaymentData == paymentData.ongoing)
assert(store.state.paymentData == paymentData.upcoming)
assert(mockService.events.count == 1)
assert(mockService.events.first == .getPaymentData)
}
Expand All @@ -56,6 +76,7 @@ final class StoreLoadTests: XCTestCase {
await store.sendAsync(.load)
XCTAssertNotNil(store.loadingState[.getPaymentData])
assert(store.state.paymentData == nil)
assert(store.state.ongoingPaymentData.isEmpty)
assert(mockService.events.count == 1)
assert(mockService.events.first == .getPaymentData)
}
Expand Down

0 comments on commit 5a99a3b

Please sign in to comment.