summaryrefslogtreecommitdiff
path: root/internal/askcli/command_complete_uuids_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/askcli/command_complete_uuids_test.go')
-rw-r--r--internal/askcli/command_complete_uuids_test.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/internal/askcli/command_complete_uuids_test.go b/internal/askcli/command_complete_uuids_test.go
new file mode 100644
index 0000000..ff9d142
--- /dev/null
+++ b/internal/askcli/command_complete_uuids_test.go
@@ -0,0 +1,54 @@
+package askcli
+
+import (
+ "bytes"
+ "context"
+ "io"
+ "strings"
+ "testing"
+)
+
+func TestHandleCompleteUUIDs_PrintsPendingUUIDs(t *testing.T) {
+ d := NewDispatcher(&spyRunner{runFn: func(ctx context.Context, args []string, stdin io.Reader, stdout, stderr io.Writer) (int, error) {
+ want := []string{"status:pending", "export"}
+ if strings.Join(args, " ") != strings.Join(want, " ") {
+ t.Fatalf("args = %v, want %v", args, want)
+ }
+ _, _ = io.WriteString(stdout, `[{"uuid":"uuid-1"},{"uuid":"uuid-2"},{"uuid":""}]`)
+ return 0, nil
+ }})
+
+ var stdout, stderr bytes.Buffer
+ code, err := d.handleCompleteUUIDs(context.Background(), &stdout, &stderr)
+ if err != nil {
+ t.Fatalf("handleCompleteUUIDs returned error: %v", err)
+ }
+ if code != 0 {
+ t.Fatalf("handleCompleteUUIDs code = %d, want 0", code)
+ }
+ if got := stdout.String(); got != "uuid-1\nuuid-2\n" {
+ t.Fatalf("stdout = %q, want UUID list", got)
+ }
+ if stderr.Len() != 0 {
+ t.Fatalf("stderr = %q, want empty", stderr.String())
+ }
+}
+
+func TestHandleCompleteUUIDs_ParseError(t *testing.T) {
+ d := NewDispatcher(&spyRunner{runFn: func(ctx context.Context, args []string, stdin io.Reader, stdout, stderr io.Writer) (int, error) {
+ _, _ = io.WriteString(stdout, `not-json`)
+ return 0, nil
+ }})
+
+ var stdout, stderr bytes.Buffer
+ code, err := d.handleCompleteUUIDs(context.Background(), &stdout, &stderr)
+ if err != nil {
+ t.Fatalf("handleCompleteUUIDs returned error: %v", err)
+ }
+ if code != 1 {
+ t.Fatalf("handleCompleteUUIDs code = %d, want 1", code)
+ }
+ if !strings.Contains(stderr.String(), "failed to parse task data") {
+ t.Fatalf("stderr = %q, want parse error", stderr.String())
+ }
+}