summaryrefslogtreecommitdiffstats
path: root/app/auto_environment.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-03-13 09:23:16 -0400
committerChristopher Speller <crspeller@gmail.com>2017-03-13 09:23:16 -0400
commite9c6cc269b5c9fe82e5f38d63344a07365bccd6b (patch)
tree711fefd3511dbd5a7f1a20225f00b766eb4808f7 /app/auto_environment.go
parent8b0eedbbcd47ba09142c72a71969840aa6e121d2 (diff)
downloadchat-e9c6cc269b5c9fe82e5f38d63344a07365bccd6b.tar.gz
chat-e9c6cc269b5c9fe82e5f38d63344a07365bccd6b.tar.bz2
chat-e9c6cc269b5c9fe82e5f38d63344a07365bccd6b.zip
Move command logic into app layer (#5617)
Diffstat (limited to 'app/auto_environment.go')
-rw-r--r--app/auto_environment.go99
1 files changed, 99 insertions, 0 deletions
diff --git a/app/auto_environment.go b/app/auto_environment.go
new file mode 100644
index 000000000..b0a4f54b8
--- /dev/null
+++ b/app/auto_environment.go
@@ -0,0 +1,99 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package app
+
+import (
+ "github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
+ "math/rand"
+ "time"
+)
+
+type TestEnvironment struct {
+ Teams []*model.Team
+ Environments []TeamEnvironment
+}
+
+func CreateTestEnvironmentWithTeams(client *model.Client, rangeTeams utils.Range, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TestEnvironment, bool) {
+ rand.Seed(time.Now().UTC().UnixNano())
+
+ teamCreator := NewAutoTeamCreator(client)
+ teamCreator.Fuzzy = fuzzy
+ teams, err := teamCreator.CreateTestTeams(rangeTeams)
+ if err != true {
+ return TestEnvironment{}, false
+ }
+
+ environment := TestEnvironment{teams, make([]TeamEnvironment, len(teams))}
+
+ for i, team := range teams {
+ userCreator := NewAutoUserCreator(client, team)
+ userCreator.Fuzzy = fuzzy
+ randomUser, err := userCreator.createRandomUser()
+ if err != true {
+ return TestEnvironment{}, false
+ }
+ client.LoginById(randomUser.Id, USER_PASSWORD)
+ client.SetTeamId(team.Id)
+ teamEnvironment, err := CreateTestEnvironmentInTeam(client, team, rangeChannels, rangeUsers, rangePosts, fuzzy)
+ if err != true {
+ return TestEnvironment{}, false
+ }
+ environment.Environments[i] = teamEnvironment
+ }
+
+ return environment, true
+}
+
+func CreateTestEnvironmentInTeam(client *model.Client, team *model.Team, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TeamEnvironment, bool) {
+ rand.Seed(time.Now().UTC().UnixNano())
+
+ // We need to create at least one user
+ if rangeUsers.Begin <= 0 {
+ rangeUsers.Begin = 1
+ }
+
+ userCreator := NewAutoUserCreator(client, team)
+ userCreator.Fuzzy = fuzzy
+ users, err := userCreator.CreateTestUsers(rangeUsers)
+ if err != true {
+ return TeamEnvironment{}, false
+ }
+ usernames := make([]string, len(users))
+ for i, user := range users {
+ usernames[i] = user.Username
+ }
+
+ channelCreator := NewAutoChannelCreator(client, team)
+ channelCreator.Fuzzy = fuzzy
+ channels, err := channelCreator.CreateTestChannels(rangeChannels)
+
+ // Have every user join every channel
+ for _, user := range users {
+ for _, channel := range channels {
+ client.LoginById(user.Id, USER_PASSWORD)
+ client.JoinChannel(channel.Id)
+ }
+ }
+
+ if err != true {
+ return TeamEnvironment{}, false
+ }
+
+ numPosts := utils.RandIntFromRange(rangePosts)
+ numImages := utils.RandIntFromRange(rangePosts) / 4
+ for j := 0; j < numPosts; j++ {
+ user := users[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(users) - 1})]
+ client.LoginById(user.Id, USER_PASSWORD)
+ for i, channel := range channels {
+ postCreator := NewAutoPostCreator(client, channel.Id)
+ postCreator.HasImage = i < numImages
+ postCreator.Users = usernames
+ postCreator.Fuzzy = fuzzy
+ postCreator.CreateRandomPost()
+ }
+ }
+
+ return TeamEnvironment{users, channels}, true
+}