package persistence

import (
	"context"
	"regexp"
	"testing"

	"github.com/DATA-DOG/go-sqlmock"
	"github.com/stretchr/testify/require"
)

func TestDeleteFieldPermissionsForFields(t *testing.T) {
	db, mock, err := sqlmock.New()
	require.NoError(t, err)
	defer db.Close()

	repo := NewPermissionRepository(db)
	ctx := context.Background()

	deletePattern := regexp.QuoteMeta("DELETE FROM `FieldPermissions` WHERE `SobjectType` = ? AND `Field` IN (?,?)")
	mock.ExpectExec(deletePattern).
		WithArgs("account", "industry", "rating").
		WillReturnResult(sqlmock.NewResult(0, 2))

	err = repo.DeleteFieldPermissionsForFields(ctx, "Account", []string{"Industry", "Rating"})
	require.NoError(t, err)
	require.NoError(t, mock.ExpectationsWereMet())
}
