-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathfile_loader_test.go
62 lines (57 loc) · 1.5 KB
/
file_loader_test.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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package main
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestGetNormalizedExtension(t *testing.T) {
for input, expected := range map[string]string{
"foo.json": ".json",
"foo.yml": ".yml",
"foo.yaml": ".yml",
"foo.yaml.gz": ".yml",
"foo.json.gz": ".json",
} {
assert.Equal(t, expected, GetNormalizedExtension(input))
}
}
func TestMakeLoaderFor(t *testing.T) {
for input, shouldHaveError := range map[string]bool{
"path/to/myfile.json": false,
"path/to/myfile.yml": false,
"path/to/myfile.yml.gz": false,
"path/to/myfile.sql": true,
} {
_, err := MakeLoaderFor(input)
if shouldHaveError {
assert.NotNil(t, err)
} else {
assert.Nil(t, err)
}
}
}
func TestLoadFile(t *testing.T) {
_, err := LoadFile("/path/to/inexisting")
assert.NotNil(t, err)
for _, testCase := range []struct {
FileName string
FixturesNum int
Data map[string]int
}{
{"./fixtures/001_countries.yml", 1, map[string]int{"countries": 2}},
{"./fixtures/002_regions.json.gz", 2, map[string]int{"prefectures": 1, "regions": 2}},
} {
fixtures, err := LoadFile(testCase.FileName)
assert.Nil(t, err)
assert.Len(t, fixtures, testCase.FixturesNum)
for _, fixture := range fixtures {
assert.Len(t, fixture.Data, testCase.Data[fixture.TableName])
}
}
}
func TestLoadDirectory(t *testing.T) {
_, err := LoadDirectory("/path/to/inexisting")
assert.NotNil(t, err)
fixtures, err := LoadDirectory("./fixtures")
assert.Nil(t, err)
assert.Len(t, fixtures, 3)
}