[MM-28810] channel_store_categories: check if object is nil after the query (#15635)
* check if onj is nil * channel_store_categories: add tests * reflect review comments * remove store declaraation
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
6222e182ca
Коммит
c67c46a684
@@ -6,10 +6,9 @@ package sqlstore
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/mattermost/mattermost-server/v5/store"
|
|
||||||
|
|
||||||
"github.com/mattermost/gorp"
|
"github.com/mattermost/gorp"
|
||||||
"github.com/mattermost/mattermost-server/v5/model"
|
"github.com/mattermost/mattermost-server/v5/model"
|
||||||
|
"github.com/mattermost/mattermost-server/v5/store"
|
||||||
|
|
||||||
sq "github.com/Masterminds/squirrel"
|
sq "github.com/Masterminds/squirrel"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
@@ -843,6 +842,8 @@ func (s SqlChannelStore) addChannelToFavoritesCategoryT(transaction *gorp.Transa
|
|||||||
var channel *model.Channel
|
var channel *model.Channel
|
||||||
if obj, err := transaction.Get(&model.Channel{}, preference.Name); err != nil {
|
if obj, err := transaction.Get(&model.Channel{}, preference.Name); err != nil {
|
||||||
return errors.Wrapf(err, "Failed to get favorited channel with id=%s", preference.Name)
|
return errors.Wrapf(err, "Failed to get favorited channel with id=%s", preference.Name)
|
||||||
|
} else if obj == nil {
|
||||||
|
return store.NewErrNotFound("Channel", preference.Name)
|
||||||
} else {
|
} else {
|
||||||
channel = obj.(*model.Channel)
|
channel = obj.(*model.Channel)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ func TestChannelStore(t *testing.T, ss store.Store, s SqlSupplier) {
|
|||||||
t.Run("GetSidebarCategories", func(t *testing.T) { testGetSidebarCategories(t, ss) })
|
t.Run("GetSidebarCategories", func(t *testing.T) { testGetSidebarCategories(t, ss) })
|
||||||
t.Run("UpdateSidebarCategories", func(t *testing.T) { testUpdateSidebarCategories(t, ss, s) })
|
t.Run("UpdateSidebarCategories", func(t *testing.T) { testUpdateSidebarCategories(t, ss, s) })
|
||||||
t.Run("DeleteSidebarCategory", func(t *testing.T) { testDeleteSidebarCategory(t, ss, s) })
|
t.Run("DeleteSidebarCategory", func(t *testing.T) { testDeleteSidebarCategory(t, ss, s) })
|
||||||
|
t.Run("UpdateSidebarChannelsByPreferences", func(t *testing.T) { testUpdateSidebarChannelsByPreferences(t, ss) })
|
||||||
}
|
}
|
||||||
|
|
||||||
func testChannelStoreSave(t *testing.T, ss store.Store) {
|
func testChannelStoreSave(t *testing.T, ss store.Store) {
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ func TestChannelStoreCategories(t *testing.T, ss store.Store, s SqlSupplier) {
|
|||||||
t.Run("GetSidebarCategories", func(t *testing.T) { testGetSidebarCategories(t, ss) })
|
t.Run("GetSidebarCategories", func(t *testing.T) { testGetSidebarCategories(t, ss) })
|
||||||
t.Run("UpdateSidebarCategories", func(t *testing.T) { testUpdateSidebarCategories(t, ss, s) })
|
t.Run("UpdateSidebarCategories", func(t *testing.T) { testUpdateSidebarCategories(t, ss, s) })
|
||||||
t.Run("DeleteSidebarCategory", func(t *testing.T) { testDeleteSidebarCategory(t, ss, s) })
|
t.Run("DeleteSidebarCategory", func(t *testing.T) { testDeleteSidebarCategory(t, ss, s) })
|
||||||
|
t.Run("UpdateSidebarChannelsByPreferences", func(t *testing.T) { testUpdateSidebarChannelsByPreferences(t, ss) })
|
||||||
}
|
}
|
||||||
|
|
||||||
func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) {
|
func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) {
|
||||||
@@ -1676,3 +1677,47 @@ func testDeleteSidebarCategory(t *testing.T, ss store.Store, s SqlSupplier) {
|
|||||||
assert.NotNil(t, err)
|
assert.NotNil(t, err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testUpdateSidebarChannelsByPreferences(t *testing.T, ss store.Store) {
|
||||||
|
t.Run("Should be able to update sidebar channels", func(t *testing.T) {
|
||||||
|
userId := model.NewId()
|
||||||
|
teamId := model.NewId()
|
||||||
|
|
||||||
|
nErr := ss.Channel().CreateInitialSidebarCategories(userId, teamId)
|
||||||
|
require.Nil(t, nErr)
|
||||||
|
|
||||||
|
channel, nErr := ss.Channel().Save(&model.Channel{
|
||||||
|
Name: "channel",
|
||||||
|
Type: model.CHANNEL_OPEN,
|
||||||
|
TeamId: teamId,
|
||||||
|
}, 10)
|
||||||
|
require.Nil(t, nErr)
|
||||||
|
|
||||||
|
err := ss.Channel().UpdateSidebarChannelsByPreferences(&model.Preferences{
|
||||||
|
model.Preference{
|
||||||
|
Name: channel.Id,
|
||||||
|
Category: model.PREFERENCE_CATEGORY_FAVORITE_CHANNEL,
|
||||||
|
Value: "true",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Should not panic if channel is not found", func(t *testing.T) {
|
||||||
|
userId := model.NewId()
|
||||||
|
teamId := model.NewId()
|
||||||
|
|
||||||
|
nErr := ss.Channel().CreateInitialSidebarCategories(userId, teamId)
|
||||||
|
assert.Nil(t, nErr)
|
||||||
|
|
||||||
|
require.NotPanics(t, func() {
|
||||||
|
_ = ss.Channel().UpdateSidebarChannelsByPreferences(&model.Preferences{
|
||||||
|
model.Preference{
|
||||||
|
Name: "fakeid",
|
||||||
|
Category: model.PREFERENCE_CATEGORY_FAVORITE_CHANNEL,
|
||||||
|
Value: "true",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user