Improved how CLI "command delete" command works (#9929)

Этот коммит содержится в:
Jesús Espino
2018-12-04 06:13:37 +01:00
коммит произвёл GitHub
родитель 2b99627026
Коммит 2611606e13
2 изменённых файлов: 38 добавлений и 31 удалений

Просмотреть файл

@@ -49,7 +49,7 @@ var CommandDeleteCmd = &cobra.Command{
Short: "Delete a slash command",
Long: `Delete a slash command. Commands can be specified by command ID.`,
Example: ` command delete commandID`,
Args: cobra.MinimumNArgs(1),
Args: cobra.ExactArgs(1),
RunE: deleteCommandCmdF,
}
@@ -141,9 +141,9 @@ func createCommandCmdF(command *cobra.Command, args []string) error {
}
if _, err := a.CreateCommand(newCommand); err != nil {
return errors.New("unable to create command '" + newCommand.Trigger + "'. " + err.Error())
return errors.New("unable to create command '" + newCommand.DisplayName + "'. " + err.Error())
}
CommandPrettyPrintln("created command '" + newCommand.Trigger + "'")
CommandPrettyPrintln("created command '" + newCommand.DisplayName + "'")
return nil
}
@@ -165,16 +165,15 @@ func moveCommandCmdF(command *cobra.Command, args []string) error {
}
commands := getCommandsFromCommandArgs(a, args[1:])
CommandPrintErrorln(commands)
for i, command := range commands {
if command == nil {
CommandPrintErrorln("Unable to find command '" + args[i+1] + "'")
continue
}
if err := moveCommand(a, team, command); err != nil {
CommandPrintErrorln("Unable to move command '" + command.Trigger + "' error: " + err.Error())
CommandPrintErrorln("Unable to move command '" + command.DisplayName + "' error: " + err.Error())
} else {
CommandPrettyPrintln("Moved command '" + command.Trigger + "'")
CommandPrettyPrintln("Moved command '" + command.DisplayName + "'")
}
}
@@ -229,13 +228,15 @@ func deleteCommandCmdF(command *cobra.Command, args []string) error {
}
defer a.Shutdown()
commandID := args[0]
deleteErr := a.DeleteCommand(commandID)
if deleteErr != nil {
CommandPrintErrorln("Unable to delete command '" + commandID + "' error: " + deleteErr.Error())
return deleteErr
slashCommand := getCommandFromCommandArg(a, args[0])
if slashCommand == nil {
command.SilenceUsage = true
return errors.New("Unable to find command '" + args[0] + "'")
}
CommandPrettyPrintln("Deleted command '" + commandID + "'")
if err := a.DeleteCommand(slashCommand.Id); err != nil {
command.SilenceUsage = true
return errors.New("Unable to delete command '" + slashCommand.Id + "' error: " + err.Error())
}
CommandPrettyPrintln("Deleted command '" + slashCommand.Id + "' (" + slashCommand.DisplayName + ")")
return nil
}

Просмотреть файл

@@ -9,6 +9,8 @@ import (
"testing"
"github.com/mattermost/mattermost-server/api4"
"github.com/mattermost/mattermost-server/app"
"github.com/mattermost/mattermost-server/model"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -132,34 +134,38 @@ func TestCreateCommand(t *testing.T) {
}
}
/* Race
func TestDeleteCommand(t *testing.T) {
th := api4.Setup().InitBasic()
th := app.Setup().InitBasic()
defer th.TearDown()
url := "http://localhost:8000/test-command"
team := th.BasicTeam
user := th.BasicUser
th.LinkUserToTeam(user, team)
// Check the appropriate permissions are enforced.
defaultRolePermissions := th.SaveDefaultRolePermissions()
defer func() {
th.RestoreDefaultRolePermissions(defaultRolePermissions)
}()
id := model.NewId()
c := &model.Command{
DisplayName: "dn_" + id,
DisplayName: "dn_" + model.NewId(),
Method: "G",
TeamId: team.Id,
Username: user.Username,
CreatorId: user.Id,
URL: url,
Trigger: "test",
Trigger: "trigger_" + model.NewId(),
}
th.AddPermissionToRole(model.PERMISSION_MANAGE_SLASH_COMMANDS.Id, model.TEAM_USER_ROLE_ID)
command, _ := th.Client.CreateCommand(c)
commands, _ := th.Client.ListCommands(team.Id, true)
assert.Equal(t, len(commands), 1)
CheckCommand(t, "command", "delete", command.Id)
commands, _ = th.Client.ListCommands(team.Id, true)
assert.Equal(t, len(commands), 0)
}*/
t.Run("existing command", func(t *testing.T) {
command, err := th.App.CreateCommand(c)
require.Nil(t, err)
commands, err := th.App.ListTeamCommands(team.Id)
require.Nil(t, err)
assert.Equal(t, len(commands), 1)
CheckCommand(t, "command", "delete", command.Id)
commands, err = th.App.ListTeamCommands(team.Id)
require.Nil(t, err)
assert.Equal(t, len(commands), 0)
})
t.Run("not existing command", func(t *testing.T) {
assert.Error(t, RunCommand(t, "command", "delete", "invalid"))
})
}