Skip to content

Commit a5429da

Browse files
committed
Add tests for pending transfer orders in ChannelDetailsViewModel
1 parent 808d3a6 commit a5429da

File tree

3 files changed

+73
-1
lines changed

3 files changed

+73
-1
lines changed

Bitkit/ViewModels/TransferViewModel.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ class TransferViewModel: ObservableObject {
113113
uiState.isAdvanced = true
114114
}
115115

116+
func displayOrder(for order: IBtOrder) -> IBtOrder {
117+
uiState.order ?? order
118+
}
119+
116120
func payOrder(order: IBtOrder, speed: TransactionSpeed) async throws {
117121
var fees = try? await coreService.blocktank.fees(refresh: true)
118122
if fees == nil {

Bitkit/Views/Transfer/SpendingConfirm.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ struct SpendingConfirm: View {
1515
@State private var transactionFee: UInt64 = 0
1616

1717
private var currentOrder: IBtOrder {
18-
transfer.uiState.order ?? order
18+
transfer.displayOrder(for: order)
1919
}
2020

2121
var lspFee: UInt64 {
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import BitkitCore
2+
import XCTest
3+
4+
@testable import Bitkit
5+
6+
final class TransferViewModelTests: XCTestCase {
7+
@MainActor
8+
func testDisplayOrderPrefersUiStateOrder() {
9+
let viewModel = TransferViewModel()
10+
let baseOrder = makeOrder(id: "base", clientBalanceSat: 100_000, lspBalanceSat: 50000)
11+
let updatedOrder = makeOrder(id: "updated", clientBalanceSat: 150_000, lspBalanceSat: 75000)
12+
13+
let fallback = viewModel.displayOrder(for: baseOrder)
14+
XCTAssertEqual(fallback.id, baseOrder.id)
15+
XCTAssertEqual(fallback.clientBalanceSat, baseOrder.clientBalanceSat)
16+
17+
viewModel.uiState.order = updatedOrder
18+
let result = viewModel.displayOrder(for: baseOrder)
19+
XCTAssertEqual(result.id, updatedOrder.id)
20+
XCTAssertEqual(result.clientBalanceSat, updatedOrder.clientBalanceSat)
21+
}
22+
23+
private func makeOrder(id: String, clientBalanceSat: UInt64, lspBalanceSat: UInt64) -> IBtOrder {
24+
IBtOrder(
25+
id: id,
26+
state: .created,
27+
state2: .created,
28+
feeSat: 1000,
29+
networkFeeSat: 2483,
30+
serviceFeeSat: 1520,
31+
lspBalanceSat: lspBalanceSat,
32+
clientBalanceSat: clientBalanceSat,
33+
zeroConf: false,
34+
zeroReserve: false,
35+
clientNodeId: "node123",
36+
channelExpiryWeeks: 52,
37+
channelExpiresAt: "2025-03-14T10:30:00Z",
38+
orderExpiresAt: "2024-03-21T15:45:00Z",
39+
channel: nil,
40+
lspNode: .init(alias: "", pubkey: "", connectionStrings: [], readonly: nil),
41+
lnurl: nil,
42+
payment: IBtPayment(
43+
state: .created,
44+
state2: .created,
45+
paidSat: 0,
46+
bolt11Invoice: IBtBolt11Invoice(
47+
request: "lnbc...",
48+
state: .pending,
49+
expiresAt: "2024-03-21T15:45:00Z",
50+
updatedAt: "2024-03-14T08:20:00Z"
51+
),
52+
onchain: IBtOnchainTransactions(
53+
address: "bc1q...",
54+
confirmedSat: 0,
55+
requiredConfirmations: 3,
56+
transactions: []
57+
),
58+
isManuallyPaid: nil,
59+
manualRefunds: nil
60+
),
61+
couponCode: nil,
62+
source: nil,
63+
discount: nil,
64+
updatedAt: "2024-03-14T08:20:00Z",
65+
createdAt: "2024-03-14T08:15:00Z"
66+
)
67+
}
68+
}

0 commit comments

Comments
 (0)