package permissions

import (
	"github.com/nexuscrm/shared/pkg/models"
	"testing"
)

func TestModifyAllRecordsDoesNotRequireCreate(t *testing.T) {
	grant := models.ObjectPermissions{SobjectType: "Account", PermissionsRead: true, PermissionsEdit: true, PermissionsDelete: true, PermissionsViewAllRecords: true, PermissionsModifyAllRecords: true}
	if err := ValidateObjectPermissionDependencies(grant); err != nil {
		t.Fatal(err)
	}
	for _, test := range []struct {
		name   string
		remove func(*models.ObjectPermissions)
	}{
		{"read", func(p *models.ObjectPermissions) { p.PermissionsRead = false }},
		{"edit", func(p *models.ObjectPermissions) { p.PermissionsEdit = false }},
		{"delete", func(p *models.ObjectPermissions) { p.PermissionsDelete = false }},
		{"view all", func(p *models.ObjectPermissions) { p.PermissionsViewAllRecords = false }},
	} {
		t.Run(test.name, func(t *testing.T) {
			invalid := grant
			test.remove(&invalid)
			if ValidateObjectPermissionDependencies(invalid) == nil {
				t.Fatal("missing dependency accepted")
			}
		})
	}
}
