package extensionflow

import (
	"testing"

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

type codedBuiltinTestError struct {
	code string
}

func (err codedBuiltinTestError) Error() string {
	return "safe Builtin failure"
}

func (err codedBuiltinTestError) ExtensionInvocationErrorCode() string {
	return err.code
}

func TestClassifyBuiltinExecutorErrorUsesClosedSafeCode(t *testing.T) {
	classified := classifyBuiltinExecutorError(
		codedBuiltinTestError{code: string(InvocationConflict)},
	)
	require.EqualError(t, classified,
		"extension Builtin state conflicts with the request",
	)
	code, ok := InvocationErrorCodeOf(classified)
	require.True(t, ok)
	require.Equal(t, InvocationConflict, code)

	require.Nil(t, classifyBuiltinExecutorError(
		codedBuiltinTestError{code: "provider_raw_error"},
	))
}
