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  }