Adding go client support and basic unit tests for channel autocomplete. (#8510)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
2bf2b5b851
Коммит
4a69c277a6
@@ -13,6 +13,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/mattermost/mattermost-server/model"
|
"github.com/mattermost/mattermost-server/model"
|
||||||
|
"github.com/mattermost/mattermost-server/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCreateChannel(t *testing.T) {
|
func TestCreateChannel(t *testing.T) {
|
||||||
@@ -2015,3 +2016,75 @@ func TestRemoveChannelMember(t *testing.T) {
|
|||||||
_, resp = th.SystemAdminClient.RemoveUserFromChannel(privateChannel.Id, user2.Id)
|
_, resp = th.SystemAdminClient.RemoveUserFromChannel(privateChannel.Id, user2.Id)
|
||||||
CheckNoError(t, resp)
|
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
|
// Post Section
|
||||||
|
|
||||||
// CreatePost creates a post based on the provided post struct.
|
// CreatePost creates a post based on the provided post struct.
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user