From 54b7a29581c8d93c876a2a5840b05410f2a35fb9 Mon Sep 17 00:00:00 2001 From: Vadim Date: Wed, 24 Oct 2018 17:34:43 +0300 Subject: MM-12459 Include User Notify Props in the Bulk Export (#9724) --- app/export.go | 23 +++++++++++++++++++++++ app/export_test.go | 31 ++++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/export.go b/app/export.go index b911954a5..7c1736157 100644 --- a/app/export.go +++ b/app/export.go @@ -150,6 +150,8 @@ func (a *App) ExportAllUsers(writer io.Writer) *model.AppError { userLine := ImportLineFromUser(user) + userLine.User.NotifyProps = a.buildUserNotifyProps(user.NotifyProps) + // Do the Team Memberships. members, err := a.buildUserTeamAndChannelMemberships(user.Id) if err != nil { @@ -218,6 +220,27 @@ func (a *App) buildUserChannelMemberships(userId string, teamId string) (*[]User return &memberships, nil } +func (a *App) buildUserNotifyProps(notifyProps model.StringMap) *UserNotifyPropsImportData { + + getProp := func(key string) *string { + if v, ok := notifyProps[key]; ok { + return &v + } + return nil + } + + return &UserNotifyPropsImportData{ + Desktop: getProp(model.DESKTOP_NOTIFY_PROP), + DesktopSound: getProp(model.DESKTOP_SOUND_NOTIFY_PROP), + Email: getProp(model.EMAIL_NOTIFY_PROP), + Mobile: getProp(model.MOBILE_NOTIFY_PROP), + MobilePushStatus: getProp(model.MOBILE_PUSH_STATUS_NOTIFY_PROP), + ChannelTrigger: getProp(model.CHANNEL_MENTIONS_NOTIFY_PROP), + CommentsTrigger: getProp(model.COMMENTS_NOTIFY_PROP), + MentionKeys: getProp(model.MENTION_KEYS_NOTIFY_PROP), + } +} + func (a *App) ExportAllPosts(writer io.Writer) *model.AppError { afterId := strings.Repeat("0", 26) for { diff --git a/app/export_test.go b/app/export_test.go index 05b81387a..bb6d53392 100644 --- a/app/export_test.go +++ b/app/export_test.go @@ -1,10 +1,11 @@ package app import ( - "github.com/stretchr/testify/assert" "testing" "github.com/mattermost/mattermost-server/model" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestReactionsOfPost(t *testing.T) { @@ -30,3 +31,31 @@ func TestReactionsOfPost(t *testing.T) { assert.Equal(t, reactionObject.EmojiName, *(*reactionsOfPost)[0].EmojiName) } + +func TestExportUserNotifyProps(t *testing.T) { + + th := Setup().InitBasic() + defer th.TearDown() + + userNotifyProps := model.StringMap{ + model.DESKTOP_NOTIFY_PROP: model.USER_NOTIFY_ALL, + model.DESKTOP_SOUND_NOTIFY_PROP: "true", + model.EMAIL_NOTIFY_PROP: "true", + model.MOBILE_NOTIFY_PROP: model.USER_NOTIFY_ALL, + model.MOBILE_PUSH_STATUS_NOTIFY_PROP: model.STATUS_ONLINE, + model.CHANNEL_MENTIONS_NOTIFY_PROP: "true", + model.COMMENTS_NOTIFY_PROP: model.COMMENTS_NOTIFY_ROOT, + model.MENTION_KEYS_NOTIFY_PROP: "valid,misc", + } + + exportNotifyProps := th.App.buildUserNotifyProps(userNotifyProps) + + require.Equal(t, userNotifyProps[model.DESKTOP_NOTIFY_PROP], *exportNotifyProps.Desktop) + require.Equal(t, userNotifyProps[model.DESKTOP_SOUND_NOTIFY_PROP], *exportNotifyProps.DesktopSound) + require.Equal(t, userNotifyProps[model.EMAIL_NOTIFY_PROP], *exportNotifyProps.Email) + require.Equal(t, userNotifyProps[model.MOBILE_NOTIFY_PROP], *exportNotifyProps.Mobile) + require.Equal(t, userNotifyProps[model.MOBILE_PUSH_STATUS_NOTIFY_PROP], *exportNotifyProps.MobilePushStatus) + require.Equal(t, userNotifyProps[model.CHANNEL_MENTIONS_NOTIFY_PROP], *exportNotifyProps.ChannelTrigger) + require.Equal(t, userNotifyProps[model.COMMENTS_NOTIFY_PROP], *exportNotifyProps.CommentsTrigger) + require.Equal(t, userNotifyProps[model.MENTION_KEYS_NOTIFY_PROP], *exportNotifyProps.MentionKeys) +} -- cgit v1.2.3-1-g7c22