1 package config
2
3 import (
4 "path/filepath"
5 "testing"
6
7 "github.com/stretchr/testify/require"
8 )
9
10 func TestPackageConfig(t *testing.T) {
11 t.Run("when given just a filename", func(t *testing.T) {
12 p := PackageConfig{Filename: "testdata/example.go"}
13 require.True(t, p.IsDefined())
14
15 require.NoError(t, p.Check())
16
17 require.Equal(t, p.Package, "config_test_data")
18 require.Equal(t, "github.com/99designs/gqlgen/codegen/config/testdata", p.ImportPath())
19
20 require.Equal(t, "config_test_data", p.Pkg().Name())
21 require.Equal(t, "github.com/99designs/gqlgen/codegen/config/testdata", p.Pkg().Path())
22
23 require.Contains(t, filepath.ToSlash(p.Filename), "codegen/config/testdata/example.go")
24 require.Contains(t, filepath.ToSlash(p.Dir()), "codegen/config/testdata")
25 })
26
27 t.Run("when given both", func(t *testing.T) {
28 p := PackageConfig{Filename: "testdata/example.go", Package: "wololo"}
29 require.True(t, p.IsDefined())
30
31 require.NoError(t, p.Check())
32
33 require.Equal(t, p.Package, "wololo")
34 require.Equal(t, "github.com/99designs/gqlgen/codegen/config/testdata", p.ImportPath())
35
36 require.Equal(t, "wololo", p.Pkg().Name())
37 require.Equal(t, "github.com/99designs/gqlgen/codegen/config/testdata", p.Pkg().Path())
38
39 require.Contains(t, filepath.ToSlash(p.Filename), "codegen/config/testdata/example.go")
40 require.Contains(t, filepath.ToSlash(p.Dir()), "codegen/config/testdata")
41 })
42
43 t.Run("when given nothing", func(t *testing.T) {
44 p := PackageConfig{}
45 require.False(t, p.IsDefined())
46
47 require.EqualError(t, p.Check(), "filename must be specified")
48
49 require.Equal(t, "", p.Package)
50 require.Equal(t, "", p.ImportPath())
51
52 require.Nil(t, p.Pkg())
53
54 require.Equal(t, "", p.Filename)
55 require.Equal(t, "", p.Dir())
56 })
57
58 t.Run("when given invalid filename", func(t *testing.T) {
59 p := PackageConfig{Filename: "wololo.sql"}
60 require.True(t, p.IsDefined())
61
62 require.EqualError(t, p.Check(), "filename should be path to a go source file")
63 })
64
65 t.Run("when package includes a filename", func(t *testing.T) {
66 p := PackageConfig{Filename: "foo.go", Package: "foo/foo.go"}
67 require.True(t, p.IsDefined())
68
69 require.EqualError(t, p.Check(), "package should be the output package name only, do not include the output filename")
70 })
71 }
72
View as plain text