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