MM-15276: Migrate Team.Update to sync by default (#10693)
* MM-15276: Migrate Team.Update to sync by default * MM-15276: Addressing review comments and change Update func signature similar to other interface Update method * update store mocks for update fn * addressing review comments
Этот коммит содержится в:
коммит произвёл
Jesús Espino
родитель
b24013d54c
Коммит
ec95793b90
@@ -194,41 +194,37 @@ func (s SqlTeamStore) Save(team *model.Team) store.StoreChannel {
|
||||
})
|
||||
}
|
||||
|
||||
func (s SqlTeamStore) Update(team *model.Team) store.StoreChannel {
|
||||
return store.Do(func(result *store.StoreResult) {
|
||||
team.PreUpdate()
|
||||
func (s SqlTeamStore) Update(team *model.Team) (*model.Team, *model.AppError) {
|
||||
|
||||
if result.Err = team.IsValid(); result.Err != nil {
|
||||
return
|
||||
}
|
||||
team.PreUpdate()
|
||||
|
||||
oldResult, err := s.GetMaster().Get(model.Team{}, team.Id)
|
||||
if err != nil {
|
||||
result.Err = model.NewAppError("SqlTeamStore.Update", "store.sql_team.update.finding.app_error", nil, "id="+team.Id+", "+err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
if err := team.IsValid(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if oldResult == nil {
|
||||
result.Err = model.NewAppError("SqlTeamStore.Update", "store.sql_team.update.find.app_error", nil, "id="+team.Id, http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
oldResult, err := s.GetMaster().Get(model.Team{}, team.Id)
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlTeamStore.Update", "store.sql_team.update.finding.app_error", nil, "id="+team.Id+", "+err.Error(), http.StatusInternalServerError)
|
||||
|
||||
oldTeam := oldResult.(*model.Team)
|
||||
team.CreateAt = oldTeam.CreateAt
|
||||
team.UpdateAt = model.GetMillis()
|
||||
}
|
||||
|
||||
count, err := s.GetMaster().Update(team)
|
||||
if err != nil {
|
||||
result.Err = model.NewAppError("SqlTeamStore.Update", "store.sql_team.update.updating.app_error", nil, "id="+team.Id+", "+err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
if count != 1 {
|
||||
result.Err = model.NewAppError("SqlTeamStore.Update", "store.sql_team.update.app_error", nil, "id="+team.Id, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
if oldResult == nil {
|
||||
return nil, model.NewAppError("SqlTeamStore.Update", "store.sql_team.update.find.app_error", nil, "id="+team.Id, http.StatusBadRequest)
|
||||
}
|
||||
|
||||
result.Data = team
|
||||
})
|
||||
oldTeam := oldResult.(*model.Team)
|
||||
team.CreateAt = oldTeam.CreateAt
|
||||
team.UpdateAt = model.GetMillis()
|
||||
|
||||
count, err := s.GetMaster().Update(team)
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlTeamStore.Update", "store.sql_team.update.updating.app_error", nil, "id="+team.Id+", "+err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
if count != 1 {
|
||||
return nil, model.NewAppError("SqlTeamStore.Update", "store.sql_team.update.app_error", nil, "id="+team.Id, http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
return team, nil
|
||||
}
|
||||
|
||||
func (s SqlTeamStore) UpdateDisplayName(name string, teamId string) store.StoreChannel {
|
||||
|
||||
@@ -82,7 +82,7 @@ type Store interface {
|
||||
|
||||
type TeamStore interface {
|
||||
Save(team *model.Team) StoreChannel
|
||||
Update(team *model.Team) StoreChannel
|
||||
Update(team *model.Team) (*model.Team, *model.AppError)
|
||||
UpdateDisplayName(name string, teamId string) StoreChannel
|
||||
Get(id string) StoreChannel
|
||||
GetByName(name string) StoreChannel
|
||||
|
||||
@@ -1011,16 +1011,16 @@ func testPendingAutoAddTeamMembers(t *testing.T, ss store.Store) {
|
||||
|
||||
// No result if Team deleted
|
||||
team.DeleteAt = model.GetMillis()
|
||||
res = <-ss.Team().Update(team)
|
||||
require.Nil(t, res.Err)
|
||||
team, err := ss.Team().Update(team)
|
||||
require.Nil(t, err)
|
||||
res = <-ss.Group().TeamMembersToAdd(0)
|
||||
require.Nil(t, res.Err)
|
||||
require.Len(t, res.Data, 0)
|
||||
|
||||
// reset state of team and verify
|
||||
team.DeleteAt = 0
|
||||
res = <-ss.Team().Update(team)
|
||||
require.Nil(t, res.Err)
|
||||
team, err = ss.Team().Update(team)
|
||||
require.Nil(t, err)
|
||||
res = <-ss.Group().TeamMembersToAdd(0)
|
||||
require.Nil(t, res.Err)
|
||||
require.Len(t, res.Data, 1)
|
||||
|
||||
@@ -606,19 +606,28 @@ func (_m *TeamStore) SearchPrivate(term string) store.StoreChannel {
|
||||
}
|
||||
|
||||
// Update provides a mock function with given fields: team
|
||||
func (_m *TeamStore) Update(team *model.Team) store.StoreChannel {
|
||||
func (_m *TeamStore) Update(team *model.Team) (*model.Team, *model.AppError) {
|
||||
ret := _m.Called(team)
|
||||
|
||||
var r0 store.StoreChannel
|
||||
if rf, ok := ret.Get(0).(func(*model.Team) store.StoreChannel); ok {
|
||||
var r0 *model.Team
|
||||
if rf, ok := ret.Get(0).(func(*model.Team) *model.Team); ok {
|
||||
r0 = rf(team)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.StoreChannel)
|
||||
r0 = ret.Get(0).(*model.Team)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(*model.Team) *model.AppError); ok {
|
||||
r1 = rf(team)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
}
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// UpdateDisplayName provides a mock function with given fields: name, teamId
|
||||
|
||||
@@ -27,7 +27,7 @@ func TestTeamStore(t *testing.T, ss store.Store) {
|
||||
t.Run("SearchAll", func(t *testing.T) { testTeamStoreSearchAll(t, ss) })
|
||||
t.Run("SearchOpen", func(t *testing.T) { testTeamStoreSearchOpen(t, ss) })
|
||||
t.Run("SearchPrivate", func(t *testing.T) { testTeamStoreSearchPrivate(t, ss) })
|
||||
t.Run("GetByIniviteId", func(t *testing.T) { testTeamStoreGetByIniviteId(t, ss) })
|
||||
t.Run("GetByInviteId", func(t *testing.T) { testTeamStoreGetByInviteId(t, ss) })
|
||||
t.Run("ByUserId", func(t *testing.T) { testTeamStoreByUserId(t, ss) })
|
||||
t.Run("GetAllTeamListing", func(t *testing.T) { testGetAllTeamListing(t, ss) })
|
||||
t.Run("GetAllTeamPageListing", func(t *testing.T) { testGetAllTeamPageListing(t, ss) })
|
||||
@@ -86,17 +86,17 @@ func testTeamStoreUpdate(t *testing.T, ss store.Store) {
|
||||
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
if err := (<-ss.Team().Update(&o1)).Err; err != nil {
|
||||
if _, err := ss.Team().Update(&o1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
o1.Id = "missing"
|
||||
if err := (<-ss.Team().Update(&o1)).Err; err == nil {
|
||||
if _, err := ss.Team().Update(&o1); err == nil {
|
||||
t.Fatal("Update should have failed because of missing key")
|
||||
}
|
||||
|
||||
o1.Id = model.NewId()
|
||||
if err := (<-ss.Team().Update(&o1)).Err; err == nil {
|
||||
if _, err := ss.Team().Update(&o1); err == nil {
|
||||
t.Fatal("Update should have faile because id change")
|
||||
}
|
||||
}
|
||||
@@ -385,7 +385,7 @@ func testTeamStoreSearchPrivate(t *testing.T, ss store.Store) {
|
||||
}
|
||||
}
|
||||
|
||||
func testTeamStoreGetByIniviteId(t *testing.T, ss store.Store) {
|
||||
func testTeamStoreGetByInviteId(t *testing.T, ss store.Store) {
|
||||
o1 := model.Team{}
|
||||
o1.DisplayName = "DisplayName"
|
||||
o1.Name = "z-z-z" + model.NewId() + "b"
|
||||
@@ -416,7 +416,8 @@ func testTeamStoreGetByIniviteId(t *testing.T, ss store.Store) {
|
||||
}
|
||||
|
||||
o2.InviteId = ""
|
||||
<-ss.Team().Update(&o2)
|
||||
_, err := ss.Team().Update(&o2)
|
||||
require.Nil(t, err)
|
||||
|
||||
if r1 := <-ss.Team().GetByInviteId(o2.Id); r1.Err != nil {
|
||||
t.Fatal(r1.Err)
|
||||
|
||||
@@ -3513,8 +3513,8 @@ func testUserStoreGetTeamGroupUsers(t *testing.T, ss store.Store) {
|
||||
|
||||
// update team to be group-constrained
|
||||
team.GroupConstrained = model.NewBool(true)
|
||||
res = <-ss.Team().Update(team)
|
||||
require.Nil(t, res.Err)
|
||||
team, err := ss.Team().Update(team)
|
||||
require.Nil(t, err)
|
||||
|
||||
// still returns user (being group-constrained has no effect)
|
||||
requireNUsers(1)
|
||||
|
||||
Ссылка в новой задаче
Block a user