69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
package contract
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/rogeecn/renamer/internal/ai"
|
|
"github.com/rogeecn/renamer/internal/ai/flow"
|
|
)
|
|
|
|
func TestAIMetadataPersistedInLedgerEntry(t *testing.T) {
|
|
t.Setenv("RENAMER_AI_KEY", "test-key")
|
|
|
|
tmp := t.TempDir()
|
|
createFile(t, filepath.Join(tmp, "clip.mov"))
|
|
|
|
suggestions := []flow.Suggestion{
|
|
{Original: "clip.mov", Suggested: "highlight-01.mov"},
|
|
}
|
|
|
|
validation := ai.ValidateSuggestions([]string{"clip.mov"}, suggestions)
|
|
if len(validation.Conflicts) != 0 {
|
|
t.Fatalf("expected no conflicts, got %#v", validation)
|
|
}
|
|
|
|
entry, err := ai.Apply(context.Background(), tmp, suggestions, validation, ai.ApplyMetadata{
|
|
Prompt: "Highlight Reel",
|
|
PromptHistory: []string{"Highlight Reel", "Celebration Cut"},
|
|
Notes: []string{"accepted preview"},
|
|
Model: "googleai/gemini-1.5-flash",
|
|
SequenceSeparator: "_",
|
|
}, io.Discard)
|
|
if err != nil {
|
|
t.Fatalf("apply error: %v", err)
|
|
}
|
|
|
|
if entry.Command != "ai" {
|
|
t.Fatalf("expected command 'ai', got %q", entry.Command)
|
|
}
|
|
|
|
if entry.Metadata == nil {
|
|
t.Fatalf("expected metadata to be recorded")
|
|
}
|
|
|
|
if got := entry.Metadata["prompt"]; got != "Highlight Reel" {
|
|
t.Fatalf("unexpected prompt metadata: %#v", got)
|
|
}
|
|
|
|
history, ok := entry.Metadata["promptHistory"].([]string)
|
|
if !ok || len(history) != 2 {
|
|
t.Fatalf("unexpected prompt history: %#v", entry.Metadata["promptHistory"])
|
|
}
|
|
|
|
model, _ := entry.Metadata["model"].(string)
|
|
if model == "" {
|
|
t.Fatalf("expected model metadata to be present")
|
|
}
|
|
|
|
if sep, ok := entry.Metadata["sequenceSeparator"].(string); !ok || sep != "_" {
|
|
t.Fatalf("expected sequence separator metadata, got %#v", entry.Metadata["sequenceSeparator"])
|
|
}
|
|
|
|
if _, err := ai.Apply(context.Background(), tmp, suggestions, validation, ai.ApplyMetadata{Prompt: "irrelevant"}, io.Discard); err == nil {
|
|
t.Fatalf("expected error when renaming non-existent file")
|
|
}
|
|
}
|