mirror of
https://gitea.com/gitea/tea.git
synced 2026-10-26 19:11:25 +01:00
60 lines
2.0 KiB
Go
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")
|
|
}
|