diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2017-07-05 12:10:15 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2017-07-05 09:10:15 -0700 |
commit | 039271394ee3aed5b265c6c5c5e1f8d979478970 (patch) | |
tree | 5d78ca409f6e0615a667ce42adf9d8ae3d0a4668 /store | |
parent | 857d280007b39b7dbfe0057152083a332abd73d3 (diff) | |
download | chat-039271394ee3aed5b265c6c5c5e1f8d979478970.tar.gz chat-039271394ee3aed5b265c6c5c5e1f8d979478970.tar.bz2 chat-039271394ee3aed5b265c6c5c5e1f8d979478970.zip |
PLT-6753 Fixed deactivated users counting against max members on a team (#6758)
* PLT-6753 Fixed deactivated users counting against max members on a team
* Removed nested sql query when checking the number of team members
Diffstat (limited to 'store')
-rw-r--r-- | store/sql_team_store.go | 7 | ||||
-rw-r--r-- | store/sql_team_store_test.go | 19 |
2 files changed, 24 insertions, 2 deletions
diff --git a/store/sql_team_store.go b/store/sql_team_store.go index 6a2bcc9b0..b2c872880 100644 --- a/store/sql_team_store.go +++ b/store/sql_team_store.go @@ -494,9 +494,14 @@ func (s SqlTeamStore) SaveMember(member *model.TeamMember) StoreChannel { COUNT(0) FROM TeamMembers + INNER JOIN + Users + ON + TeamMembers.UserId = Users.Id WHERE TeamId = :TeamId - AND DeleteAt = 0`, map[string]interface{}{"TeamId": member.TeamId}); err != nil { + AND TeamMembers.DeleteAt = 0 + AND Users.DeleteAt = 0`, map[string]interface{}{"TeamId": member.TeamId}); err != nil { result.Err = model.NewLocAppError("SqlUserStore.Save", "store.sql_user.save.member_count.app_error", nil, "teamId="+member.TeamId+", "+err.Error()) storeChannel <- result close(storeChannel) diff --git a/store/sql_team_store_test.go b/store/sql_team_store_test.go index acf58253b..9837120d3 100644 --- a/store/sql_team_store_test.go +++ b/store/sql_team_store_test.go @@ -644,7 +644,24 @@ func TestSaveTeamMemberMaxMembers(t *testing.T) { if result := <-store.Team().GetTotalMemberCount(team.Id); result.Err != nil { t.Fatal(result.Err) } else if count := result.Data.(int64); int(count) != utils.Cfg.TeamSettings.MaxUsersPerTeam { - t.Fatalf("should still have 5 team members again, had %v instead", count) + t.Fatalf("should have 5 team members again, had %v instead", count) + } + + // Deactivating a user should make them stop counting against max members + user2 := Must(store.User().Get(userIds[1])).(*model.User) + user2.DeleteAt = 1234 + Must(store.User().Update(user2, true)) + + newUserId2 := Must(store.User().Save(&model.User{ + Username: model.NewId(), + Email: model.NewId(), + })).(*model.User).Id + if result := <-store.Team().SaveMember(&model.TeamMember{TeamId: team.Id, UserId: newUserId2}); result.Err != nil { + t.Fatal("should've been able to save new member after deleting one", result.Err) + } else { + defer func(userId string) { + <-store.Team().RemoveMember(team.Id, userId) + }(newUserId2) } } |