github.com/apipluspower/gqlgen@v0.15.2/codegen/config/package_test.go (about) 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/apipluspower/gqlgen/codegen/config/testdata", p.ImportPath()) 19 20 require.Equal(t, "config_test_data", p.Pkg().Name()) 21 require.Equal(t, "github.com/apipluspower/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/apipluspower/gqlgen/codegen/config/testdata", p.ImportPath()) 35 36 require.Equal(t, "wololo", p.Pkg().Name()) 37 require.Equal(t, "github.com/apipluspower/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 }