diff options
Diffstat (limited to 'store')
-rw-r--r-- | store/sqlstore/channel_store.go | 8 | ||||
-rw-r--r-- | store/sqlstore/team_store.go | 11 | ||||
-rw-r--r-- | store/sqlstore/upgrade.go | 10 | ||||
-rw-r--r-- | store/store.go | 2 | ||||
-rw-r--r-- | store/storetest/compliance_store.go | 19 | ||||
-rw-r--r-- | store/storetest/mocks/ChannelStore.go | 16 | ||||
-rw-r--r-- | store/storetest/mocks/TeamStore.go | 16 | ||||
-rw-r--r-- | store/storetest/status_store.go | 5 | ||||
-rw-r--r-- | store/storetest/system_store.go | 13 | ||||
-rw-r--r-- | store/storetest/team_store.go | 109 | ||||
-rw-r--r-- | store/storetest/user_store.go | 4 |
11 files changed, 149 insertions, 64 deletions
diff --git a/store/sqlstore/channel_store.go b/store/sqlstore/channel_store.go index e158ba5ea..97f60dda0 100644 --- a/store/sqlstore/channel_store.go +++ b/store/sqlstore/channel_store.go @@ -1921,3 +1921,11 @@ func (s SqlChannelStore) ClearAllCustomRoleAssignments() store.StoreChannel { } }) } + +func (s SqlChannelStore) ResetLastPostAt() store.StoreChannel { + return store.Do(func(result *store.StoreResult) { + if _, err := s.GetMaster().Exec("UPDATE Channels SET LastPostAt = (SELECT UpdateAt FROM Posts WHERE ChannelId = Channels.Id ORDER BY UpdateAt DESC LIMIT 1);"); err != nil { + result.Err = model.NewAppError("SqlChannelStore.ResetLastPostAt", "store.sql_channel.reset_last_post_at.app_error", nil, err.Error(), http.StatusInternalServerError) + } + }) +} diff --git a/store/sqlstore/team_store.go b/store/sqlstore/team_store.go index 4277a0ba2..d9e33df76 100644 --- a/store/sqlstore/team_store.go +++ b/store/sqlstore/team_store.go @@ -913,3 +913,14 @@ func (s SqlTeamStore) ClearAllCustomRoleAssignments() store.StoreChannel { } }) } + +func (s SqlTeamStore) AnalyticsGetTeamCountForScheme(schemeId string) store.StoreChannel { + return store.Do(func(result *store.StoreResult) { + count, err := s.GetReplica().SelectInt("SELECT count(*) FROM Teams WHERE SchemeId = :SchemeId AND DeleteAt = 0", map[string]interface{}{"SchemeId": schemeId}) + if err != nil { + result.Err = model.NewAppError("SqlTeamStore.AnalyticsGetTeamCountForScheme", "store.sql_team.analytics_get_team_count_for_scheme.app_error", nil, "schemeId="+schemeId+" "+err.Error(), http.StatusInternalServerError) + return + } + result.Data = count + }) +} diff --git a/store/sqlstore/upgrade.go b/store/sqlstore/upgrade.go index cc4e5a0cc..ab3bd202b 100644 --- a/store/sqlstore/upgrade.go +++ b/store/sqlstore/upgrade.go @@ -15,6 +15,7 @@ import ( ) const ( + VERSION_5_3_0 = "5.3.0" VERSION_5_2_0 = "5.2.0" VERSION_5_1_0 = "5.1.0" VERSION_5_0_0 = "5.0.0" @@ -82,6 +83,7 @@ func UpgradeDatabase(sqlStore SqlStore) { UpgradeDatabaseToVersion50(sqlStore) UpgradeDatabaseToVersion51(sqlStore) UpgradeDatabaseToVersion52(sqlStore) + UpgradeDatabaseToVersion53(sqlStore) // If the SchemaVersion is empty this this is the first time it has ran // so lets set it to the current version. @@ -480,3 +482,11 @@ func UpgradeDatabaseToVersion52(sqlStore SqlStore) { saveSchemaVersion(sqlStore, VERSION_5_2_0) } } + +func UpgradeDatabaseToVersion53(sqlStore SqlStore) { + // TODO: Uncomment following condition when version 5.3.0 is released + // if shouldPerformUpgrade(sqlStore, VERSION_5_2_0, VERSION_5_3_0) { + + // saveSchemaVersion(sqlStore, VERSION_5_3_0) + // } +} diff --git a/store/store.go b/store/store.go index 89adce188..0c89a0a91 100644 --- a/store/store.go +++ b/store/store.go @@ -110,6 +110,7 @@ type TeamStore interface { MigrateTeamMembers(fromTeamId string, fromUserId string) StoreChannel ResetAllTeamSchemes() StoreChannel ClearAllCustomRoleAssignments() StoreChannel + AnalyticsGetTeamCountForScheme(schemeId string) StoreChannel } type ChannelStore interface { @@ -171,6 +172,7 @@ type ChannelStore interface { MigrateChannelMembers(fromChannelId string, fromUserId string) StoreChannel ResetAllChannelSchemes() StoreChannel ClearAllCustomRoleAssignments() StoreChannel + ResetLastPostAt() StoreChannel } type ChannelMemberHistoryStore interface { diff --git a/store/storetest/compliance_store.go b/store/storetest/compliance_store.go index a772f6e44..f7f095a00 100644 --- a/store/storetest/compliance_store.go +++ b/store/storetest/compliance_store.go @@ -10,6 +10,7 @@ import ( "github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/store" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestComplianceStore(t *testing.T, ss store.Store) { @@ -35,9 +36,8 @@ func testComplianceStore(t *testing.T, ss store.Store) { result := <-c compliances := result.Data.(model.Compliances) - if compliances[0].Status != model.COMPLIANCE_STATUS_RUNNING && compliance2.Id != compliances[0].Id { - t.Fatal() - } + require.Equal(t, model.COMPLIANCE_STATUS_RUNNING, compliances[0].Status) + require.Equal(t, compliance2.Id, compliances[0].Id) compliance2.Status = model.COMPLIANCE_STATUS_FAILED store.Must(ss.Compliance().Update(compliance2)) @@ -46,17 +46,14 @@ func testComplianceStore(t *testing.T, ss store.Store) { result = <-c compliances = result.Data.(model.Compliances) - if compliances[0].Status != model.COMPLIANCE_STATUS_FAILED && compliance2.Id != compliances[0].Id { - t.Fatal() - } + require.Equal(t, model.COMPLIANCE_STATUS_FAILED, compliances[0].Status) + require.Equal(t, compliance2.Id, compliances[0].Id) c = ss.Compliance().GetAll(0, 1) result = <-c compliances = result.Data.(model.Compliances) - if len(compliances) != 1 { - t.Fatal("should only have returned 1") - } + require.Len(t, compliances, 1) c = ss.Compliance().GetAll(1, 1) result = <-c @@ -67,9 +64,7 @@ func testComplianceStore(t *testing.T, ss store.Store) { } rc2 := (<-ss.Compliance().Get(compliance2.Id)).Data.(*model.Compliance) - if rc2.Status != compliance2.Status { - t.Fatal() - } + require.Equal(t, compliance2.Status, rc2.Status) } func testComplianceExport(t *testing.T, ss store.Store) { diff --git a/store/storetest/mocks/ChannelStore.go b/store/storetest/mocks/ChannelStore.go index 8adc98e10..747a844ec 100644 --- a/store/storetest/mocks/ChannelStore.go +++ b/store/storetest/mocks/ChannelStore.go @@ -711,6 +711,22 @@ func (_m *ChannelStore) ResetAllChannelSchemes() store.StoreChannel { return r0 } +// ResetLastPostAt provides a mock function with given fields: +func (_m *ChannelStore) ResetLastPostAt() store.StoreChannel { + ret := _m.Called() + + var r0 store.StoreChannel + if rf, ok := ret.Get(0).(func() store.StoreChannel); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(store.StoreChannel) + } + } + + return r0 +} + // Restore provides a mock function with given fields: channelId, time func (_m *ChannelStore) Restore(channelId string, time int64) store.StoreChannel { ret := _m.Called(channelId, time) diff --git a/store/storetest/mocks/TeamStore.go b/store/storetest/mocks/TeamStore.go index db5cb658f..8e27e3c05 100644 --- a/store/storetest/mocks/TeamStore.go +++ b/store/storetest/mocks/TeamStore.go @@ -13,6 +13,22 @@ type TeamStore struct { mock.Mock } +// AnalyticsGetTeamCountForScheme provides a mock function with given fields: schemeId +func (_m *TeamStore) AnalyticsGetTeamCountForScheme(schemeId string) store.StoreChannel { + ret := _m.Called(schemeId) + + var r0 store.StoreChannel + if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok { + r0 = rf(schemeId) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(store.StoreChannel) + } + } + + return r0 +} + // AnalyticsTeamCount provides a mock function with given fields: func (_m *TeamStore) AnalyticsTeamCount() store.StoreChannel { ret := _m.Called() diff --git a/store/storetest/status_store.go b/store/storetest/status_store.go index b26be4c19..5231bc29a 100644 --- a/store/storetest/status_store.go +++ b/store/storetest/status_store.go @@ -8,6 +8,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/store" @@ -103,9 +104,7 @@ func testActiveUserCount(t *testing.T, ss store.Store) { t.Fatal(result.Err) } else { count := result.Data.(int64) - if count <= 0 { - t.Fatal() - } + require.True(t, count > 0, "expected count > 0, got %d", count) } } diff --git a/store/storetest/system_store.go b/store/storetest/system_store.go index a06b72a83..6dc1efe41 100644 --- a/store/storetest/system_store.go +++ b/store/storetest/system_store.go @@ -7,6 +7,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/store" @@ -25,9 +26,7 @@ func testSystemStore(t *testing.T, ss store.Store) { result := <-ss.System().Get() systems := result.Data.(model.StringMap) - if systems[system.Name] != system.Value { - t.Fatal() - } + require.Equal(t, system.Value, systems[system.Name]) system.Value = "value2" store.Must(ss.System().Update(system)) @@ -35,15 +34,11 @@ func testSystemStore(t *testing.T, ss store.Store) { result2 := <-ss.System().Get() systems2 := result2.Data.(model.StringMap) - if systems2[system.Name] != system.Value { - t.Fatal() - } + require.Equal(t, system.Value, systems2[system.Name]) result3 := <-ss.System().GetByName(system.Name) rsystem := result3.Data.(*model.System) - if rsystem.Value != system.Value { - t.Fatal() - } + require.Equal(t, system.Value, rsystem.Value) } func testSystemStoreSaveOrUpdate(t *testing.T, ss store.Store) { diff --git a/store/storetest/team_store.go b/store/storetest/team_store.go index 40d69a2f2..ede1a91d3 100644 --- a/store/storetest/team_store.go +++ b/store/storetest/team_store.go @@ -44,6 +44,7 @@ func TestTeamStore(t *testing.T, ss store.Store) { t.Run("MigrateTeamMembers", func(t *testing.T) { testTeamStoreMigrateTeamMembers(t, ss) }) t.Run("ResetAllTeamSchemes", func(t *testing.T) { testResetAllTeamSchemes(t, ss) }) t.Run("ClearAllCustomRoleAssignments", func(t *testing.T) { testTeamStoreClearAllCustomRoleAssignments(t, ss) }) + t.Run("AnalyticsGetTeamCountForScheme", func(t *testing.T) { testTeamStoreAnalyticsGetTeamCountForScheme(t, ss) }) } func testTeamStoreSave(t *testing.T, ss store.Store) { @@ -590,10 +591,7 @@ func testTeamMembers(t *testing.T, ss store.Store) { t.Fatal(r1.Err) } else { ms := r1.Data.([]*model.TeamMember) - - if len(ms) != 2 { - t.Fatal() - } + require.Len(t, ms, 2) } if r1 := <-ss.Team().GetMembers(teamId2, 0, 100); r1.Err != nil { @@ -601,14 +599,8 @@ func testTeamMembers(t *testing.T, ss store.Store) { } else { ms := r1.Data.([]*model.TeamMember) - if len(ms) != 1 { - t.Fatal() - } - - if ms[0].UserId != m3.UserId { - t.Fatal() - - } + require.Len(t, ms, 1) + require.Equal(t, m3.UserId, ms[0].UserId) } if r1 := <-ss.Team().GetTeamsForUser(m1.UserId); r1.Err != nil { @@ -616,14 +608,8 @@ func testTeamMembers(t *testing.T, ss store.Store) { } else { ms := r1.Data.([]*model.TeamMember) - if len(ms) != 1 { - t.Fatal() - } - - if ms[0].TeamId != m1.TeamId { - t.Fatal() - - } + require.Len(t, ms, 1) + require.Equal(t, m1.TeamId, ms[0].TeamId) } if r1 := <-ss.Team().RemoveMember(teamId1, m1.UserId); r1.Err != nil { @@ -635,14 +621,8 @@ func testTeamMembers(t *testing.T, ss store.Store) { } else { ms := r1.Data.([]*model.TeamMember) - if len(ms) != 1 { - t.Fatal() - } - - if ms[0].UserId != m2.UserId { - t.Fatal() - - } + require.Len(t, ms, 1) + require.Equal(t, m2.UserId, ms[0].UserId) } store.Must(ss.Team().SaveMember(m1, -1)) @@ -656,9 +636,7 @@ func testTeamMembers(t *testing.T, ss store.Store) { } else { ms := r1.Data.([]*model.TeamMember) - if len(ms) != 0 { - t.Fatal() - } + require.Len(t, ms, 0) } uid := model.NewId() @@ -672,9 +650,7 @@ func testTeamMembers(t *testing.T, ss store.Store) { } else { ms := r1.Data.([]*model.TeamMember) - if len(ms) != 2 { - t.Fatal() - } + require.Len(t, ms, 2) } if r1 := <-ss.Team().RemoveAllMembersByUser(uid); r1.Err != nil { @@ -686,9 +662,7 @@ func testTeamMembers(t *testing.T, ss store.Store) { } else { ms := r1.Data.([]*model.TeamMember) - if len(ms) != 0 { - t.Fatal() - } + require.Len(t, ms, 0) } } @@ -1292,3 +1266,64 @@ func testTeamStoreClearAllCustomRoleAssignments(t *testing.T, ss store.Store) { require.Nil(t, r4.Err) assert.Equal(t, "", r4.Data.(*model.TeamMember).Roles) } + +func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) { + s1 := &model.Scheme{ + DisplayName: model.NewId(), + Name: model.NewId(), + Description: model.NewId(), + Scope: model.SCHEME_SCOPE_TEAM, + } + s1 = (<-ss.Scheme().Save(s1)).Data.(*model.Scheme) + + count1 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) + assert.Equal(t, int64(0), count1) + + t1 := &model.Team{ + Name: model.NewId(), + DisplayName: model.NewId(), + Email: MakeEmail(), + Type: model.TEAM_OPEN, + SchemeId: &s1.Id, + } + t1 = (<-ss.Team().Save(t1)).Data.(*model.Team) + + count2 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) + assert.Equal(t, int64(1), count2) + + t2 := &model.Team{ + Name: model.NewId(), + DisplayName: model.NewId(), + Email: MakeEmail(), + Type: model.TEAM_OPEN, + SchemeId: &s1.Id, + } + t2 = (<-ss.Team().Save(t2)).Data.(*model.Team) + + count3 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) + assert.Equal(t, int64(2), count3) + + t3 := &model.Team{ + Name: model.NewId(), + DisplayName: model.NewId(), + Email: MakeEmail(), + Type: model.TEAM_OPEN, + } + t3 = (<-ss.Team().Save(t3)).Data.(*model.Team) + + count4 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) + assert.Equal(t, int64(2), count4) + + t4 := &model.Team{ + Name: model.NewId(), + DisplayName: model.NewId(), + Email: MakeEmail(), + Type: model.TEAM_OPEN, + SchemeId: &s1.Id, + DeleteAt: model.GetMillis(), + } + t4 = (<-ss.Team().Save(t4)).Data.(*model.Team) + + count5 := (<-ss.Team().AnalyticsGetTeamCountForScheme(s1.Id)).Data.(int64) + assert.Equal(t, int64(2), count5) +} diff --git a/store/storetest/user_store.go b/store/storetest/user_store.go index 10fb6a4d9..d1a373f9b 100644 --- a/store/storetest/user_store.go +++ b/store/storetest/user_store.go @@ -246,9 +246,7 @@ func testUserCount(t *testing.T, ss store.Store) { t.Fatal(result.Err) } else { count := result.Data.(int64) - if count <= 0 { - t.Fatal() - } + require.False(t, count <= 0, "expected count > 0, got %d", count) } } |