[MM-12363] Added Team archive command to archive a team by name (#9565)
* Added Team archive command to archive a team by name * Team archive command now uses SoftDelete method Team search and list command now shows archived teams with the term '(archived)' appended to them
Этот коммит содержится в:
коммит произвёл
George Goldberg
родитель
0be0700aad
Коммит
457a34c5f4
@@ -69,6 +69,15 @@ var SearchTeamCmd = &cobra.Command{
|
||||
RunE: searchTeamCmdF,
|
||||
}
|
||||
|
||||
var ArchiveTeamCmd = &cobra.Command{
|
||||
Use: "archive [teams]",
|
||||
Short: "Archive teams",
|
||||
Long: "Archive teams based on name",
|
||||
Example: " team archive team1",
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
RunE: archiveTeamCmdF,
|
||||
}
|
||||
|
||||
func init() {
|
||||
TeamCreateCmd.Flags().String("name", "", "Team Name")
|
||||
TeamCreateCmd.Flags().String("display_name", "", "Team Display Name")
|
||||
@@ -84,6 +93,7 @@ func init() {
|
||||
DeleteTeamsCmd,
|
||||
ListTeamsCmd,
|
||||
SearchTeamCmd,
|
||||
ArchiveTeamCmd,
|
||||
)
|
||||
RootCmd.AddCommand(TeamCmd)
|
||||
}
|
||||
@@ -253,7 +263,11 @@ func listTeamsCmdF(command *cobra.Command, args []string) error {
|
||||
}
|
||||
|
||||
for _, team := range teams {
|
||||
CommandPrettyPrintln(team.Name)
|
||||
if team.DeleteAt > 0 {
|
||||
CommandPrettyPrintln(team.Name + " (archived)")
|
||||
} else {
|
||||
CommandPrettyPrintln(team.Name)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -279,7 +293,11 @@ func searchTeamCmdF(command *cobra.Command, args []string) error {
|
||||
sortedTeams := removeDuplicatesAndSortTeams(teams)
|
||||
|
||||
for _, team := range sortedTeams {
|
||||
CommandPrettyPrintln(team.Name + ": " + team.DisplayName + " (" + team.Id + ")")
|
||||
if team.DeleteAt > 0 {
|
||||
CommandPrettyPrintln(team.Name + ": " + team.DisplayName + " (" + team.Id + ")" + " (archived)")
|
||||
} else {
|
||||
CommandPrettyPrintln(team.Name + ": " + team.DisplayName + " (" + team.Id + ")")
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -300,3 +318,24 @@ func removeDuplicatesAndSortTeams(teams []*model.Team) []*model.Team {
|
||||
})
|
||||
return result
|
||||
}
|
||||
|
||||
func archiveTeamCmdF(command *cobra.Command, args []string) error {
|
||||
a, err := InitDBCommandContextCobra(command)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer a.Shutdown()
|
||||
|
||||
foundTeams := getTeamsFromTeamArgs(a, args)
|
||||
for i, team := range foundTeams {
|
||||
if team == nil {
|
||||
CommandPrintErrorln("Unable to find team '" + args[i] + "'")
|
||||
continue
|
||||
}
|
||||
if err := a.SoftDeleteTeam(team.Id); err != nil {
|
||||
CommandPrintErrorln("Unable to archive team '"+team.Name+"' error: ", err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -96,6 +96,25 @@ func TestListTeams(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestListArchivedTeams(t *testing.T) {
|
||||
th := api4.Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
id := model.NewId()
|
||||
name := "name" + id
|
||||
displayName := "Name " + id
|
||||
|
||||
CheckCommand(t, "team", "create", "--name", name, "--display_name", displayName)
|
||||
|
||||
CheckCommand(t, "team", "archive", name)
|
||||
|
||||
output := CheckCommand(t, "team", "list", th.BasicTeam.Name, th.BasicUser.Email)
|
||||
|
||||
if !strings.Contains(string(output), name+" (archived)") {
|
||||
t.Fatal("should have archived team")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSearchTeamsByName(t *testing.T) {
|
||||
th := api4.Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
@@ -129,3 +148,41 @@ func TestSearchTeamsByDisplayName(t *testing.T) {
|
||||
t.Fatal("should have the created team")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSearchArchivedTeamsByName(t *testing.T) {
|
||||
th := api4.Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
id := model.NewId()
|
||||
name := "name" + id
|
||||
displayName := "Name " + id
|
||||
|
||||
CheckCommand(t, "team", "create", "--name", name, "--display_name", displayName)
|
||||
|
||||
CheckCommand(t, "team", "archive", name)
|
||||
|
||||
output := CheckCommand(t, "team", "search", name)
|
||||
|
||||
if !strings.Contains(string(output), "(archived)") {
|
||||
t.Fatal("should have archived team")
|
||||
}
|
||||
}
|
||||
|
||||
func TestArchiveTeams(t *testing.T) {
|
||||
th := api4.Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
id := model.NewId()
|
||||
name := "name" + id
|
||||
displayName := "Name " + id
|
||||
|
||||
CheckCommand(t, "team", "create", "--name", name, "--display_name", displayName)
|
||||
|
||||
CheckCommand(t, "team", "archive", name)
|
||||
|
||||
output := CheckCommand(t, "team", "list")
|
||||
|
||||
if !strings.Contains(string(output), name+" (archived)") {
|
||||
t.Fatal("should have archived team")
|
||||
}
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user