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:
Ross Golder 2026-07-30 10:28:08 +07:00
parent f877621715
commit 4e39eef4a0
No known key found for this signature in database
GPG key ID: 253A7E508D2D59CD

View 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)
})
}
}