github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/stellar/loader_test.go (about) 1 package stellar 2 3 import ( 4 "testing" 5 6 "github.com/keybase/client/go/libkb" 7 "github.com/keybase/client/go/protocol/stellar1" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestLoaderClean(t *testing.T) { 12 tc := libkb.SetupTest(t, "loaderclean", 1) 13 defer tc.Cleanup() 14 15 loader := NewLoader(tc.G) 16 require.Equal(t, 0, loader.PaymentsLen()) 17 require.Equal(t, 0, loader.RequestsLen()) 18 19 // clean of empty should work 20 n := loader.cleanPayments(50) 21 require.Equal(t, 0, n) 22 require.Equal(t, 0, loader.PaymentsLen()) 23 n = loader.cleanRequests(40) 24 require.Equal(t, 0, n) 25 require.Equal(t, 0, loader.RequestsLen()) 26 27 for i := 0; i < 10; i++ { 28 addRandomPayment(t, loader) 29 addRandomRequest(t, loader) 30 } 31 32 // clean below limit shouldn't do anything 33 n = loader.cleanPayments(50) 34 require.Equal(t, 0, n) 35 require.Equal(t, 10, loader.PaymentsLen()) 36 n = loader.cleanRequests(40) 37 require.Equal(t, 0, n) 38 require.Equal(t, 10, loader.RequestsLen()) 39 40 for i := 0; i < 100; i++ { 41 addRandomPayment(t, loader) 42 addRandomRequest(t, loader) 43 } 44 45 require.Equal(t, 110, loader.PaymentsLen()) 46 require.Equal(t, 110, loader.RequestsLen()) 47 48 // clean above limit should clean 49 n = loader.cleanPayments(50) 50 require.Equal(t, 60, n) 51 require.Equal(t, 50, loader.PaymentsLen()) 52 n = loader.cleanRequests(40) 53 require.Equal(t, 70, n) 54 require.Equal(t, 40, loader.RequestsLen()) 55 56 // make sure clean works more than one time: 57 for i := 0; i < 10; i++ { 58 addRandomPayment(t, loader) 59 addRandomRequest(t, loader) 60 } 61 62 require.Equal(t, 60, loader.PaymentsLen()) 63 require.Equal(t, 50, loader.RequestsLen()) 64 65 n = loader.cleanPayments(50) 66 require.Equal(t, 10, n) 67 require.Equal(t, 50, loader.PaymentsLen()) 68 69 n = loader.cleanRequests(40) 70 require.Equal(t, 10, n) 71 require.Equal(t, 40, loader.RequestsLen()) 72 } 73 74 func addRandomPayment(t *testing.T, loader *Loader) { 75 id, err := libkb.RandString("", 16) 76 if err != nil { 77 t.Fatal(err) 78 } 79 pid := stellar1.PaymentID(id) 80 loader.storePayment(pid, &stellar1.PaymentLocal{Id: pid}) 81 } 82 83 func addRandomRequest(t *testing.T, loader *Loader) { 84 id, err := libkb.RandString("", 16) 85 if err != nil { 86 t.Fatal(err) 87 } 88 rid := stellar1.KeybaseRequestID(id) 89 loader.storeRequest(rid, &stellar1.RequestDetailsLocal{Id: rid}) 90 }