57 lines
1.3 KiB
Go
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)
|
|
}
|
|
}
|