diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/export.go | 23 | ||||
-rw-r--r-- | app/export_test.go | 31 |
2 files changed, 53 insertions, 1 deletions
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) +} |