Files
gitea-tea/internal/terminal/milestone_form_test.go
T
2026-10-18 17:42:24 +02:00

60 lines
2.0 KiB
Go

// Copyright 2026 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package terminal
import (
"context"
"strings"
"testing"
"time"
"github.com/stretchr/testify/require"
)
func TestMilestoneFormMarksTitleRequired(t *testing.T) {
p, rendered := accessiblePrompter(t, "v1\n\n\n")
_, err := p.EditMilestone(context.Background(), "", MilestoneFormValues{})
require.NoError(t, err)
require.Contains(t, rendered.String(), "Milestone title (required):")
}
func TestMilestoneFormStartsFromCurrentValues(t *testing.T) {
due := time.Date(2026, 12, 31, 0, 0, 0, 0, time.UTC)
p, _ := testPrompter(strings.NewReader("\r\r\r"))
values, err := p.EditMilestone(context.Background(), "Editing milestone v1.0", MilestoneFormValues{Title: "v1.0", Description: "First", Deadline: &due})
require.NoError(t, err)
require.Equal(t, "v1.0", values.Title)
require.Equal(t, "First", values.Description)
require.Equal(t, due, *values.Deadline)
}
func TestMilestoneFormKeepsSeededDescriptionOnEnter(t *testing.T) {
due := time.Date(2026, 12, 31, 0, 0, 0, 0, time.UTC)
seed := "a\r\nb\tc"
p, _ := testPrompter(strings.NewReader("\r\r\r"))
values, err := p.EditMilestone(context.Background(), "", MilestoneFormValues{Title: "v1.0", Description: seed, Deadline: &due})
require.NoError(t, err)
require.Equal(t, seed, values.Description)
}
func TestAskTextKeepsSeedOnEnter(t *testing.T) {
seed := "a\r\nb\tc\nd"
p, _ := testPrompter(strings.NewReader("\r\r"))
text, err := p.AskText(context.Background(), "Body", seed)
require.NoError(t, err)
require.Equal(t, seed, text)
}
func TestMilestoneFormOffersEditorWhenConfigured(t *testing.T) {
p, rendered := accessiblePrompter(t, "v1\n\n\n")
_, err := p.EditMilestone(context.Background(), "", MilestoneFormValues{Editor: "vi"})
require.NoError(t, err)
require.Contains(t, rendered.String(), "ctrl+e opens your editor")
p, rendered = accessiblePrompter(t, "v1\n\n\n")
_, err = p.EditMilestone(context.Background(), "", MilestoneFormValues{})
require.NoError(t, err)
require.NotContains(t, rendered.String(), "ctrl+e")
}