- Backend REST/gateway/track routes, analytics, Blockscout proxy paths. - Frontend wallet and liquidity surfaces; MetaMask token list alignment. - Deployment docs, verification scripts, address inventory updates. Check: go build ./... under backend/ (pass). Made-with: Cursor
74 lines
1.6 KiB
Go
74 lines
1.6 KiB
Go
package rest
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/jackc/pgx/v5"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type fakeStatsRow struct {
|
|
scan func(dest ...any) error
|
|
}
|
|
|
|
func (r fakeStatsRow) Scan(dest ...any) error {
|
|
return r.scan(dest...)
|
|
}
|
|
|
|
func TestLoadExplorerStatsReturnsValues(t *testing.T) {
|
|
var call int
|
|
queryRow := func(_ context.Context, _ string, _ ...any) pgx.Row {
|
|
call++
|
|
return fakeStatsRow{
|
|
scan: func(dest ...any) error {
|
|
target, ok := dest[0].(*int64)
|
|
require.True(t, ok)
|
|
|
|
switch call {
|
|
case 1:
|
|
*target = 11
|
|
case 2:
|
|
*target = 22
|
|
case 3:
|
|
*target = 33
|
|
case 4:
|
|
*target = 44
|
|
default:
|
|
t.Fatalf("unexpected query call %d", call)
|
|
}
|
|
return nil
|
|
},
|
|
}
|
|
}
|
|
|
|
stats, err := loadExplorerStats(context.Background(), 138, queryRow)
|
|
require.NoError(t, err)
|
|
require.Equal(t, int64(11), stats.TotalBlocks)
|
|
require.Equal(t, int64(22), stats.TotalTransactions)
|
|
require.Equal(t, int64(33), stats.TotalAddresses)
|
|
require.Equal(t, int64(44), stats.LatestBlock)
|
|
}
|
|
|
|
func TestLoadExplorerStatsReturnsErrorWhenQueryFails(t *testing.T) {
|
|
queryRow := func(_ context.Context, query string, _ ...any) pgx.Row {
|
|
return fakeStatsRow{
|
|
scan: func(dest ...any) error {
|
|
if strings.Contains(query, "COUNT(*) FROM transactions") {
|
|
return errors.New("boom")
|
|
}
|
|
target, ok := dest[0].(*int64)
|
|
require.True(t, ok)
|
|
*target = 1
|
|
return nil
|
|
},
|
|
}
|
|
}
|
|
|
|
_, err := loadExplorerStats(context.Background(), 138, queryRow)
|
|
require.Error(t, err)
|
|
require.Contains(t, err.Error(), "query total transactions")
|
|
}
|