github.com/gracenoah/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 }