Adding go client support and basic unit tests for channel autocomplete. (#8510)

Этот коммит содержится в:
Christopher Speller
2018-03-26 12:41:06 -07:00
коммит произвёл GitHub
родитель 2bf2b5b851
Коммит 4a69c277a6
2 изменённых файлов: 84 добавлений и 0 удалений

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

@@ -13,6 +13,7 @@ import (
"testing"
"github.com/mattermost/mattermost-server/model"
"github.com/mattermost/mattermost-server/utils"
)
func TestCreateChannel(t *testing.T) {
@@ -2015,3 +2016,75 @@ func TestRemoveChannelMember(t *testing.T) {
_, resp = th.SystemAdminClient.RemoveUserFromChannel(privateChannel.Id, user2.Id)
CheckNoError(t, resp)
}
func TestAutocompleteChannels(t *testing.T) {
th := Setup().InitBasic()
defer th.TearDown()
// A private channel to make sure private channels are not used
utils.DisableDebugLogForTest()
ptown, _ := th.Client.CreateChannel(&model.Channel{
DisplayName: "Town",
Name: "town",
Type: model.CHANNEL_PRIVATE,
TeamId: th.BasicTeam.Id,
})
utils.EnableDebugLogForTest()
defer func() {
th.Client.DeleteChannel(ptown.Id)
}()
for _, tc := range []struct {
description string
teamId string
fragment string
expectedIncludes []string
expectedExcludes []string
}{
{
"Basic town-square",
th.BasicTeam.Id,
"town",
[]string{"town-square"},
[]string{"off-topic", "town"},
},
{
"Basic off-topic",
th.BasicTeam.Id,
"off-to",
[]string{"off-topic"},
[]string{"town-square", "town"},
},
{
"Basic town square and off topic",
th.BasicTeam.Id,
"to",
[]string{"off-topic", "town-square"},
[]string{"town"},
},
} {
if channels, resp := th.Client.AutocompleteChannelsForTeam(tc.teamId, tc.fragment); resp.Error != nil {
t.Fatal("Test case " + tc.description + " failed. Err: " + resp.Error.Error())
} else {
for _, expectedInclude := range tc.expectedIncludes {
found := false
for _, channel := range *channels {
if channel.Name == expectedInclude {
found = true
break
}
}
if !found {
t.Fatal("Test case " + tc.description + " failed. Expected but didn't find channel: " + expectedInclude)
}
}
for _, expectedExclude := range tc.expectedExcludes {
for _, channel := range *channels {
if channel.Name == expectedExclude {
t.Fatal("Test case " + tc.description + " failed. Found channel we didn't want: " + expectedExclude)
}
}
}
}
}
}

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

@@ -1744,6 +1744,17 @@ func (c *Client4) RemoveUserFromChannel(channelId, userId string) (bool, *Respon
}
}
// AutocompleteChannelsForTeam will return an ordered list of channels autocomplete suggestions
func (c *Client4) AutocompleteChannelsForTeam(teamId, name string) (*ChannelList, *Response) {
query := fmt.Sprintf("?name=%v", name)
if r, err := c.DoApiGet(c.GetChannelsForTeamRoute(teamId)+"/autocomplete"+query, ""); err != nil {
return nil, BuildErrorResponse(r, err)
} else {
defer closeBody(r)
return ChannelListFromJson(r.Body), BuildResponse(r)
}
}
// Post Section
// CreatePost creates a post based on the provided post struct.