github.com/status-im/status-go@v1.1.0/db/history_store_test.go (about) 1 package db 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/status-im/status-go/eth-node/types" 10 ) 11 12 func createInMemStore(t *testing.T) HistoryStore { 13 db, err := NewMemoryDB() 14 require.NoError(t, err) 15 return NewHistoryStore(LevelDBStorage{db: db}) 16 } 17 18 func TestGetNewHistory(t *testing.T) { 19 topic := types.TopicType{1} 20 duration := time.Hour 21 store := createInMemStore(t) 22 th, err := store.GetHistory(topic, duration) 23 require.NoError(t, err) 24 require.Equal(t, duration, th.Duration) 25 require.Equal(t, topic, th.Topic) 26 } 27 28 func TestGetExistingHistory(t *testing.T) { 29 topic := types.TopicType{1} 30 duration := time.Hour 31 store := createInMemStore(t) 32 th, err := store.GetHistory(topic, duration) 33 require.NoError(t, err) 34 35 now := time.Now() 36 th.Current = now 37 require.NoError(t, th.Save()) 38 39 th, err = store.GetHistory(topic, duration) 40 require.NoError(t, err) 41 require.Equal(t, now.Unix(), th.Current.Unix()) 42 } 43 44 func TestNewHistoryRequest(t *testing.T) { 45 store := createInMemStore(t) 46 id := types.Hash{1} 47 _, err := store.GetRequest(id) 48 require.Error(t, err) 49 req := store.NewRequest() 50 req.ID = id 51 52 th, err := store.GetHistory(types.TopicType{1}, time.Hour) 53 require.NoError(t, err) 54 req.AddHistory(th) 55 require.NoError(t, req.Save()) 56 57 req, err = store.GetRequest(id) 58 require.NoError(t, err) 59 require.Len(t, req.Histories(), 1) 60 } 61 62 func TestGetAllRequests(t *testing.T) { 63 store := createInMemStore(t) 64 idOne := types.Hash{1} 65 idTwo := types.Hash{2} 66 67 req := store.NewRequest() 68 req.ID = idOne 69 require.NoError(t, req.Save()) 70 71 all, err := store.GetAllRequests() 72 require.NoError(t, err) 73 require.Len(t, all, 1) 74 75 req = store.NewRequest() 76 req.ID = idTwo 77 require.NoError(t, req.Save()) 78 79 all, err = store.GetAllRequests() 80 require.NoError(t, err) 81 require.Len(t, all, 2) 82 }