package meta

import (
	"context"
	"path/filepath"
	"testing"

	"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/shard/mode"
	"github.com/stretchr/testify/require"
)

type epochStateTest struct{}

func (s epochStateTest) CurrentEpoch() uint64 {
	return 0
}

func Test_Mode(t *testing.T) {
	t.Parallel()
	bdb := New([]Option{
		WithPath(filepath.Join(t.TempDir(), "metabase")),
		WithPermissions(0o600),
		WithEpochState(epochStateTest{}),
	}...)

	require.NoError(t, bdb.Open(context.Background(), mode.DegradedReadOnly))
	require.Nil(t, bdb.boltDB)
	require.NoError(t, bdb.Init(context.Background()))
	require.Nil(t, bdb.boltDB)
	require.NoError(t, bdb.Close(context.Background()))

	require.NoError(t, bdb.Open(context.Background(), mode.Degraded))
	require.Nil(t, bdb.boltDB)
	require.NoError(t, bdb.Init(context.Background()))
	require.Nil(t, bdb.boltDB)
	require.NoError(t, bdb.Close(context.Background()))
}