data.defaultFormattedStringGenerators   C
last analyzed

Complexity

Conditions 9

Size

Total Lines 43
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 9

Importance

Changes 0
Metric Value
cc 9
eloc 24
nop 1
dl 0
loc 43
ccs 13
cts 13
cp 1
crap 9
rs 6.6666
c 0
b 0
f 0
1
package data
2
3
import (
4
	"fmt"
5
	"time"
6
7
	"github.com/gofrs/uuid"
8
	"syreclabs.com/go/faker"
9
)
10
11
type stringGeneratorFunction func(minLength int, maxLength int) string
12
13
func defaultFormattedStringGenerators(generator *rangedTextGenerator) map[string]stringGeneratorFunction {
14 1
	base64 := &base64Generator{generator: generator}
15 1
	html := &htmlGenerator{random: generator.random}
16
17 1
	return map[string]stringGeneratorFunction{
18
		"date": func(_ int, _ int) string {
19 1
			date := generateRandomTime()
20
21 1
			return fmt.Sprintf("%d-%02d-%02d", date.Year(), int(date.Month()), date.Day())
22
		},
23
24
		"date-time": func(_ int, _ int) string {
25 1
			date := generateRandomTime()
26
27 1
			return date.Format(time.RFC3339)
28
		},
29
30
		"email": func(_ int, _ int) string {
31 1
			return faker.Internet().Email()
32
		},
33
34
		"uri": func(_ int, _ int) string {
35 1
			return faker.Internet().Url()
36
		},
37
38
		"hostname": func(_ int, _ int) string {
39 1
			return faker.Internet().DomainName()
40
		},
41
42
		"ipv4": func(_ int, _ int) string {
43 1
			return faker.Internet().IpV4Address()
44
		},
45
46
		"ipv6": func(_ int, _ int) string {
47 1
			return faker.Internet().IpV6Address()
48
		},
49
50
		"uuid": func(_ int, _ int) string {
51 1
			return uuid.Must(uuid.NewV4()).String()
52
		},
53
54
		"byte": base64.GenerateBase64Text,
55
		"html": html.GenerateHTML,
56
	}
57
}
58
59
func generateRandomTime() time.Time {
60 1
	return faker.Date().Between(
61
		time.Date(1800, 1, 1, 1, 1, 1, 1, time.UTC),
62
		time.Date(2100, 1, 1, 1, 1, 1, 1, time.UTC),
63
	)
64
}
65