From 6e9dbbd237bd5f60d2727169dd8a6ba11837746b Mon Sep 17 00:00:00 2001 From: Konstantinos Pittas Date: Wed, 7 Dec 2022 11:16:56 +0200 Subject: [PATCH] [MM-46463] Return last_picture_update for new team members (#21758) * return last picture update * add API test Co-authored-by: Mattermod --- api4/insights_test.go | 41 ++++++++++++++++++++++++++++++++++-- model/insights.go | 15 +++++++------ store/sqlstore/team_store.go | 2 +- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/api4/insights_test.go b/api4/insights_test.go index e304a60a49..58a4f95d97 100644 --- a/api4/insights_test.go +++ b/api4/insights_test.go @@ -7,10 +7,12 @@ import ( "testing" "time" - "github.com/mattermost/mattermost-server/v6/model" - "github.com/mattermost/mattermost-server/v6/store" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "github.com/mattermost/mattermost-server/v6/model" + "github.com/mattermost/mattermost-server/v6/store" + "github.com/mattermost/mattermost-server/v6/utils/testutils" ) // Top Reactions @@ -1157,6 +1159,41 @@ func TestNewTeamMembersSince(t *testing.T) { CheckNotImplementedStatus(t, resp) }) + t.Run("includes all data for the user", func(t *testing.T) { + checkUser := func(ntm *model.NewTeamMember, hasProfilePicture bool) { + require.Equal(t, th.BasicUser.Id, ntm.Id) + require.Equal(t, th.BasicUser.Username, ntm.Username) + require.Equal(t, th.BasicUser.FirstName, ntm.FirstName) + require.Equal(t, th.BasicUser.LastName, ntm.LastName) + require.Equal(t, th.BasicUser.Position, ntm.Position) + require.Equal(t, th.BasicUser.Nickname, ntm.Nickname) + member, err := th.App.GetTeamMember(team.Id, th.BasicUser.Id) + require.Nil(t, err) + require.Equal(t, member.CreateAt, ntm.CreateAt) + if hasProfilePicture { + require.Truef(t, ntm.LastPictureUpdate > int64(0), "should be greater than 0, but was %d", ntm.LastPictureUpdate) + } else { + require.Equal(t, int64(0), ntm.LastPictureUpdate) + } + } + + th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional)) + list, resp, err := th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 5) + require.NoError(t, err) + CheckOKStatus(t, resp) + checkUser(list.Items[0], false) + + data, err := testutils.ReadTestFile("test.png") + require.NoError(t, err) + _, err = th.Client.SetProfileImage(th.BasicUser.Id, data) + require.NoError(t, err) + + list, resp, err = th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 5) + require.NoError(t, err) + CheckOKStatus(t, resp) + checkUser(list.Items[0], true) + }) + t.Run("implements pagination", func(t *testing.T) { // check the first page of results list, resp, err := th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 2) diff --git a/model/insights.go b/model/insights.go index d66d48c283..437cdeec37 100644 --- a/model/insights.go +++ b/model/insights.go @@ -118,13 +118,14 @@ type NewTeamMembersList struct { } type NewTeamMember struct { - Id string `json:"id"` - Username string `json:"username"` - FirstName string `json:"first_name"` - LastName string `json:"last_name"` - Position string `json:"position"` - Nickname string `json:"nickname"` - CreateAt int64 `json:"create_at"` + Id string `json:"id"` + Username string `json:"username"` + FirstName string `json:"first_name"` + LastName string `json:"last_name"` + Position string `json:"position"` + Nickname string `json:"nickname"` + LastPictureUpdate int64 `json:"last_picture_update,omitempty"` + CreateAt int64 `json:"create_at"` } type DurationPostCount struct { diff --git a/store/sqlstore/team_store.go b/store/sqlstore/team_store.go index cbe8535a21..00b3d731ae 100644 --- a/store/sqlstore/team_store.go +++ b/store/sqlstore/team_store.go @@ -1675,7 +1675,7 @@ func (s SqlTeamStore) GetNewTeamMembersSince(teamID string, since int64, offset return nil, 0, errors.Wrap(err, "failed to count team members since") } - newTeamMembersBuilder := builderF("Users.Id, Users.Username, Users.FirstName, Users.LastName, Users.Position, TeamMembers.CreateAt, Users.Nickname"). + newTeamMembersBuilder := builderF("Users.Id, Users.Username, Users.FirstName, Users.LastName, Users.Position, Users.LastPictureUpdate, TeamMembers.CreateAt, Users.Nickname"). Limit(uint64(limit + 1)). Offset(uint64(offset)) query, args, err = newTeamMembersBuilder.ToSql()