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