package automation_test

import (
	"context"
	"errors"
	"testing"

	automation "github.com/nexuscrm/automation"
	apperrors "github.com/nexuscrm/kernel/pkg/errors"
	"github.com/nexuscrm/shared/pkg/models"
)

func TestResolveWorkItemBindingPreservesRepositoryFailureClassification(t *testing.T) {
	repositoryFailure := errors.New("query owner unavailable")
	query := &submitQueryStub{onQuery: func(_ context.Context, _ string, _ string, _ *models.UserSession, _ string, _ string, _ int) (*models.QueryResult, error) {
		return nil, repositoryFailure
	}}
	service := automation.NewApprovalService(nil, query, nil, nil, nil, nil, nil, nil)

	_, err := service.ResolveWorkItemBinding(t.Context(), "work-item-1", &models.UserSession{ID: "user-1"})
	var internal *apperrors.InternalError
	if !errors.As(err, &internal) || !errors.Is(err, repositoryFailure) {
		t.Fatalf("ResolveWorkItemBinding error = %v, want internal wrapper preserving repository failure", err)
	}
}
