package testutil_test

import (
	"testing"

	"github.com/stretchr/testify/require"

	storetypes "cosmossdk.io/store/types"

	"git.cw.tr/mukan-network/mukan-sdk/testutil"
)

func TestDiffCollectionsMigration(t *testing.T) {
	key := storetypes.NewKVStoreKey("test")
	ctx := testutil.DefaultContext(key, storetypes.NewTransientStoreKey("transient"))

	// First try with some invalid hash
	err := testutil.DiffCollectionsMigration(
		ctx,
		key,
		5,
		func(i int64) {
			ctx.KVStore(key).Set([]byte{byte(i)}, []byte{byte(i)})
		},
		"abcdef0123456789",
	)
	require.Error(t, err)

	// Now reset and try with the correct hash
	ctx = testutil.DefaultContext(key, storetypes.NewTransientStoreKey("transient"))
	err = testutil.DiffCollectionsMigration(
		ctx,
		key,
		5,
		func(i int64) {
			ctx.KVStore(key).Set([]byte{byte(i)}, []byte{byte(i)})
		},
		"79541ed9da9c16cb7a1d43d5a3d5f6ee31a873c85a6cb4334fb99e021ee0e556",
	)
	require.NoError(t, err)

	// Change the data a little and it will result in an error
	ctx = testutil.DefaultContext(key, storetypes.NewTransientStoreKey("transient"))
	err = testutil.DiffCollectionsMigration(
		ctx,
		key,
		5,
		func(i int64) {
			ctx.KVStore(key).Set([]byte{byte(i)}, []byte{byte(i + 1)})
		},
		"79541ed9da9c16cb7a1d43d5a3d5f6ee31a873c85a6cb4334fb99e021ee0e556",
	)
	require.Error(t, err)
}
