37 lines
1.3 KiB
Go
37 lines
1.3 KiB
Go
package domain
|
|
|
|
import "testing"
|
|
|
|
func TestCopyHelpersIsolateSlices(t *testing.T) {
|
|
plugin := GamePlugin{
|
|
ID: "server.scum",
|
|
RequiredRunCapabilities: []string{"process.start", "logs.read"},
|
|
DeclaredPermissions: []string{"server.logs.read"},
|
|
Pages: []GamePluginPage{
|
|
{Key: "logs", Permissions: []string{"server.logs.read"}},
|
|
},
|
|
AIPurposes: []string{"logs.diagnose"},
|
|
}
|
|
|
|
copy := CopyGamePlugin(plugin)
|
|
copy.RequiredRunCapabilities[0] = "files.read"
|
|
copy.DeclaredPermissions[0] = "ai.invoke"
|
|
copy.Pages[0].Permissions[0] = "ai.invoke"
|
|
copy.AIPurposes[0] = "config.suggest"
|
|
|
|
if plugin.RequiredRunCapabilities[0] != "process.start" {
|
|
t.Fatalf("expected copied plugin slice mutation not to affect original: %+v", plugin.RequiredRunCapabilities)
|
|
}
|
|
if plugin.DeclaredPermissions[0] != "server.logs.read" || plugin.Pages[0].Permissions[0] != "server.logs.read" || plugin.AIPurposes[0] != "logs.diagnose" {
|
|
t.Fatalf("expected copied plugin registry metadata mutation not to affect original: %+v", plugin)
|
|
}
|
|
|
|
provider := AIProvider{ID: "ai.openai", Models: []string{"gpt-4.1"}}
|
|
providerCopy := CopyAIProvider(provider)
|
|
providerCopy.Models[0] = "gpt-4.1-mini"
|
|
|
|
if provider.Models[0] != "gpt-4.1" {
|
|
t.Fatalf("expected copied provider slice mutation not to affect original: %+v", provider.Models)
|
|
}
|
|
}
|