github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/store/storetest/team_store_test.go (about)

     1  package storetest
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/masterhung0112/hk_server/v5/model"
     7  	"github.com/stretchr/testify/suite"
     8  )
     9  
    10  // type TeamStoreTestSuite struct {
    11  // 	suite.Suite
    12  // 	StoreTestSuite
    13  // }
    14  
    15  func TestTeamStoreTestSuite(t *testing.T) {
    16  	StoreTestSuiteWithSqlSupplier(t, &TeamStoreTestSuite{}, func(t *testing.T, testSuite StoreTestBaseSuite) {
    17  		suite.Run(t, testSuite)
    18  	})
    19  }
    20  
    21  // Each user should have a mention count of exactly 1 in the DB at this point.
    22  func (s *TeamStoreTestSuite) TestGetMembersOrderByUserId() {
    23  	teamId1 := model.NewId()
    24  	teamId2 := model.NewId()
    25  
    26  	m1 := &model.TeamMember{TeamId: teamId1, UserId: "55555555555555555555555555"}
    27  	m2 := &model.TeamMember{TeamId: teamId1, UserId: "11111111111111111111111111"}
    28  	m3 := &model.TeamMember{TeamId: teamId1, UserId: "33333333333333333333333333"}
    29  	m4 := &model.TeamMember{TeamId: teamId1, UserId: "22222222222222222222222222"}
    30  	m5 := &model.TeamMember{TeamId: teamId1, UserId: "44444444444444444444444444"}
    31  	m6 := &model.TeamMember{TeamId: teamId2, UserId: "00000000000000000000000000"}
    32  
    33  	_, nErr := s.Store().Team().SaveMultipleMembers([]*model.TeamMember{m1, m2, m3, m4, m5, m6}, -1)
    34  	s.Require().Nil(nErr)
    35  
    36  	// Gets users ordered by UserId
    37  	ms, err := s.Store().Team().GetMembers(teamId1, 0, 100, nil)
    38  	s.Require().Nil(err)
    39  	s.Len(ms, 5)
    40  	s.Equal("11111111111111111111111111", ms[0].UserId)
    41  	s.Equal("22222222222222222222222222", ms[1].UserId)
    42  	s.Equal("33333333333333333333333333", ms[2].UserId)
    43  	s.Equal("44444444444444444444444444", ms[3].UserId)
    44  	s.Equal("55555555555555555555555555", ms[4].UserId)
    45  }
    46  
    47  func (s *TeamStoreTestSuite) TestGetMembersOrderByUsernameAndExcludeDeletedMembers() {
    48  	teamId1 := model.NewId()
    49  	teamId2 := model.NewId()
    50  	u1 := &model.User{Username: "a", Email: MakeEmail(), DeleteAt: int64(1)}
    51  	u2 := &model.User{Username: "c", Email: MakeEmail()}
    52  	u3 := &model.User{Username: "b", Email: MakeEmail(), DeleteAt: int64(1)}
    53  	u4 := &model.User{Username: "f", Email: MakeEmail()}
    54  	u5 := &model.User{Username: "e", Email: MakeEmail(), DeleteAt: int64(1)}
    55  	u6 := &model.User{Username: "d", Email: MakeEmail()}
    56  	u1, err := s.Store().User().Save(u1)
    57  	s.Require().Nil(err)
    58  	u2, err = s.Store().User().Save(u2)
    59  	s.Require().Nil(err)
    60  	u3, err = s.Store().User().Save(u3)
    61  	s.Require().Nil(err)
    62  	u4, err = s.Store().User().Save(u4)
    63  	s.Require().Nil(err)
    64  	u5, err = s.Store().User().Save(u5)
    65  	s.Require().Nil(err)
    66  	u6, err = s.Store().User().Save(u6)
    67  	s.Require().Nil(err)
    68  	m1 := &model.TeamMember{TeamId: teamId1, UserId: u1.Id}
    69  	m2 := &model.TeamMember{TeamId: teamId1, UserId: u2.Id}
    70  	m3 := &model.TeamMember{TeamId: teamId1, UserId: u3.Id}
    71  	m4 := &model.TeamMember{TeamId: teamId1, UserId: u4.Id}
    72  	m5 := &model.TeamMember{TeamId: teamId1, UserId: u5.Id}
    73  	m6 := &model.TeamMember{TeamId: teamId2, UserId: u6.Id}
    74  	_, nErr := s.Store().Team().SaveMultipleMembers([]*model.TeamMember{m1, m2, m3, m4, m5, m6}, -1)
    75  	s.Require().Nil(nErr)
    76  	// Gets users ordered by UserName
    77  	ms, err := s.Store().Team().GetMembers(teamId1, 0, 100, &model.TeamMembersGetOptions{Sort: model.USERNAME})
    78  	s.Require().Nil(err)
    79  	s.Len(ms, 5)
    80  	s.Equal(u1.Id, ms[0].UserId)
    81  	s.Equal(u3.Id, ms[1].UserId)
    82  	s.Equal(u2.Id, ms[2].UserId)
    83  	s.Equal(u5.Id, ms[3].UserId)
    84  	s.Equal(u4.Id, ms[4].UserId)
    85  	// Gets users ordered by UserName and excludes deleted members
    86  	ms, err = s.Store().Team().GetMembers(teamId1, 0, 100, &model.TeamMembersGetOptions{Sort: model.USERNAME, ExcludeDeletedUsers: true})
    87  	s.Require().Nil(err)
    88  	s.Len(ms, 2)
    89  	s.Equal(u2.Id, ms[0].UserId)
    90  	s.Equal(u4.Id, ms[1].UserId)
    91  }
    92  
    93  func (s *TeamStoreTestSuite) TestGetMembersExcludedDeletedUsers() {
    94  	teamId1 := model.NewId()
    95  	teamId2 := model.NewId()
    96  
    97  	u1 := &model.User{Email: MakeEmail()}
    98  	u2 := &model.User{Email: MakeEmail(), DeleteAt: int64(1)}
    99  	u3 := &model.User{Email: MakeEmail()}
   100  	u4 := &model.User{Email: MakeEmail(), DeleteAt: int64(3)}
   101  	u5 := &model.User{Email: MakeEmail()}
   102  	u6 := &model.User{Email: MakeEmail(), DeleteAt: int64(5)}
   103  
   104  	u1, err := s.Store().User().Save(u1)
   105  	s.Require().Nil(err)
   106  	u2, err = s.Store().User().Save(u2)
   107  	s.Require().Nil(err)
   108  	u3, err = s.Store().User().Save(u3)
   109  	s.Require().Nil(err)
   110  	u4, err = s.Store().User().Save(u4)
   111  	s.Require().Nil(err)
   112  	u5, err = s.Store().User().Save(u5)
   113  	s.Require().Nil(err)
   114  	u6, err = s.Store().User().Save(u6)
   115  	s.Require().Nil(err)
   116  
   117  	m1 := &model.TeamMember{TeamId: teamId1, UserId: u1.Id}
   118  	m2 := &model.TeamMember{TeamId: teamId1, UserId: u2.Id}
   119  	m3 := &model.TeamMember{TeamId: teamId1, UserId: u3.Id}
   120  	m4 := &model.TeamMember{TeamId: teamId1, UserId: u4.Id}
   121  	m5 := &model.TeamMember{TeamId: teamId1, UserId: u5.Id}
   122  	m6 := &model.TeamMember{TeamId: teamId2, UserId: u6.Id}
   123  
   124  	t1, nErr := s.Store().Team().SaveMember(m1, -1)
   125  	s.Require().Nil(nErr)
   126  	_, nErr = s.Store().Team().SaveMember(m2, -1)
   127  	s.Require().Nil(nErr)
   128  	t3, nErr := s.Store().Team().SaveMember(m3, -1)
   129  	s.Require().Nil(nErr)
   130  	_, nErr = s.Store().Team().SaveMember(m4, -1)
   131  	s.Require().Nil(nErr)
   132  	t5, nErr := s.Store().Team().SaveMember(m5, -1)
   133  	s.Require().Nil(nErr)
   134  	_, nErr = s.Store().Team().SaveMember(m6, -1)
   135  	s.Require().Nil(nErr)
   136  
   137  	// Gets users ordered by UserName
   138  	ms, err := s.Store().Team().GetMembers(teamId1, 0, 100, &model.TeamMembersGetOptions{ExcludeDeletedUsers: true})
   139  	s.Require().Nil(err)
   140  	s.Len(ms, 3)
   141  	s.Require().ElementsMatch(ms, [3]*model.TeamMember{t1, t3, t5})
   142  }