mirror of
https://gitea.com/gitea/tea.git
synced 2026-09-10 07:26:33 -04:00
test(teams): cover metadata, flags, and helper behaviour
Verify command names, aliases, usage, and the expected flag set on each new subcommand. Exercise ParseRepoUnits for default, single, multiple, case-insensitive, and unknown inputs.
This commit is contained in:
parent
6c40906cb4
commit
6c8cef6046
54
cmd/teams/create_test.go
Normal file
54
cmd/teams/create_test.go
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
// Copyright 2026 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package teams
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestCreateCommandMetadata(t *testing.T) {
|
||||
cmd := &CmdTeamsCreate
|
||||
|
||||
assert.Equal(t, "create", cmd.Name)
|
||||
for _, want := range []string{"add", "c"} {
|
||||
assert.Contains(t, cmd.Aliases, want)
|
||||
}
|
||||
assert.Equal(t, "Create a new team", cmd.Usage)
|
||||
assert.Equal(t, "<team-name>", cmd.ArgsUsage)
|
||||
assert.NotNil(t, cmd.Action)
|
||||
}
|
||||
|
||||
func TestCreateCommandFlags(t *testing.T) {
|
||||
cmd := &CmdTeamsCreate
|
||||
|
||||
have := make(map[string]bool, len(cmd.Flags))
|
||||
for _, flag := range cmd.Flags {
|
||||
have[flag.Names()[0]] = true
|
||||
}
|
||||
for _, name := range []string{"org", "description", "permission", "can-create-repo", "all-repos", "units", "login", "output"} {
|
||||
assert.True(t, have[name], "expected flag %q not found", name)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateOrgFlagExists(t *testing.T) {
|
||||
for _, flag := range CmdTeamsCreate.Flags {
|
||||
if flag.Names()[0] == "org" {
|
||||
return
|
||||
}
|
||||
}
|
||||
t.Fatal("expected --org flag on create command")
|
||||
}
|
||||
|
||||
func TestCreatePermissionFlagHasDefault(t *testing.T) {
|
||||
for _, flag := range CmdTeamsCreate.Flags {
|
||||
if flag.Names()[0] != "permission" {
|
||||
continue
|
||||
}
|
||||
assert.NotNil(t, flag)
|
||||
return
|
||||
}
|
||||
t.Fatal("expected --permission flag on create command")
|
||||
}
|
||||
38
cmd/teams/delete_test.go
Normal file
38
cmd/teams/delete_test.go
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
// Copyright 2026 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package teams
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestDeleteCommandMetadata(t *testing.T) {
|
||||
cmd := &CmdTeamsDelete
|
||||
|
||||
assert.Equal(t, "delete", cmd.Name)
|
||||
for _, want := range []string{"rm", "remove"} {
|
||||
assert.Contains(t, cmd.Aliases, want)
|
||||
}
|
||||
assert.Equal(t, "Delete a team", cmd.Usage)
|
||||
assert.Equal(t, "<team-id>", cmd.ArgsUsage)
|
||||
assert.NotNil(t, cmd.Action)
|
||||
}
|
||||
|
||||
func TestDeleteCommandFlags(t *testing.T) {
|
||||
cmd := &CmdTeamsDelete
|
||||
|
||||
have := make(map[string]bool, len(cmd.Flags))
|
||||
for _, flag := range cmd.Flags {
|
||||
have[flag.Names()[0]] = true
|
||||
}
|
||||
for _, name := range []string{"confirm", "login", "output"} {
|
||||
assert.True(t, have[name], "expected flag %q not found", name)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRequireTeamID(t *testing.T) {
|
||||
assert.NotNil(t, RequireTeamID)
|
||||
}
|
||||
48
cmd/teams/edit_test.go
Normal file
48
cmd/teams/edit_test.go
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
// Copyright 2026 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package teams
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestEditCommandMetadata(t *testing.T) {
|
||||
cmd := &CmdTeamsEdit
|
||||
|
||||
assert.Equal(t, "edit", cmd.Name)
|
||||
assert.Contains(t, cmd.Aliases, "update")
|
||||
assert.Equal(t, "Edit a team", cmd.Usage)
|
||||
assert.Equal(t, "<team-id>", cmd.ArgsUsage)
|
||||
assert.NotNil(t, cmd.Action)
|
||||
}
|
||||
|
||||
func TestEditCommandFlags(t *testing.T) {
|
||||
cmd := &CmdTeamsEdit
|
||||
|
||||
have := make(map[string]bool, len(cmd.Flags))
|
||||
for _, flag := range cmd.Flags {
|
||||
have[flag.Names()[0]] = true
|
||||
}
|
||||
for _, name := range []string{"name", "description", "permission", "can-create-repo", "no-create-repo", "all-repos", "no-all-repos", "units", "login", "output"} {
|
||||
assert.True(t, have[name], "expected flag %q not found", name)
|
||||
}
|
||||
}
|
||||
|
||||
func TestEditHasNegativeFlagPairs(t *testing.T) {
|
||||
pairs := [][]string{
|
||||
{"can-create-repo", "no-create-repo"},
|
||||
{"all-repos", "no-all-repos"},
|
||||
}
|
||||
for _, pair := range pairs {
|
||||
have := make(map[string]bool, 2)
|
||||
for _, flag := range CmdTeamsEdit.Flags {
|
||||
have[flag.Names()[0]] = true
|
||||
}
|
||||
for _, name := range pair {
|
||||
assert.True(t, have[name], "expected --%s flag on edit command", name)
|
||||
}
|
||||
}
|
||||
}
|
||||
80
cmd/teams/list_test.go
Normal file
80
cmd/teams/list_test.go
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
// Copyright 2026 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package teams
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
gitea "gitea.dev/sdk"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestListCommandMetadata(t *testing.T) {
|
||||
cmd := &CmdTeamsList
|
||||
|
||||
assert.Equal(t, "list", cmd.Name)
|
||||
assert.Contains(t, cmd.Aliases, "ls")
|
||||
assert.Equal(t, "List teams in an organization", cmd.Usage)
|
||||
assert.Equal(t, "List all teams in the specified organization", cmd.Description)
|
||||
assert.NotNil(t, cmd.Action)
|
||||
}
|
||||
|
||||
func TestListCommandFlags(t *testing.T) {
|
||||
cmd := &CmdTeamsList
|
||||
|
||||
have := make(map[string]bool, len(cmd.Flags))
|
||||
for _, flag := range cmd.Flags {
|
||||
have[flag.Names()[0]] = true
|
||||
}
|
||||
for _, name := range []string{"page", "limit", "search", "login", "output"} {
|
||||
assert.True(t, have[name], "expected flag %q not found", name)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseRepoUnits(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input []string
|
||||
expected []gitea.RepoUnitType
|
||||
}{
|
||||
{
|
||||
name: "empty input yields default units",
|
||||
input: nil,
|
||||
expected: []gitea.RepoUnitType{gitea.RepoUnitCode, gitea.RepoUnitIssues, gitea.RepoUnitPulls, gitea.RepoUnitReleases},
|
||||
},
|
||||
{
|
||||
name: "single code unit",
|
||||
input: []string{"code"},
|
||||
expected: []gitea.RepoUnitType{gitea.RepoUnitCode},
|
||||
},
|
||||
{
|
||||
name: "multiple units",
|
||||
input: []string{"code", "issues", "wiki"},
|
||||
expected: []gitea.RepoUnitType{
|
||||
gitea.RepoUnitCode,
|
||||
gitea.RepoUnitIssues,
|
||||
gitea.RepoUnitWiki,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "case-insensitive",
|
||||
input: []string{"CODE", "IsSuEs"},
|
||||
expected: []gitea.RepoUnitType{
|
||||
gitea.RepoUnitCode,
|
||||
gitea.RepoUnitIssues,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "unknown unit is silently dropped",
|
||||
input: []string{"code", "bogus"},
|
||||
expected: []gitea.RepoUnitType{gitea.RepoUnitCode},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
assert.Equal(t, tt.expected, ParseRepoUnits(tt.input))
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue