get_isolated_balance_test.go raw
1 package queries
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 "github.com/stretchr/testify/require"
8
9 "github.com/getAlby/hub/constants"
10 "github.com/getAlby/hub/db"
11 "github.com/getAlby/hub/tests"
12 )
13
14 func TestGetIsolatedBalance_PendingNoOverflow(t *testing.T) {
15 svc, err := tests.CreateTestService(t)
16 require.NoError(t, err)
17 defer svc.Remove()
18
19 app, _, err := tests.CreateApp(svc)
20 assert.NoError(t, err)
21 app.Isolated = true
22 svc.DB.Save(&app)
23
24 paymentAmount := uint64(1000) // 1 sat
25
26 tx := db.Transaction{
27 AppId: &app.ID,
28 RequestEventId: nil,
29 Type: constants.TRANSACTION_TYPE_OUTGOING,
30 State: constants.TRANSACTION_STATE_PENDING,
31 FeeReserveMsat: uint64(10000),
32 AmountMsat: paymentAmount,
33 PaymentRequest: tests.MockInvoice,
34 PaymentHash: tests.MockPaymentHash,
35 SelfPayment: true,
36 }
37 svc.DB.Save(&tx)
38
39 balanceMsat, err := GetIsolatedBalanceMsat(svc.DB, app.ID)
40 require.NoError(t, err)
41 assert.Equal(t, int64(-11000), balanceMsat)
42 }
43
44 func TestGetIsolatedBalance_SettledNoOverflow(t *testing.T) {
45 svc, err := tests.CreateTestService(t)
46 require.NoError(t, err)
47 defer svc.Remove()
48
49 app, _, err := tests.CreateApp(svc)
50 assert.NoError(t, err)
51 app.Isolated = true
52 svc.DB.Save(&app)
53
54 paymentAmount := uint64(1000) // 1 sat
55
56 tx := db.Transaction{
57 AppId: &app.ID,
58 RequestEventId: nil,
59 Type: constants.TRANSACTION_TYPE_OUTGOING,
60 State: constants.TRANSACTION_STATE_SETTLED,
61 FeeReserveMsat: uint64(0),
62 AmountMsat: paymentAmount,
63 PaymentRequest: tests.MockInvoice,
64 PaymentHash: tests.MockPaymentHash,
65 SelfPayment: true,
66 }
67 svc.DB.Save(&tx)
68
69 balanceMsat, err := GetIsolatedBalanceMsat(svc.DB, app.ID)
70 require.NoError(t, err)
71 assert.Equal(t, int64(-1000), balanceMsat)
72 }
73