MCPcopy Create free account
hub / github.com/devaccuracy/ledgerforge / TestCreateAccountWithExternalGenerator

Function TestCreateAccountWithExternalGenerator

account_test.go:80–127  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

78}
79
80func TestCreateAccountWithExternalGenerator(t *testing.T) {
81 // Initialize the mock HTTP responder
82 httpmock.Activate()
83 defer httpmock.DeactivateAndReset()
84
85 datasource, mock, err := newTestDataSource()
86 assert.NoError(t, err)
87
88 d, err := NewLedgerForge(datasource)
89 assert.NoError(t, err)
90
91 // Mock the external account generator response
92 httpmock.RegisterResponder("GET", "http://example.com/generateAccount",
93 httpmock.NewStringResponder(200, `{"account_number": "123456789", "bank_name": "LedgerForge Bank"}`))
94
95 account := model.Account{
96 Name: "Test Account",
97 BankName: "LedgerForge Bank",
98 Number: "123456789",
99 Currency: "NGN",
100 LedgerID: "ledger_123",
101 IdentityID: gofakeit.UUID(),
102 BalanceID: gofakeit.UUID(),
103 MetaData: map[string]interface{}{"key": "value"},
104 }
105 metaDataJSON, _ := json.Marshal(account.MetaData)
106
107 rows := sqlmock.NewRows([]string{"balance_id", "indicator", "currency", "currency_multiplier", "ledger_id", "balance", "credit_balance", "debit_balance", "inflight_balance", "inflight_credit_balance", "inflight_debit_balance", "created_at", "version", "track_fund_lineage", "allocation_strategy", "identity_id"}).
108 AddRow(account.BalanceID, "", "NGN", 1, account.LedgerID, 100, 50, 50, 0, 0, 0, time.Now(), 0, false, "FIFO", "")
109
110 mock.ExpectQuery("SELECT .* FROM ledgerforge.balances WHERE balance_id =").
111 WithArgs(account.BalanceID).
112 WillReturnRows(rows)
113
114 mock.ExpectExec("INSERT INTO ledgerforge.accounts").
115 WithArgs(sqlmock.AnyArg(), account.Name, account.Number, account.BankName, account.Currency, account.LedgerID, account.IdentityID, account.BalanceID, sqlmock.AnyArg(), metaDataJSON).
116 WillReturnResult(sqlmock.NewResult(1, 1))
117
118 result, err := d.CreateAccount(account)
119 assert.NoError(t, err)
120 assert.Equal(t, "123456789", result.Number)
121 assert.Equal(t, "LedgerForge Bank", result.BankName)
122 assert.WithinDuration(t, time.Now(), result.CreatedAt, time.Second)
123
124 if err := mock.ExpectationsWereMet(); err != nil {
125 t.Errorf("there were unfulfilled expectations: %s", err)
126 }
127}
128
129func TestGetAccountByID(t *testing.T) {
130 cnf := &config.Configuration{

Callers

nothing calls this directly

Calls 3

CreateAccountMethod · 0.95
newTestDataSourceFunction · 0.85
NewLedgerForgeFunction · 0.85

Tested by

no test coverage detected