github.com/kerryoscer/gqlgen@v0.17.29/api/option_test.go (about) 1 package api 2 3 import ( 4 "testing" 5 6 "github.com/kerryoscer/gqlgen/codegen/config" 7 "github.com/kerryoscer/gqlgen/plugin" 8 "github.com/kerryoscer/gqlgen/plugin/federation" 9 "github.com/kerryoscer/gqlgen/plugin/modelgen" 10 "github.com/kerryoscer/gqlgen/plugin/resolvergen" 11 "github.com/stretchr/testify/require" 12 ) 13 14 type testPlugin struct{} 15 16 // Name returns the plugin name 17 func (t *testPlugin) Name() string { 18 return "modelgen" 19 } 20 21 // MutateConfig mutates the configuration 22 func (t *testPlugin) MutateConfig(_ *config.Config) error { 23 return nil 24 } 25 26 func TestReplacePlugin(t *testing.T) { 27 t.Run("replace plugin if exists", func(t *testing.T) { 28 pg := []plugin.Plugin{ 29 federation.New(1), 30 modelgen.New(), 31 resolvergen.New(), 32 } 33 34 expectedPlugin := &testPlugin{} 35 ReplacePlugin(expectedPlugin)(config.DefaultConfig(), &pg) 36 37 require.EqualValues(t, federation.New(1), pg[0]) 38 require.EqualValues(t, expectedPlugin, pg[1]) 39 require.EqualValues(t, resolvergen.New(), pg[2]) 40 }) 41 42 t.Run("add plugin if doesn't exist", func(t *testing.T) { 43 pg := []plugin.Plugin{ 44 federation.New(1), 45 resolvergen.New(), 46 } 47 48 expectedPlugin := &testPlugin{} 49 ReplacePlugin(expectedPlugin)(config.DefaultConfig(), &pg) 50 51 require.EqualValues(t, federation.New(1), pg[0]) 52 require.EqualValues(t, resolvergen.New(), pg[1]) 53 require.EqualValues(t, expectedPlugin, pg[2]) 54 }) 55 } 56 57 func TestPrependPlugin(t *testing.T) { 58 modelgenPlugin := modelgen.New() 59 pg := []plugin.Plugin{ 60 modelgenPlugin, 61 } 62 63 expectedPlugin := &testPlugin{} 64 PrependPlugin(expectedPlugin)(config.DefaultConfig(), &pg) 65 66 require.EqualValues(t, expectedPlugin, pg[0]) 67 require.EqualValues(t, modelgenPlugin, pg[1]) 68 }