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) } }