* Make UpdateSidebarCategories return the original categories

* MM-20897 Add category muting

* Prevent muting the DMs category

* Fix muted state not being stored in the database

* Address feedback

* Address some feedback

* Fix unit tests

* MM-20897 Mute/unmute channels in the database in bulk

* Satisfy golangci-lint
Этот коммит содержится в:
Harrison Healey
2020-11-16 15:19:01 -05:00
коммит произвёл GitHub
родитель 7f6b43a15f
Коммит 2ebc8ec90f
20 изменённых файлов: 1189 добавлений и 147 удалений

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

@@ -251,6 +251,92 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) {
assert.NotContains(t, received.Channels, channel.Id)
assert.Equal(t, channelsCategory.Channels, received.Channels)
})
t.Run("muting a category should mute all of its channels", func(t *testing.T) {
user, client := setupUserForSubtest(t, th)
categories, resp := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "")
require.Nil(t, resp.Error)
require.Len(t, categories.Categories, 3)
require.Len(t, categories.Order, 3)
channelsCategory := categories.Categories[1]
require.Equal(t, model.SidebarCategoryChannels, channelsCategory.Type)
require.True(t, len(channelsCategory.Channels) > 0)
// Mute the category
updatedCategory := &model.SidebarCategoryWithChannels{
SidebarCategory: model.SidebarCategory{
Id: channelsCategory.Id,
UserId: user.Id,
TeamId: th.BasicTeam.Id,
Sorting: channelsCategory.Sorting,
Muted: true,
},
Channels: channelsCategory.Channels,
}
received, resp := client.UpdateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, channelsCategory.Id, updatedCategory)
require.Nil(t, resp.Error)
assert.Equal(t, channelsCategory.Id, received.Id)
assert.True(t, received.Muted)
// Check that the muted category was saved in the database
received, resp = client.GetSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, channelsCategory.Id, "")
require.Nil(t, resp.Error)
assert.Equal(t, channelsCategory.Id, received.Id)
assert.True(t, received.Muted)
// Confirm that the channels in the category were muted
member, resp := client.GetChannelMember(channelsCategory.Channels[0], user.Id, "")
require.Nil(t, resp.Error)
assert.True(t, member.IsChannelMuted())
})
t.Run("should not be able to mute DM category", func(t *testing.T) {
user, client := setupUserForSubtest(t, th)
categories, resp := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "")
require.Nil(t, resp.Error)
require.Len(t, categories.Categories, 3)
require.Len(t, categories.Order, 3)
dmsCategory := categories.Categories[2]
require.Equal(t, model.SidebarCategoryDirectMessages, dmsCategory.Type)
require.Len(t, dmsCategory.Channels, 0)
// Ensure a DM channel exists
dmChannel, resp := client.CreateDirectChannel(user.Id, th.BasicUser.Id)
require.Nil(t, resp.Error)
// Attempt to mute the category
updatedCategory := &model.SidebarCategoryWithChannels{
SidebarCategory: model.SidebarCategory{
Id: dmsCategory.Id,
UserId: user.Id,
TeamId: th.BasicTeam.Id,
Sorting: dmsCategory.Sorting,
Muted: true,
},
Channels: []string{dmChannel.Id},
}
received, resp := client.UpdateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, dmsCategory.Id, updatedCategory)
require.Nil(t, resp.Error)
assert.Equal(t, dmsCategory.Id, received.Id)
assert.False(t, received.Muted)
// Check that the muted category was not saved in the database
received, resp = client.GetSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, dmsCategory.Id, "")
require.Nil(t, resp.Error)
assert.Equal(t, dmsCategory.Id, received.Id)
assert.False(t, received.Muted)
// Confirm that the channels in the category were not muted
member, resp := client.GetChannelMember(dmChannel.Id, user.Id, "")
require.Nil(t, resp.Error)
assert.False(t, member.IsChannelMuted())
})
}
func TestUpdateCategoriesForTeamForUser(t *testing.T) {