Merge branch 'master' of github.com:mattermost/mattermost-server into top-dms-clean
Этот коммит содержится в:
@@ -9,6 +9,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/dyatlov/go-opengraph/opengraph"
|
||||
"github.com/dyatlov/go-opengraph/opengraph/types/image"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
@@ -205,7 +206,7 @@ func testLinkMetadataStoreTypes(t *testing.T, ss store.Store) {
|
||||
t.Run("should save and get opengraph data", func(t *testing.T) {
|
||||
og := &opengraph.OpenGraph{
|
||||
URL: "http://example.com",
|
||||
Images: []*opengraph.Image{
|
||||
Images: []*image.Image{
|
||||
{
|
||||
URL: "http://example.com/image.png",
|
||||
},
|
||||
|
||||
@@ -9,6 +9,8 @@ import (
|
||||
|
||||
model "github.com/mattermost/mattermost-server/v6/model"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
|
||||
store "github.com/mattermost/mattermost-server/v6/store"
|
||||
)
|
||||
|
||||
// PostStore is an autogenerated mock type for the PostStore type
|
||||
@@ -440,6 +442,52 @@ func (_m *PostStore) GetPostIdBeforeTime(channelID string, timestamp int64, coll
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// GetPostReminderMetadata provides a mock function with given fields: postID
|
||||
func (_m *PostStore) GetPostReminderMetadata(postID string) (*store.PostReminderMetadata, error) {
|
||||
ret := _m.Called(postID)
|
||||
|
||||
var r0 *store.PostReminderMetadata
|
||||
if rf, ok := ret.Get(0).(func(string) *store.PostReminderMetadata); ok {
|
||||
r0 = rf(postID)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*store.PostReminderMetadata)
|
||||
}
|
||||
}
|
||||
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(string) error); ok {
|
||||
r1 = rf(postID)
|
||||
} else {
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// GetPostReminders provides a mock function with given fields: now
|
||||
func (_m *PostStore) GetPostReminders(now int64) ([]*model.PostReminder, error) {
|
||||
ret := _m.Called(now)
|
||||
|
||||
var r0 []*model.PostReminder
|
||||
if rf, ok := ret.Get(0).(func(int64) []*model.PostReminder); ok {
|
||||
r0 = rf(now)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).([]*model.PostReminder)
|
||||
}
|
||||
}
|
||||
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(int64) error); ok {
|
||||
r1 = rf(now)
|
||||
} else {
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// GetPosts provides a mock function with given fields: options, allowFromCache, sanitizeOptions
|
||||
func (_m *PostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool, sanitizeOptions map[string]bool) (*model.PostList, error) {
|
||||
ret := _m.Called(options, allowFromCache, sanitizeOptions)
|
||||
@@ -992,6 +1040,20 @@ func (_m *PostStore) SearchPostsForUser(paramsList []*model.SearchParams, userID
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// SetPostReminder provides a mock function with given fields: reminder
|
||||
func (_m *PostStore) SetPostReminder(reminder *model.PostReminder) error {
|
||||
ret := _m.Called(reminder)
|
||||
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(*model.PostReminder) error); ok {
|
||||
r0 = rf(reminder)
|
||||
} else {
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Update provides a mock function with given fields: newPost, oldPost
|
||||
func (_m *PostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, error) {
|
||||
ret := _m.Called(newPost, oldPost)
|
||||
|
||||
@@ -5,6 +5,7 @@ package storetest
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
@@ -57,6 +58,9 @@ func TestPostStore(t *testing.T, ss store.Store, s SqlStore) {
|
||||
t.Run("GetForThread", func(t *testing.T) { testPostStoreGetForThread(t, ss) })
|
||||
t.Run("HasAutoResponsePostByUserSince", func(t *testing.T) { testHasAutoResponsePostByUserSince(t, ss) })
|
||||
t.Run("GetPostsSinceForSync", func(t *testing.T) { testGetPostsSinceForSync(t, ss, s) })
|
||||
t.Run("SetPostReminder", func(t *testing.T) { testSetPostReminder(t, ss, s) })
|
||||
t.Run("GetPostReminders", func(t *testing.T) { testGetPostReminders(t, ss, s) })
|
||||
t.Run("GetPostReminderMetadata", func(t *testing.T) { testGetPostReminderMetadata(t, ss, s) })
|
||||
t.Run("GetNthRecentPostTime", func(t *testing.T) { testGetNthRecentPostTime(t, ss) })
|
||||
t.Run("GetTopDMsForUserSince", func(t *testing.T) { testGetTopDMsForUserSince(t, ss, s) })
|
||||
}
|
||||
@@ -3757,6 +3761,130 @@ func testGetPostsSinceForSync(t *testing.T, ss store.Store, s SqlStore) {
|
||||
})
|
||||
}
|
||||
|
||||
func testSetPostReminder(t *testing.T, ss store.Store, s SqlStore) {
|
||||
// Basic
|
||||
userID := NewTestId()
|
||||
|
||||
p1 := &model.Post{
|
||||
UserId: userID,
|
||||
ChannelId: NewTestId(),
|
||||
Message: "hi there",
|
||||
Type: model.PostTypeDefault,
|
||||
}
|
||||
p1, err := ss.Post().Save(p1)
|
||||
require.NoError(t, err)
|
||||
|
||||
reminder := &model.PostReminder{
|
||||
TargetTime: 1234,
|
||||
PostId: p1.Id,
|
||||
UserId: userID,
|
||||
}
|
||||
|
||||
require.NoError(t, ss.Post().SetPostReminder(reminder))
|
||||
|
||||
out := model.PostReminder{}
|
||||
require.NoError(t, s.GetMasterX().Get(&out, `SELECT PostId, UserId, TargetTime FROM PostReminders WHERE PostId=? AND UserId=?`, reminder.PostId, reminder.UserId))
|
||||
assert.Equal(t, reminder, &out)
|
||||
|
||||
reminder.PostId = "notfound"
|
||||
err = ss.Post().SetPostReminder(reminder)
|
||||
var nfErr *store.ErrNotFound
|
||||
require.True(t, errors.As(err, &nfErr))
|
||||
|
||||
// Upsert
|
||||
reminder = &model.PostReminder{
|
||||
TargetTime: 12345,
|
||||
PostId: p1.Id,
|
||||
UserId: userID,
|
||||
}
|
||||
|
||||
require.NoError(t, ss.Post().SetPostReminder(reminder))
|
||||
require.NoError(t, s.GetMasterX().Get(&out, `SELECT PostId, UserId, TargetTime FROM PostReminders WHERE PostId=? AND UserId=?`, reminder.PostId, reminder.UserId))
|
||||
assert.Equal(t, reminder, &out)
|
||||
}
|
||||
|
||||
func testGetPostReminders(t *testing.T, ss store.Store, s SqlStore) {
|
||||
times := []int64{100, 101, 102}
|
||||
for _, tt := range times {
|
||||
userID := NewTestId()
|
||||
|
||||
p1 := &model.Post{
|
||||
UserId: userID,
|
||||
ChannelId: NewTestId(),
|
||||
Message: "hi there",
|
||||
Type: model.PostTypeDefault,
|
||||
}
|
||||
p1, err := ss.Post().Save(p1)
|
||||
require.NoError(t, err)
|
||||
|
||||
reminder := &model.PostReminder{
|
||||
TargetTime: tt,
|
||||
PostId: p1.Id,
|
||||
UserId: userID,
|
||||
}
|
||||
|
||||
require.NoError(t, ss.Post().SetPostReminder(reminder))
|
||||
}
|
||||
|
||||
reminders, err := ss.Post().GetPostReminders(102)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, reminders, 2)
|
||||
|
||||
// assert one reminder is left
|
||||
reminders, err = ss.Post().GetPostReminders(103)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, reminders, 1)
|
||||
|
||||
// assert everything is deleted.
|
||||
reminders, err = ss.Post().GetPostReminders(103)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, reminders, 0)
|
||||
}
|
||||
|
||||
func testGetPostReminderMetadata(t *testing.T, ss store.Store, s SqlStore) {
|
||||
team := &model.Team{
|
||||
Name: "teamname",
|
||||
DisplayName: "display",
|
||||
Type: model.TeamOpen,
|
||||
}
|
||||
team, err := ss.Team().Save(team)
|
||||
require.NoError(t, err)
|
||||
|
||||
ch := &model.Channel{
|
||||
TeamId: team.Id,
|
||||
DisplayName: "channeldisplay",
|
||||
Name: NewTestId(),
|
||||
Type: model.ChannelTypeOpen,
|
||||
}
|
||||
ch, err = ss.Channel().Save(ch, -1)
|
||||
require.NoError(t, err)
|
||||
|
||||
u1 := &model.User{
|
||||
Email: MakeEmail(),
|
||||
Username: model.NewId(),
|
||||
Locale: "es",
|
||||
}
|
||||
|
||||
u1, err = ss.User().Save(u1)
|
||||
require.NoError(t, err)
|
||||
|
||||
p1 := &model.Post{
|
||||
UserId: u1.Id,
|
||||
ChannelId: ch.Id,
|
||||
Message: "hi there",
|
||||
Type: model.PostTypeDefault,
|
||||
}
|
||||
p1, err = ss.Post().Save(p1)
|
||||
require.NoError(t, err)
|
||||
|
||||
meta, err := ss.Post().GetPostReminderMetadata(p1.Id)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, meta.ChannelId, ch.Id)
|
||||
assert.Equal(t, meta.TeamName, team.Name)
|
||||
assert.Equal(t, meta.Username, u1.Username)
|
||||
assert.Equal(t, meta.UserLocale, u1.Locale)
|
||||
}
|
||||
|
||||
func getPostIds(posts []*model.Post, morePosts ...*model.Post) []string {
|
||||
ids := make([]string, 0, len(posts)+len(morePosts))
|
||||
for _, p := range posts {
|
||||
|
||||
Ссылка в новой задаче
Block a user