get.porter.sh/porter@v1.3.0/pkg/mixin/query/manifest_generator_test.go (about)

     1  package query
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"get.porter.sh/porter/pkg/config"
     8  	"get.porter.sh/porter/pkg/manifest"
     9  	"github.com/stretchr/testify/assert"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestManifestGenerator_BuildInput(t *testing.T) {
    14  	c := config.NewTestConfig(t)
    15  	c.TestContext.AddTestFile("testdata/porter.yaml", config.Name)
    16  
    17  	m, err := manifest.LoadManifestFrom(context.Background(), c.Config, config.Name)
    18  	require.NoError(t, err, "could not load manifest")
    19  
    20  	g := ManifestGenerator{Manifest: m}
    21  
    22  	t.Run("no config", func(t *testing.T) {
    23  		input := g.buildInputForMixin("exec")
    24  
    25  		assert.Nil(t, input.Config, "exec mixin should have no config")
    26  		assert.Len(t, input.Actions, 4, "expected 4 actions")
    27  
    28  		require.Contains(t, input.Actions, "install")
    29  		assert.Len(t, input.Actions["install"], 2, "expected 2 exec install steps")
    30  
    31  		require.Contains(t, input.Actions, "upgrade")
    32  		assert.Len(t, input.Actions["upgrade"], 1, "expected 1 exec upgrade steps")
    33  
    34  		require.Contains(t, input.Actions, "uninstall")
    35  		assert.Len(t, input.Actions["uninstall"], 1, "expected 1 exec uninstall steps")
    36  
    37  		require.Contains(t, input.Actions, "status")
    38  		assert.Len(t, input.Actions["status"], 1, "expected 1 exec status steps")
    39  	})
    40  
    41  	t.Run("with config", func(t *testing.T) {
    42  		input := g.buildInputForMixin("az")
    43  		assert.Equal(t, map[string]interface{}{"extensions": []interface{}{"iot"}}, input.Config, "az mixin should have config")
    44  	})
    45  }