// Copyright 2026 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT package print import ( "bytes" "encoding/json" "testing" "gitea.dev/tea/modules/stack" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestPullStacksListJSON(t *testing.T) { stacks := []*stack.Stack{ { ID: 1, Title: "feat: base", BaseBranch: "main", State: "open", AutoRestack: true, Entries: []stack.Entry{{PullID: 10}, {PullID: 11}}, }, } buf := &bytes.Buffer{} tbl := tableFromItems( PullStackFields, []printable{&printablePullStack{stacks[0]}}, true, ) require.NoError(t, tbl.fprint(buf, "json")) var result []map[string]string require.NoError(t, json.Unmarshal(buf.Bytes(), &result)) require.Len(t, result, 1) assert.Equal(t, "1", result[0]["id"]) assert.Equal(t, "feat: base", result[0]["title"]) assert.Equal(t, "main", result[0]["base"]) assert.Equal(t, "open", result[0]["state"]) assert.Equal(t, "true", result[0]["auto-restack"]) assert.Equal(t, "2", result[0]["entries"]) } func TestPullStackDetailShowsEntries(t *testing.T) { s := &stack.Stack{ ID: 3, Title: "feat: base", BaseBranch: "main", State: "open", AutoRestack: true, Entries: []stack.Entry{ {PullID: 10, Position: 0, State: "merged"}, {PullID: 11, ParentPullID: 10, Position: 1, State: "open"}, }, } out := captureStdout(t, func() { PullStackDetail(s) }) assert.Contains(t, out, "feat: base") assert.Contains(t, out, "main") assert.Contains(t, out, "#10") assert.Contains(t, out, "#11") }