-
Notifications
You must be signed in to change notification settings - Fork 0
/
generator.go
47 lines (41 loc) · 1.14 KB
/
generator.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package gentest
import (
"encoding/json"
"math/rand"
"time"
"github.com/gofrs/uuid"
"github.com/krixlion/dev_forum-article/pkg/entity"
)
func RandomString(length int) string {
letters := []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
v := make([]rune, length)
for i := range v {
v[i] = letters[rand.Intn(len(letters))]
}
return string(v)
}
// RandomArticle panics on hardware error.
// It should be used ONLY for testing.
func RandomArticle(titleLen, bodyLen int) entity.Article {
id := uuid.Must(uuid.NewV4())
userId := uuid.Must(uuid.NewV4())
return entity.Article{
Id: id.String(),
UserId: userId.String(),
Title: RandomString(titleLen),
Body: RandomString(bodyLen),
CreatedAt: time.Now().Add(time.Duration(rand.Intn(10))),
UpdatedAt: time.Now().Add(time.Duration(rand.Intn(10))),
}
}
// RandomArticle returns a random article marshaled
// to JSON and panics on error.
// It should be used ONLY for testing.
func RandomJSONArticle(titleLen, bodyLen int) []byte {
article := RandomArticle(titleLen, bodyLen)
json, err := json.Marshal(article)
if err != nil {
panic(err)
}
return json
}