package output

import (
	"bytes"
	"strings"
	"testing"

	"gitcode.com/gitcode-cli/cli/api"
)

func TestPRListPrinterTable(t *testing.T) {
	printer, err := NewPRListPrinter(PRListOptions{Format: FormatTable})
	if err != nil {
		t.Fatalf("NewPRListPrinter() error = %v", err)
	}

	prs := []api.PullRequest{
		{
			Number: 1,
			State:  "open",
			Title:  "Fix login bug",
			User:   &api.User{Login: "alice"},
			Reviewers: []*api.User{
				{Login: "reviewer1"},
			},
		},
		{
			Number: 2,
			State:  "open",
			Draft:  true,
			Title:  "Refactor CLI output",
			User:   &api.User{Login: "bob"},
		},
	}

	var buf bytes.Buffer
	if err := printer.Print(&buf, prs); err != nil {
		t.Fatalf("Print() error = %v", err)
	}

	output := buf.String()
	for _, want := range []string{"NUMBER", "STATE", "AUTHOR", "REVIEW", "Fix login bug", "requested", "draft"} {
		if !strings.Contains(output, want) {
			t.Fatalf("output = %q, want substring %q", output, want)
		}
	}
}