MM-27204 Remove channels from old category when creating new one (#15108)
* MM-27204 Remove channels from old category when creating new one * Actually run unit tests
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
50fa5f0f3e
Коммит
b15aba63f1
@@ -102,6 +102,7 @@ func TestChannelStore(t *testing.T, ss store.Store, s SqlSupplier) {
|
||||
t.Run("GetChannelsBatchForIndexing", func(t *testing.T) { testChannelStoreGetChannelsBatchForIndexing(t, ss) })
|
||||
t.Run("GroupSyncedChannelCount", func(t *testing.T) { testGroupSyncedChannelCount(t, ss) })
|
||||
t.Run("CreateInitialSidebarCategories", func(t *testing.T) { testCreateInitialSidebarCategories(t, ss) })
|
||||
t.Run("CreateSidebarCategory", func(t *testing.T) { testCreateSidebarCategory(t, ss) })
|
||||
t.Run("GetSidebarCategory", func(t *testing.T) { testGetSidebarCategory(t, ss, s) })
|
||||
t.Run("GetSidebarCategories", func(t *testing.T) { testGetSidebarCategories(t, ss) })
|
||||
t.Run("UpdateSidebarCategories", func(t *testing.T) { testUpdateSidebarCategories(t, ss, s) })
|
||||
@@ -8132,6 +8133,164 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) {
|
||||
})
|
||||
}
|
||||
|
||||
func testCreateSidebarCategory(t *testing.T, ss store.Store) {
|
||||
t.Run("should place the new category second if Favorites comes first", func(t *testing.T) {
|
||||
userId := model.NewId()
|
||||
teamId := model.NewId()
|
||||
|
||||
nErr := ss.Channel().CreateInitialSidebarCategories(userId, teamId)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
// Create the category
|
||||
created, err := ss.Channel().CreateSidebarCategory(userId, teamId, &model.SidebarCategoryWithChannels{
|
||||
SidebarCategory: model.SidebarCategory{
|
||||
DisplayName: model.NewId(),
|
||||
},
|
||||
})
|
||||
require.Nil(t, err)
|
||||
|
||||
// Confirm that it comes second
|
||||
res, err := ss.Channel().GetSidebarCategories(userId, teamId)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, res.Categories, 4)
|
||||
assert.Equal(t, model.SidebarCategoryFavorites, res.Categories[0].Type)
|
||||
assert.Equal(t, model.SidebarCategoryCustom, res.Categories[1].Type)
|
||||
assert.Equal(t, created.Id, res.Categories[1].Id)
|
||||
})
|
||||
|
||||
t.Run("should place the new category first if Favorites is not first", func(t *testing.T) {
|
||||
userId := model.NewId()
|
||||
teamId := model.NewId()
|
||||
|
||||
nErr := ss.Channel().CreateInitialSidebarCategories(userId, teamId)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
// Re-arrange the categories so that Favorites comes last
|
||||
categories, err := ss.Channel().GetSidebarCategories(userId, teamId)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, categories.Categories, 3)
|
||||
require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type)
|
||||
|
||||
err = ss.Channel().UpdateSidebarCategoryOrder(userId, teamId, []string{
|
||||
categories.Categories[1].Id,
|
||||
categories.Categories[2].Id,
|
||||
categories.Categories[0].Id,
|
||||
})
|
||||
require.Nil(t, err)
|
||||
|
||||
// Create the category
|
||||
created, err := ss.Channel().CreateSidebarCategory(userId, teamId, &model.SidebarCategoryWithChannels{
|
||||
SidebarCategory: model.SidebarCategory{
|
||||
DisplayName: model.NewId(),
|
||||
},
|
||||
})
|
||||
require.Nil(t, err)
|
||||
|
||||
// Confirm that it comes first
|
||||
res, err := ss.Channel().GetSidebarCategories(userId, teamId)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, res.Categories, 4)
|
||||
assert.Equal(t, model.SidebarCategoryCustom, res.Categories[0].Type)
|
||||
assert.Equal(t, created.Id, res.Categories[0].Id)
|
||||
})
|
||||
|
||||
t.Run("should create the category with its channels", func(t *testing.T) {
|
||||
userId := model.NewId()
|
||||
teamId := model.NewId()
|
||||
|
||||
nErr := ss.Channel().CreateInitialSidebarCategories(userId, teamId)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
// Create some channels
|
||||
channel1, err := ss.Channel().Save(&model.Channel{
|
||||
Type: model.CHANNEL_OPEN,
|
||||
TeamId: teamId,
|
||||
Name: model.NewId(),
|
||||
}, 100)
|
||||
require.Nil(t, err)
|
||||
channel2, err := ss.Channel().Save(&model.Channel{
|
||||
Type: model.CHANNEL_OPEN,
|
||||
TeamId: teamId,
|
||||
Name: model.NewId(),
|
||||
}, 100)
|
||||
require.Nil(t, err)
|
||||
|
||||
// Create the category
|
||||
created, err := ss.Channel().CreateSidebarCategory(userId, teamId, &model.SidebarCategoryWithChannels{
|
||||
SidebarCategory: model.SidebarCategory{
|
||||
DisplayName: model.NewId(),
|
||||
},
|
||||
Channels: []string{channel2.Id, channel1.Id},
|
||||
})
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, []string{channel2.Id, channel1.Id}, created.Channels)
|
||||
|
||||
// Get the channel again to ensure that the SidebarChannels were saved correctly
|
||||
res, err := ss.Channel().GetSidebarCategory(created.Id)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, []string{channel2.Id, channel1.Id}, res.Channels)
|
||||
})
|
||||
|
||||
t.Run("should remove any channels from their previous categories", func(t *testing.T) {
|
||||
userId := model.NewId()
|
||||
teamId := model.NewId()
|
||||
|
||||
nErr := ss.Channel().CreateInitialSidebarCategories(userId, teamId)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
categories, err := ss.Channel().GetSidebarCategories(userId, teamId)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, categories.Categories, 3)
|
||||
|
||||
favoritesCategory := categories.Categories[0]
|
||||
require.Equal(t, model.SidebarCategoryFavorites, favoritesCategory.Type)
|
||||
channelsCategory := categories.Categories[1]
|
||||
require.Equal(t, model.SidebarCategoryChannels, channelsCategory.Type)
|
||||
|
||||
// Create some channels
|
||||
channel1, nErr := ss.Channel().Save(&model.Channel{
|
||||
Type: model.CHANNEL_OPEN,
|
||||
TeamId: teamId,
|
||||
Name: model.NewId(),
|
||||
}, 100)
|
||||
require.Nil(t, nErr)
|
||||
channel2, nErr := ss.Channel().Save(&model.Channel{
|
||||
Type: model.CHANNEL_OPEN,
|
||||
TeamId: teamId,
|
||||
Name: model.NewId(),
|
||||
}, 100)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
// Assign them to categories
|
||||
favoritesCategory.Channels = []string{channel1.Id}
|
||||
channelsCategory.Channels = []string{channel2.Id}
|
||||
_, err = ss.Channel().UpdateSidebarCategories(userId, teamId, []*model.SidebarCategoryWithChannels{
|
||||
favoritesCategory,
|
||||
channelsCategory,
|
||||
})
|
||||
require.Nil(t, err)
|
||||
|
||||
// Create the category
|
||||
created, err := ss.Channel().CreateSidebarCategory(userId, teamId, &model.SidebarCategoryWithChannels{
|
||||
SidebarCategory: model.SidebarCategory{
|
||||
DisplayName: model.NewId(),
|
||||
},
|
||||
Channels: []string{channel2.Id, channel1.Id},
|
||||
})
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, []string{channel2.Id, channel1.Id}, created.Channels)
|
||||
|
||||
// Confirm that the channels were removed from their original categories
|
||||
res, err := ss.Channel().GetSidebarCategory(favoritesCategory.Id)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, []string{}, res.Channels)
|
||||
|
||||
res, err = ss.Channel().GetSidebarCategory(channelsCategory.Id)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, []string{}, res.Channels)
|
||||
})
|
||||
}
|
||||
|
||||
func testDeleteSidebarCategory(t *testing.T, ss store.Store, s SqlSupplier) {
|
||||
setupInitialSidebarCategories := func(t *testing.T, ss store.Store) (string, string) {
|
||||
userId := model.NewId()
|
||||
|
||||
Ссылка в новой задаче
Block a user