github.com/mstephano/gqlgen-schemagen@v0.0.0-20230113041936-dd2cd4ea46aa/api/option_test.go (about)

     1  package api
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/mstephano/gqlgen-schemagen/codegen/config"
     7  	"github.com/mstephano/gqlgen-schemagen/plugin"
     8  	"github.com/mstephano/gqlgen-schemagen/plugin/federation"
     9  	"github.com/mstephano/gqlgen-schemagen/plugin/modelgen"
    10  	"github.com/mstephano/gqlgen-schemagen/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  }