From efc342f294a8efc3dd7cdeb95e1051ef75842ebc Mon Sep 17 00:00:00 2001 From: George Goldberg Date: Mon, 8 Jul 2019 16:16:32 +0100 Subject: [PATCH] MM-16625: Set UpdateAt correctly on deleting profile pic. (#11525) --- store/sqlstore/user_store.go | 4 +++- store/storetest/user_store.go | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/store/sqlstore/user_store.go b/store/sqlstore/user_store.go index 2d12da48e0..373795aebb 100644 --- a/store/sqlstore/user_store.go +++ b/store/sqlstore/user_store.go @@ -223,7 +223,9 @@ func (us SqlUserStore) UpdateLastPictureUpdate(userId string) *model.AppError { } func (us SqlUserStore) ResetLastPictureUpdate(userId string) *model.AppError { - if _, err := us.GetMaster().Exec("UPDATE Users SET LastPictureUpdate = :Time, UpdateAt = :Time WHERE Id = :UserId", map[string]interface{}{"Time": 0, "UserId": userId}); err != nil { + curTime := model.GetMillis() + + if _, err := us.GetMaster().Exec("UPDATE Users SET LastPictureUpdate = :PictureUpdateTime, UpdateAt = :UpdateTime WHERE Id = :UserId", map[string]interface{}{"PictureUpdateTime": 0, "UpdateTime": curTime, "UserId": userId}); err != nil { return model.NewAppError("SqlUserStore.ResetLastPictureUpdate", "store.sql_user.update_last_picture_update.app_error", nil, "user_id="+userId, http.StatusInternalServerError) } diff --git a/store/storetest/user_store.go b/store/storetest/user_store.go index a58b3179b3..2cad08bf6d 100644 --- a/store/storetest/user_store.go +++ b/store/storetest/user_store.go @@ -67,6 +67,7 @@ func TestUserStore(t *testing.T, ss store.Store) { t.Run("GetUsersBatchForIndexing", func(t *testing.T) { testUserStoreGetUsersBatchForIndexing(t, ss) }) t.Run("GetTeamGroupUsers", func(t *testing.T) { testUserStoreGetTeamGroupUsers(t, ss) }) t.Run("GetChannelGroupUsers", func(t *testing.T) { testUserStoreGetChannelGroupUsers(t, ss) }) + t.Run("ResetLastPictureUpdate", func(t *testing.T) { testUserStoreResetLastPictureUpdate(t, ss) }) } func testUserStoreSave(t *testing.T, ss store.Store) { @@ -3944,3 +3945,29 @@ func testUserStoreGetChannelGroupUsers(t *testing.T, ss store.Store) { // ensure removed allowed member still returned by query requireNUsers(2) } + +func testUserStoreResetLastPictureUpdate(t *testing.T, ss store.Store) { + u1 := &model.User{} + u1.Email = MakeEmail() + store.Must(ss.User().Save(u1)) + defer func() { require.Nil(t, ss.User().PermanentDelete(u1.Id)) }() + store.Must(ss.Team().SaveMember(&model.TeamMember{TeamId: model.NewId(), UserId: u1.Id}, -1)) + + err := ss.User().UpdateLastPictureUpdate(u1.Id) + require.Nil(t, err) + + user, err := ss.User().Get(u1.Id) + require.Nil(t, err) + + assert.NotZero(t, user.LastPictureUpdate) + assert.NotZero(t, user.UpdateAt) + + err = ss.User().ResetLastPictureUpdate(u1.Id) + require.Nil(t, err) + + user2, err := ss.User().Get(u1.Id) + require.Nil(t, err) + + assert.True(t, user2.UpdateAt > user.UpdateAt) + assert.Zero(t, user2.LastPictureUpdate) +}