mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-08 05:57:03 +09:00
87 lines
2.6 KiB
Go
87 lines
2.6 KiB
Go
package deletionmanager
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"go.uber.org/mock/gomock"
|
|
|
|
"github.com/anyproto/any-sync/app"
|
|
"github.com/anyproto/any-sync/commonspace/deletionmanager/mock_deletionmanager"
|
|
"github.com/anyproto/any-sync/commonspace/deletionstate"
|
|
"github.com/anyproto/any-sync/commonspace/deletionstate/mock_deletionstate"
|
|
"github.com/anyproto/any-sync/commonspace/object/treemanager"
|
|
"github.com/anyproto/any-sync/commonspace/object/treemanager/mock_treemanager"
|
|
"github.com/anyproto/any-sync/commonspace/settings/settingsstate"
|
|
"github.com/anyproto/any-sync/commonspace/spacestate"
|
|
"github.com/anyproto/any-sync/commonspace/spacestorage"
|
|
"github.com/anyproto/any-sync/commonspace/spacestorage/mock_spacestorage"
|
|
)
|
|
|
|
type deletionManagerFixture struct {
|
|
delState *mock_deletionstate.MockObjectDeletionState
|
|
treeManager *mock_treemanager.MockTreeManager
|
|
storage *mock_spacestorage.MockSpaceStorage
|
|
deleter *mock_deletionmanager.MockDeleter
|
|
spaceState *spacestate.SpaceState
|
|
settingsId string
|
|
|
|
app *app.App
|
|
delManager *deletionManager
|
|
|
|
ctrl *gomock.Controller
|
|
}
|
|
|
|
func newDelManagerFixture(t *testing.T) *deletionManagerFixture {
|
|
ctrl := gomock.NewController(t)
|
|
spaceState := &spacestate.SpaceState{
|
|
SpaceId: "spaceId",
|
|
}
|
|
fx := &deletionManagerFixture{
|
|
delState: mock_deletionstate.NewMockObjectDeletionState(ctrl),
|
|
treeManager: mock_treemanager.NewMockTreeManager(ctrl),
|
|
storage: mock_spacestorage.NewMockSpaceStorage(ctrl),
|
|
deleter: mock_deletionmanager.NewMockDeleter(ctrl),
|
|
spaceState: spaceState,
|
|
settingsId: "settingsId",
|
|
delManager: New().(*deletionManager),
|
|
ctrl: ctrl,
|
|
app: &app.App{},
|
|
}
|
|
return fx
|
|
}
|
|
|
|
func (fx *deletionManagerFixture) init(t *testing.T) {
|
|
fx.delState.EXPECT().Name().AnyTimes().Return(deletionstate.CName)
|
|
fx.treeManager.EXPECT().Name().AnyTimes().Return(treemanager.CName)
|
|
fx.storage.EXPECT().Name().AnyTimes().Return(spacestorage.CName)
|
|
fx.delState.EXPECT().AddObserver(gomock.Any())
|
|
fx.app.Register(fx.spaceState).
|
|
Register(fx.storage).
|
|
Register(fx.delState).
|
|
Register(fx.treeManager).
|
|
Register(fx.delManager)
|
|
|
|
err := fx.delManager.Init(fx.app)
|
|
require.NoError(t, err)
|
|
fx.delManager.deleter = fx.deleter
|
|
}
|
|
|
|
func (fx *deletionManagerFixture) stop() {
|
|
fx.ctrl.Finish()
|
|
}
|
|
|
|
func TestDeletionManager_UpdateState(t *testing.T) {
|
|
fx := newDelManagerFixture(t)
|
|
fx.init(t)
|
|
defer fx.stop()
|
|
|
|
ctx := context.Background()
|
|
state := &settingsstate.State{
|
|
DeletedIds: map[string]struct{}{"id": {}},
|
|
}
|
|
fx.delState.EXPECT().Add(state.DeletedIds)
|
|
err := fx.delManager.UpdateState(ctx, state)
|
|
require.NoError(t, err)
|
|
}
|