github.com/matiasanaya/gqlgen@v0.6.0/codegen/config_test.go (about)

     1  package codegen
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestLoadConfig(t *testing.T) {
    12  	t.Run("config does not exist", func(t *testing.T) {
    13  		_, err := LoadConfig("doesnotexist.yml")
    14  		require.Error(t, err)
    15  	})
    16  
    17  	t.Run("malformed config", func(t *testing.T) {
    18  		_, err := LoadConfig("testdata/cfg/malformedconfig.yml")
    19  		require.EqualError(t, err, "unable to parse config: yaml: unmarshal errors:\n  line 1: cannot unmarshal !!str `asdf` into codegen.Config")
    20  	})
    21  
    22  	t.Run("unknown keys", func(t *testing.T) {
    23  		_, err := LoadConfig("testdata/cfg/unknownkeys.yml")
    24  		require.EqualError(t, err, "unable to parse config: yaml: unmarshal errors:\n  line 2: field unknown not found in type codegen.Config")
    25  	})
    26  }
    27  
    28  func TestLoadDefaultConfig(t *testing.T) {
    29  	testDir, err := os.Getwd()
    30  	require.NoError(t, err)
    31  	var cfg *Config
    32  
    33  	t.Run("will find closest match", func(t *testing.T) {
    34  		err = os.Chdir(filepath.Join(testDir, "testdata", "cfg", "subdir"))
    35  		require.NoError(t, err)
    36  
    37  		cfg, err = LoadConfigFromDefaultLocations()
    38  		require.NoError(t, err)
    39  		require.Equal(t, cfg.SchemaFilename, "inner")
    40  	})
    41  
    42  	t.Run("will find config in parent dirs", func(t *testing.T) {
    43  		err = os.Chdir(filepath.Join(testDir, "testdata", "cfg", "otherdir"))
    44  		require.NoError(t, err)
    45  
    46  		cfg, err = LoadConfigFromDefaultLocations()
    47  		require.NoError(t, err)
    48  		require.Equal(t, cfg.SchemaFilename, "outer")
    49  	})
    50  
    51  	t.Run("will return error if config doesn't exist", func(t *testing.T) {
    52  		err = os.Chdir(testDir)
    53  		require.NoError(t, err)
    54  
    55  		cfg, err = LoadConfigFromDefaultLocations()
    56  		require.True(t, os.IsNotExist(err))
    57  	})
    58  }