fuzzyworld

template / files / internal / core / main_test.go

main_test.go

2.5 KB · history · blame

1package core
2
3import (
4 "os"
5 "testing"
6
7 "github.com/stretchr/testify/assert"
8)
9
10func TestMain(m *testing.M) {
11 setup()
12 code := m.Run()
13 shutdown()
14 os.Exit(code)
15}
16
17func setup() {
18 // setup code
19}
20func shutdown() {
21 // shutdown code
22
23 // not really necessary, but why not?
24 undoMonkeyPatch()
25}
26
27func TestFindProfile(t *testing.T) {
28 fileTemplate := "{{.Year}}-{{.Month}}-{{.Day}}{{if .ProjectName}}-{{.ProjectName}}{{end}}.txt"
29 profile, err := findProfile(settings{
30 argumentValues: argumentValues{
31 fileTemplate: fileTemplate,
32 },
33 })
34 assert.NoError(t, err)
35 assert.Equal(t, "temp", profile.Name)
36 assert.Equal(t, FileType, profile.Type)
37 assert.Equal(t, 1, len(profile.NamePatterns))
38 assert.Equal(t, ParameterizedText(fileTemplate), profile.NamePatterns[0])
39
40 dirTemplate := "{{.Year}}-{{.Month}}-{{.Day}}{{if .ProjectName}}-{{.ProjectName}}{{end}}"
41 profile, err = findProfile(settings{
42 argumentValues: argumentValues{
43 dirTemplate: dirTemplate,
44 },
45 })
46 assert.NoError(t, err)
47 assert.Equal(t, "temp", profile.Name)
48 assert.Equal(t, FolderType, profile.Type)
49 assert.Equal(t, 1, len(profile.NamePatterns))
50 assert.Equal(t, ParameterizedText(dirTemplate), profile.NamePatterns[0])
51
52 // script template → ScriptType
53 scriptTemplate := "echo hello"
54 profile, err = findProfile(settings{
55 argumentValues: argumentValues{
56 scriptTemplate: scriptTemplate,
57 },
58 })
59 assert.NoError(t, err)
60 assert.Equal(t, ScriptType, profile.Type)
61 assert.Equal(t, 1, len(profile.PostScripts))
62 assert.Equal(t, ParameterizedText(scriptTemplate), profile.PostScripts[0])
63
64 // named profile resolved from config
65 namedProfile := Profile{Name: "my-profile", Type: FileType, NamePatterns: []ParameterizedText{"name"}, TargetDirectory: "~/dir"}
66 profile, err = findProfile(settings{
67 argumentValues: argumentValues{profile: "my-profile"},
68 config: Config{Profiles: []Profile{namedProfile}},
69 })
70 assert.NoError(t, err)
71 assert.Equal(t, "my-profile", profile.Name)
72
73 // default profile when no name given
74 defaultProfile := Profile{Name: "default-profile", IsDefault: true, Type: FileType, NamePatterns: []ParameterizedText{"name"}, TargetDirectory: "~/dir"}
75 profile, err = findProfile(settings{
76 config: Config{Profiles: []Profile{defaultProfile}},
77 })
78 assert.NoError(t, err)
79 assert.Equal(t, "default-profile", profile.Name)
80
81 // error: no profile specified and no default
82 _, err = findProfile(settings{
83 config: Config{Profiles: []Profile{}},
84 })
85 assert.Error(t, err)
86}