Files
beelloo/internal/cli/run_test.go
2026-02-11 11:13:26 +01:00

57 lines
1.3 KiB
Go

package cli
import (
"bytes"
"os"
"path/filepath"
"testing"
"beelloo/internal/invoice"
)
func TestRunNewCreatesScaffold(t *testing.T) {
var out bytes.Buffer
var errOut bytes.Buffer
tmp := t.TempDir()
path := filepath.Join(tmp, "invoice.md")
code := Run([]string{"new", path}, &out, &errOut)
if code != 0 {
t.Fatalf("expected exit code 0, got %d: %s", code, errOut.String())
}
data, err := os.ReadFile(path)
if err != nil {
t.Fatalf("read scaffold: %v", err)
}
if string(data) != invoice.ScaffoldMarkdown {
t.Fatalf("scaffold content mismatch")
}
}
func TestRunBuildErrors(t *testing.T) {
var out bytes.Buffer
var errOut bytes.Buffer
code := Run([]string{"build"}, &out, &errOut)
if code != 2 {
t.Fatalf("expected exit code 2, got %d", code)
}
code = Run([]string{"build", "missing.md"}, &out, &errOut)
if code != 1 {
t.Fatalf("expected exit code 1 for missing file, got %d", code)
}
}
func TestRunBuildValidationError(t *testing.T) {
var out bytes.Buffer
var errOut bytes.Buffer
tmp := t.TempDir()
path := filepath.Join(tmp, "bad.md")
if err := os.WriteFile(path, []byte("# Facture\n\n## Vendeur\nNom: \n"), 0644); err != nil {
t.Fatalf("write bad markdown: %v", err)
}
code := Run([]string{"build", path}, &out, &errOut)
if code != 1 {
t.Fatalf("expected exit code 1, got %d", code)
}
}