From c9faaf4e0178317457afbe99f0a23c4792d90dd4 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Fri, 30 Sep 2022 16:55:34 +0200 Subject: [PATCH] Add diffservice tests --- common/commonspace/diffservice/diffservice.go | 2 +- .../diffservice/diffservice_test.go | 59 +++++++++ .../mock_diffservice/mock_diffservice.go | 49 +++++++- .../diffservice/periodicsync_test.go | 1 - pkg/acl/storage/liststorage.go | 2 +- pkg/acl/storage/mock_storage/mock_storage.go | 114 +++++++++++++++++- 6 files changed, 222 insertions(+), 5 deletions(-) create mode 100644 common/commonspace/diffservice/diffservice_test.go diff --git a/common/commonspace/diffservice/diffservice.go b/common/commonspace/diffservice/diffservice.go index 44401783..15a9ff65 100644 --- a/common/commonspace/diffservice/diffservice.go +++ b/common/commonspace/diffservice/diffservice.go @@ -1,4 +1,4 @@ -//go:generate mockgen -destination mock_diffservice/mock_diffservice.go github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/diffservice DiffSyncer +//go:generate mockgen -destination mock_diffservice/mock_diffservice.go github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/diffservice DiffSyncer,PeriodicSync package diffservice import ( diff --git a/common/commonspace/diffservice/diffservice_test.go b/common/commonspace/diffservice/diffservice_test.go new file mode 100644 index 00000000..27b4da3b --- /dev/null +++ b/common/commonspace/diffservice/diffservice_test.go @@ -0,0 +1,59 @@ +package diffservice + +import ( + "github.com/anytypeio/go-anytype-infrastructure-experiments/app/logger" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/diffservice/mock_diffservice" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/storage/mock_storage" + mock_storage2 "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/storage/mock_storage" + "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/ldiff" + "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/ldiff/mock_ldiff" + "github.com/golang/mock/gomock" + "testing" +) + +func TestDiffService(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + spaceId := "spaceId" + l := logger.NewNamed("sync") + pSyncMock := mock_diffservice.NewMockPeriodicSync(ctrl) + storageMock := mock_storage.NewMockSpaceStorage(ctrl) + treeStorageMock := mock_storage2.NewMockTreeStorage(ctrl) + diffMock := mock_ldiff.NewMockDiff(ctrl) + syncPeriod := 1 + initId := "initId" + + service := &diffService{ + spaceId: spaceId, + storage: storageMock, + periodicSync: pSyncMock, + diff: diffMock, + log: l, + syncPeriod: syncPeriod, + } + + t.Run("init", func(t *testing.T) { + storageMock.EXPECT().TreeStorage(initId).Return(treeStorageMock, nil) + treeStorageMock.EXPECT().Heads().Return([]string{"h1", "h2"}, nil) + diffMock.EXPECT().Set(ldiff.Element{ + Id: initId, + Head: "h1h2", + }) + pSyncMock.EXPECT().Run() + service.Init([]string{initId}) + }) + + t.Run("update heads", func(t *testing.T) { + diffMock.EXPECT().Set(ldiff.Element{ + Id: initId, + Head: "h1h2", + }) + service.UpdateHeads(initId, []string{"h1", "h2"}) + }) + + t.Run("close", func(t *testing.T) { + pSyncMock.EXPECT().Close() + service.Close() + }) +} diff --git a/common/commonspace/diffservice/mock_diffservice/mock_diffservice.go b/common/commonspace/diffservice/mock_diffservice/mock_diffservice.go index 6f22a1a4..966a7cc5 100644 --- a/common/commonspace/diffservice/mock_diffservice/mock_diffservice.go +++ b/common/commonspace/diffservice/mock_diffservice/mock_diffservice.go @@ -1,5 +1,5 @@ // Code generated by MockGen. DO NOT EDIT. -// Source: github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/diffservice (interfaces: DiffSyncer) +// Source: github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/diffservice (interfaces: DiffSyncer,PeriodicSync) // Package mock_diffservice is a generated GoMock package. package mock_diffservice @@ -47,3 +47,50 @@ func (mr *MockDiffSyncerMockRecorder) Sync(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Sync", reflect.TypeOf((*MockDiffSyncer)(nil).Sync), arg0) } + +// MockPeriodicSync is a mock of PeriodicSync interface. +type MockPeriodicSync struct { + ctrl *gomock.Controller + recorder *MockPeriodicSyncMockRecorder +} + +// MockPeriodicSyncMockRecorder is the mock recorder for MockPeriodicSync. +type MockPeriodicSyncMockRecorder struct { + mock *MockPeriodicSync +} + +// NewMockPeriodicSync creates a new mock instance. +func NewMockPeriodicSync(ctrl *gomock.Controller) *MockPeriodicSync { + mock := &MockPeriodicSync{ctrl: ctrl} + mock.recorder = &MockPeriodicSyncMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockPeriodicSync) EXPECT() *MockPeriodicSyncMockRecorder { + return m.recorder +} + +// Close mocks base method. +func (m *MockPeriodicSync) Close() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Close") +} + +// Close indicates an expected call of Close. +func (mr *MockPeriodicSyncMockRecorder) Close() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Close", reflect.TypeOf((*MockPeriodicSync)(nil).Close)) +} + +// Run mocks base method. +func (m *MockPeriodicSync) Run() { + m.ctrl.T.Helper() + m.ctrl.Call(m, "Run") +} + +// Run indicates an expected call of Run. +func (mr *MockPeriodicSyncMockRecorder) Run() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Run", reflect.TypeOf((*MockPeriodicSync)(nil).Run)) +} diff --git a/common/commonspace/diffservice/periodicsync_test.go b/common/commonspace/diffservice/periodicsync_test.go index 5b7c7e41..56d855f2 100644 --- a/common/commonspace/diffservice/periodicsync_test.go +++ b/common/commonspace/diffservice/periodicsync_test.go @@ -10,7 +10,6 @@ import ( func TestPeriodicSync_Run(t *testing.T) { // setup - //ctx := context.Background() ctrl := gomock.NewController(t) defer ctrl.Finish() diff --git a/pkg/acl/storage/liststorage.go b/pkg/acl/storage/liststorage.go index 7aad8a01..222fd8d8 100644 --- a/pkg/acl/storage/liststorage.go +++ b/pkg/acl/storage/liststorage.go @@ -1,4 +1,4 @@ -//go:generate mockgen -destination mock_storage/mock_storage.go github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/storage ListStorage +//go:generate mockgen -destination mock_storage/mock_storage.go github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/storage ListStorage,TreeStorage package storage import ( diff --git a/pkg/acl/storage/mock_storage/mock_storage.go b/pkg/acl/storage/mock_storage/mock_storage.go index 72dc884d..5fff6944 100644 --- a/pkg/acl/storage/mock_storage/mock_storage.go +++ b/pkg/acl/storage/mock_storage/mock_storage.go @@ -1,5 +1,5 @@ // Code generated by MockGen. DO NOT EDIT. -// Source: github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/storage (interfaces: ListStorage) +// Source: github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/storage (interfaces: ListStorage,TreeStorage) // Package mock_storage is a generated GoMock package. package mock_storage @@ -9,6 +9,7 @@ import ( reflect "reflect" aclrecordproto "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/aclrecordproto" + treechangeproto "github.com/anytypeio/go-anytype-infrastructure-experiments/pkg/acl/treechangeproto" gomock "github.com/golang/mock/gomock" ) @@ -108,3 +109,114 @@ func (mr *MockListStorageMockRecorder) Root() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Root", reflect.TypeOf((*MockListStorage)(nil).Root)) } + +// MockTreeStorage is a mock of TreeStorage interface. +type MockTreeStorage struct { + ctrl *gomock.Controller + recorder *MockTreeStorageMockRecorder +} + +// MockTreeStorageMockRecorder is the mock recorder for MockTreeStorage. +type MockTreeStorageMockRecorder struct { + mock *MockTreeStorage +} + +// NewMockTreeStorage creates a new mock instance. +func NewMockTreeStorage(ctrl *gomock.Controller) *MockTreeStorage { + mock := &MockTreeStorage{ctrl: ctrl} + mock.recorder = &MockTreeStorageMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockTreeStorage) EXPECT() *MockTreeStorageMockRecorder { + return m.recorder +} + +// AddRawChange mocks base method. +func (m *MockTreeStorage) AddRawChange(arg0 *treechangeproto.RawTreeChangeWithId) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AddRawChange", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddRawChange indicates an expected call of AddRawChange. +func (mr *MockTreeStorageMockRecorder) AddRawChange(arg0 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddRawChange", reflect.TypeOf((*MockTreeStorage)(nil).AddRawChange), arg0) +} + +// GetRawChange mocks base method. +func (m *MockTreeStorage) GetRawChange(arg0 context.Context, arg1 string) (*treechangeproto.RawTreeChangeWithId, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetRawChange", arg0, arg1) + ret0, _ := ret[0].(*treechangeproto.RawTreeChangeWithId) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetRawChange indicates an expected call of GetRawChange. +func (mr *MockTreeStorageMockRecorder) GetRawChange(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRawChange", reflect.TypeOf((*MockTreeStorage)(nil).GetRawChange), arg0, arg1) +} + +// Heads mocks base method. +func (m *MockTreeStorage) Heads() ([]string, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Heads") + ret0, _ := ret[0].([]string) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Heads indicates an expected call of Heads. +func (mr *MockTreeStorageMockRecorder) Heads() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Heads", reflect.TypeOf((*MockTreeStorage)(nil).Heads)) +} + +// ID mocks base method. +func (m *MockTreeStorage) ID() (string, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ID") + ret0, _ := ret[0].(string) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ID indicates an expected call of ID. +func (mr *MockTreeStorageMockRecorder) ID() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ID", reflect.TypeOf((*MockTreeStorage)(nil).ID)) +} + +// Root mocks base method. +func (m *MockTreeStorage) Root() (*treechangeproto.RawTreeChangeWithId, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Root") + ret0, _ := ret[0].(*treechangeproto.RawTreeChangeWithId) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Root indicates an expected call of Root. +func (mr *MockTreeStorageMockRecorder) Root() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Root", reflect.TypeOf((*MockTreeStorage)(nil).Root)) +} + +// SetHeads mocks base method. +func (m *MockTreeStorage) SetHeads(arg0 []string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SetHeads", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// SetHeads indicates an expected call of SetHeads. +func (mr *MockTreeStorageMockRecorder) SetHeads(arg0 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeads", reflect.TypeOf((*MockTreeStorage)(nil).SetHeads), arg0) +}