github.com/maeglindeveloper/gqlgen@v0.13.1-0.20210413081235-57808b12a0a0/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/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  }