[MM-37064] - Onboarding flow is showing for existing users (#17977)
* [MM-37064] - Onboarding flow is showing for existing users * add tests * fix typo * fix lint * fix tests
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
5d4769318a
Коммит
e252608068
@@ -48,7 +48,9 @@ func TestGetPreferences(t *testing.T) {
|
||||
|
||||
prefs, resp := Client.GetPreferences(user1.Id)
|
||||
CheckNoError(t, resp)
|
||||
require.Equal(t, len(prefs), 4, "received the wrong number of preferences")
|
||||
|
||||
// 5 because we have 2 initial preferences tutorial_step and recommended_next_steps added when creating a new user
|
||||
require.Equal(t, len(prefs), 5, "received the wrong number of preferences")
|
||||
|
||||
for _, preference := range prefs {
|
||||
require.Equal(t, preference.UserId, th.BasicUser.Id, "user id does not match")
|
||||
|
||||
@@ -177,12 +177,17 @@ func TestPluginAPIGetUserPreferences(t *testing.T) {
|
||||
|
||||
preferences, err := api.GetPreferencesForUser(user1.Id)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, 1, len(preferences))
|
||||
assert.Equal(t, 2, len(preferences))
|
||||
|
||||
assert.Equal(t, user1.Id, preferences[0].UserId)
|
||||
assert.Equal(t, model.PreferenceCategoryTutorialSteps, preferences[0].Category)
|
||||
assert.Equal(t, user1.Id, preferences[0].Name)
|
||||
assert.Equal(t, "0", preferences[0].Value)
|
||||
assert.Equal(t, model.PreferenceRecommendedNextSteps, preferences[0].Category)
|
||||
assert.Equal(t, "hide", preferences[0].Name)
|
||||
assert.Equal(t, "false", preferences[0].Value)
|
||||
|
||||
assert.Equal(t, user1.Id, preferences[1].UserId)
|
||||
assert.Equal(t, model.PreferenceCategoryTutorialSteps, preferences[1].Category)
|
||||
assert.Equal(t, user1.Id, preferences[1].Name)
|
||||
assert.Equal(t, "0", preferences[1].Value)
|
||||
}
|
||||
|
||||
func TestPluginAPIDeleteUserPreferences(t *testing.T) {
|
||||
@@ -200,7 +205,7 @@ func TestPluginAPIDeleteUserPreferences(t *testing.T) {
|
||||
|
||||
preferences, err := api.GetPreferencesForUser(user1.Id)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, 1, len(preferences))
|
||||
assert.Equal(t, 2, len(preferences))
|
||||
|
||||
err = api.DeletePreferencesForUser(user1.Id, preferences)
|
||||
require.Nil(t, err)
|
||||
@@ -227,14 +232,15 @@ func TestPluginAPIDeleteUserPreferences(t *testing.T) {
|
||||
|
||||
preferences, err = api.GetPreferencesForUser(user2.Id)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, 2, len(preferences))
|
||||
assert.Equal(t, 3, len(preferences))
|
||||
|
||||
err = api.DeletePreferencesForUser(user2.Id, []model.Preference{preference})
|
||||
require.Nil(t, err)
|
||||
preferences, err = api.GetPreferencesForUser(user2.Id)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, 1, len(preferences))
|
||||
assert.Equal(t, model.PreferenceCategoryTutorialSteps, preferences[0].Category)
|
||||
assert.Equal(t, 2, len(preferences))
|
||||
assert.Equal(t, model.PreferenceRecommendedNextSteps, preferences[0].Category)
|
||||
assert.Equal(t, model.PreferenceCategoryTutorialSteps, preferences[1].Category)
|
||||
}
|
||||
|
||||
func TestPluginAPIUpdateUserPreferences(t *testing.T) {
|
||||
@@ -252,11 +258,17 @@ func TestPluginAPIUpdateUserPreferences(t *testing.T) {
|
||||
|
||||
preferences, err := api.GetPreferencesForUser(user1.Id)
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, 1, len(preferences))
|
||||
assert.Equal(t, 2, len(preferences))
|
||||
|
||||
assert.Equal(t, user1.Id, preferences[0].UserId)
|
||||
assert.Equal(t, model.PreferenceCategoryTutorialSteps, preferences[0].Category)
|
||||
assert.Equal(t, user1.Id, preferences[0].Name)
|
||||
assert.Equal(t, "0", preferences[0].Value)
|
||||
assert.Equal(t, model.PreferenceRecommendedNextSteps, preferences[0].Category)
|
||||
assert.Equal(t, "hide", preferences[0].Name)
|
||||
assert.Equal(t, "false", preferences[0].Value)
|
||||
|
||||
assert.Equal(t, user1.Id, preferences[1].UserId)
|
||||
assert.Equal(t, model.PreferenceCategoryTutorialSteps, preferences[1].Category)
|
||||
assert.Equal(t, user1.Id, preferences[1].Name)
|
||||
assert.Equal(t, "0", preferences[1].Value)
|
||||
|
||||
preference := model.Preference{
|
||||
Name: user1.Id,
|
||||
@@ -271,18 +283,11 @@ func TestPluginAPIUpdateUserPreferences(t *testing.T) {
|
||||
preferences, err = api.GetPreferencesForUser(user1.Id)
|
||||
require.Nil(t, err)
|
||||
|
||||
assert.Equal(t, 2, len(preferences))
|
||||
expectedCategories := []string{model.PreferenceCategoryTutorialSteps, model.PreferenceCategoryTheme}
|
||||
assert.Equal(t, 3, len(preferences))
|
||||
expectedCategories := []string{model.PreferenceCategoryTutorialSteps, model.PreferenceCategoryTheme, model.PreferenceRecommendedNextSteps}
|
||||
for _, pref := range preferences {
|
||||
assert.Contains(t, expectedCategories, pref.Category)
|
||||
assert.Equal(t, user1.Id, pref.UserId)
|
||||
assert.Equal(t, user1.Id, pref.Name)
|
||||
if pref.Category == model.PreferenceCategoryTutorialSteps {
|
||||
assert.Equal(t, "0", pref.Value)
|
||||
} else {
|
||||
newTheme, _ := json.Marshal(map[string]string{"color": "#ff0000", "color2": "#faf"})
|
||||
assert.Equal(t, string(newTheme), pref.Value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -258,9 +258,10 @@ func (a *App) createUserOrGuest(c *request.Context, user *model.User, guest bool
|
||||
a.sendUpdatedUserEvent(*nUser)
|
||||
}
|
||||
|
||||
pref := model.Preference{UserId: ruser.Id, Category: model.PreferenceCategoryTutorialSteps, Name: ruser.Id, Value: "0"}
|
||||
if err := a.Srv().Store.Preference().Save(&model.Preferences{pref}); err != nil {
|
||||
mlog.Warn("Encountered error saving tutorial preference", mlog.Err(err))
|
||||
recommendedNextStepsPref := model.Preference{UserId: ruser.Id, Category: model.PreferenceRecommendedNextSteps, Name: "hide", Value: "false"}
|
||||
tutorialStepPref := model.Preference{UserId: ruser.Id, Category: model.PreferenceCategoryTutorialSteps, Name: ruser.Id, Value: "0"}
|
||||
if err := a.Srv().Store.Preference().Save(&model.Preferences{recommendedNextStepsPref, tutorialStepPref}); err != nil {
|
||||
mlog.Warn("Encountered error saving user preferences", mlog.Err(err))
|
||||
}
|
||||
|
||||
go a.UpdateViewedProductNoticesForNewUser(ruser.Id)
|
||||
|
||||
@@ -1537,3 +1537,42 @@ func TestUpdateThreadReadForUser(t *testing.T) {
|
||||
assert.True(t, threadMembership.Following)
|
||||
})
|
||||
}
|
||||
|
||||
func TestCreateUserWithInitialPreferences(t *testing.T) {
|
||||
th := Setup(t).InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
t.Run("successfully create a user with initial tutorial and recommended steps preferences", func(t *testing.T) {
|
||||
testUser := th.CreateUser()
|
||||
defer th.App.PermanentDeleteUser(th.Context, testUser)
|
||||
|
||||
preferences, appErr := th.App.GetPreferencesForUser(testUser.Id)
|
||||
require.Nil(t, appErr)
|
||||
|
||||
tutorialStepPref := preferences[1]
|
||||
recommendedNextStepsPref := preferences[0]
|
||||
|
||||
assert.Equal(t, tutorialStepPref.Name, testUser.Id)
|
||||
assert.Equal(t, recommendedNextStepsPref.Category, model.PreferenceRecommendedNextSteps)
|
||||
assert.Equal(t, recommendedNextStepsPref.Name, "hide")
|
||||
assert.Equal(t, recommendedNextStepsPref.Value, "false")
|
||||
})
|
||||
|
||||
t.Run("successfully create a guest user with initial tutorial and recommended steps preferences", func(t *testing.T) {
|
||||
testUser := th.CreateGuest()
|
||||
defer th.App.PermanentDeleteUser(th.Context, testUser)
|
||||
|
||||
preferences, appErr := th.App.GetPreferencesForUser(testUser.Id)
|
||||
require.Nil(t, appErr)
|
||||
|
||||
assert.Equal(t, testUser.Id, preferences[0].UserId)
|
||||
assert.Equal(t, model.PreferenceRecommendedNextSteps, preferences[0].Category)
|
||||
assert.Equal(t, "hide", preferences[0].Name)
|
||||
assert.Equal(t, "false", preferences[0].Value)
|
||||
|
||||
assert.Equal(t, testUser.Id, preferences[1].UserId)
|
||||
assert.Equal(t, model.PreferenceCategoryTutorialSteps, preferences[1].Category)
|
||||
assert.Equal(t, testUser.Id, preferences[1].Name)
|
||||
assert.Equal(t, "0", preferences[1].Value)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ const (
|
||||
PreferenceNameMessageDisplay = "message_display"
|
||||
PreferenceNameNameFormat = "name_format"
|
||||
PreferenceNameUseMilitaryTime = "use_military_time"
|
||||
PreferenceRecommendedNextSteps = "recommended_next_steps"
|
||||
|
||||
PreferenceCategoryTheme = "theme"
|
||||
// the name for theme props is the team id
|
||||
|
||||
Ссылка в новой задаче
Block a user