mirror of
https://gitea.com/gitea/tea.git
synced 2026-09-10 07:26:33 -04:00
test(teams-repos): cover metadata, confirm flag, and parseRepoSlug
Verify the parent command's name, aliases, and subcommand set, plus metadata and --confirm flag presence on each delete subcommand. Also exercise parseRepoSlug for valid slugs and the common malformed forms.
This commit is contained in:
parent
f877621715
commit
4e39eef4a0
98
cmd/teams/repos/repos_test.go
Normal file
98
cmd/teams/repos/repos_test.go
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
// Copyright 2026 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package repos
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestReposCommandMetadata(t *testing.T) {
|
||||
cmd := &CmdTeamsRepos
|
||||
|
||||
assert.Equal(t, "repos", cmd.Name)
|
||||
for _, want := range []string{"repo", "repositories"} {
|
||||
assert.Contains(t, cmd.Aliases, want)
|
||||
}
|
||||
assert.Equal(t, "Manage team repository access", cmd.Usage)
|
||||
assert.NotNil(t, cmd.Action)
|
||||
}
|
||||
|
||||
func TestReposSubcommandsRegistered(t *testing.T) {
|
||||
want := []string{"list", "create", "delete"}
|
||||
have := make(map[string]bool, len(want))
|
||||
for _, sub := range CmdTeamsRepos.Commands {
|
||||
have[sub.Name] = true
|
||||
}
|
||||
for _, name := range want {
|
||||
assert.True(t, have[name], "expected subcommand %q not registered", name)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReposListMetadata(t *testing.T) {
|
||||
cmd := &CmdTeamsReposList
|
||||
assert.Equal(t, "list", cmd.Name)
|
||||
assert.Contains(t, cmd.Aliases, "ls")
|
||||
assert.Equal(t, "<team-id>", cmd.ArgsUsage)
|
||||
assert.NotNil(t, cmd.Action)
|
||||
}
|
||||
|
||||
func TestReposCreateMetadata(t *testing.T) {
|
||||
cmd := &CmdTeamsReposCreate
|
||||
assert.Equal(t, "create", cmd.Name)
|
||||
for _, want := range []string{"add", "c"} {
|
||||
assert.Contains(t, cmd.Aliases, want)
|
||||
}
|
||||
assert.Equal(t, "<team-id> <owner>/<repo>", cmd.ArgsUsage)
|
||||
assert.NotNil(t, cmd.Action)
|
||||
}
|
||||
|
||||
func TestReposDeleteMetadata(t *testing.T) {
|
||||
cmd := &CmdTeamsReposDelete
|
||||
assert.Equal(t, "delete", cmd.Name)
|
||||
for _, want := range []string{"rm", "remove"} {
|
||||
assert.Contains(t, cmd.Aliases, want)
|
||||
}
|
||||
assert.Equal(t, "<team-id> <owner>/<repo>", cmd.ArgsUsage)
|
||||
assert.NotNil(t, cmd.Action)
|
||||
}
|
||||
|
||||
func TestReposDeleteHasConfirmFlag(t *testing.T) {
|
||||
for _, flag := range CmdTeamsReposDelete.Flags {
|
||||
if flag.Names()[0] == "confirm" {
|
||||
return
|
||||
}
|
||||
}
|
||||
t.Fatal("expected --confirm flag on repos delete")
|
||||
}
|
||||
|
||||
func TestParseRepoSlug(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
slug string
|
||||
wantOwner string
|
||||
wantRepo string
|
||||
wantErr bool
|
||||
}{
|
||||
{name: "valid slug", slug: "octocat/hello-world", wantOwner: "octocat", wantRepo: "hello-world"},
|
||||
{name: "missing repo", slug: "octocat/", wantErr: true},
|
||||
{name: "missing owner", slug: "/hello", wantErr: true},
|
||||
{name: "no slash", slug: "hello", wantErr: true},
|
||||
{name: "empty", slug: "", wantErr: true},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
owner, repo, err := parseRepoSlug(tt.slug)
|
||||
if tt.wantErr {
|
||||
assert.Error(t, err)
|
||||
return
|
||||
}
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, tt.wantOwner, owner)
|
||||
assert.Equal(t, tt.wantRepo, repo)
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue