package transaction

import (
	"testing"

	"github.com/stretchr/testify/require"
)

func TestScopesFromString(t *testing.T) {
	s, err := ScopesFromString("")
	require.Error(t, err)

	_, err = ScopesFromString("123")
	require.Error(t, err)

	s, err = ScopesFromString("Global")
	require.NoError(t, err)
	require.Equal(t, Global, s)

	s, err = ScopesFromString("CalledByEntry")
	require.NoError(t, err)
	require.Equal(t, CalledByEntry, s)

	s, err = ScopesFromString("CustomContracts")
	require.NoError(t, err)
	require.Equal(t, CustomContracts, s)

	s, err = ScopesFromString("CustomGroups")
	require.NoError(t, err)
	require.Equal(t, CustomGroups, s)

	s, err = ScopesFromString("CalledByEntry,CustomGroups")
	require.NoError(t, err)
	require.Equal(t, CalledByEntry|CustomGroups, s)

	_, err = ScopesFromString("Global,CustomGroups")
	require.Error(t, err)

	_, err = ScopesFromString("CalledByEntry,Global,CustomGroups")
	require.Error(t, err)

	s, err = ScopesFromString("CalledByEntry,CustomGroups,CustomGroups")
	require.NoError(t, err)
	require.Equal(t, CalledByEntry|CustomGroups, s)

	s, err = ScopesFromString("CalledByEntry, CustomGroups")
	require.NoError(t, err)
	require.Equal(t, CalledByEntry|CustomGroups, s)

	s, err = ScopesFromString("CalledByEntry, CustomGroups, CustomContracts")
	require.NoError(t, err)
	require.Equal(t, CalledByEntry|CustomGroups|CustomContracts, s)
}