github.com/replicatedhq/ship@v0.55.0/pkg/lifecycle/render/noconfig_test.go (about)

     1  package render
     2  
     3  import (
     4  	"context"
     5  	"path/filepath"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/go-kit/kit/log"
    10  	"github.com/golang/mock/gomock"
    11  	"github.com/replicatedhq/ship/pkg/api"
    12  	"github.com/replicatedhq/ship/pkg/lifecycle/render/planner"
    13  	_ "github.com/replicatedhq/ship/pkg/lifecycle/render/test-cases"
    14  	"github.com/replicatedhq/ship/pkg/state"
    15  	mockdaemon "github.com/replicatedhq/ship/pkg/test-mocks/daemon"
    16  	mockplanner "github.com/replicatedhq/ship/pkg/test-mocks/planner"
    17  	state2 "github.com/replicatedhq/ship/pkg/test-mocks/state"
    18  	"github.com/replicatedhq/ship/pkg/test-mocks/ui"
    19  	"github.com/spf13/afero"
    20  	"github.com/spf13/viper"
    21  	"github.com/stretchr/testify/assert"
    22  )
    23  
    24  func TestRenderNoConfig(t *testing.T) {
    25  	ctx := context.Background()
    26  
    27  	tests := loadTestCases(t, filepath.Join("test-cases", "render-inline.yaml"))
    28  
    29  	for _, test := range tests {
    30  		t.Run(test.Name, func(t *testing.T) {
    31  			mc := gomock.NewController(t)
    32  
    33  			mockUI := ui.NewMockUi(mc)
    34  			p := mockplanner.NewMockPlanner(mc)
    35  			mockFS := afero.Afero{Fs: afero.NewMemMapFs()}
    36  			mockState := state2.NewMockManager(mc)
    37  			mockDaemon := mockdaemon.NewMockDaemon(mc)
    38  
    39  			renderer := &noconfigrenderer{
    40  				Logger: log.NewNopLogger(),
    41  				Now:    time.Now,
    42  				Viper:  viper.New(),
    43  			}
    44  			renderer.Fs = mockFS
    45  			renderer.UI = mockUI
    46  			renderer.Planner = p
    47  			renderer.StateManager = mockState
    48  
    49  			prog := mockDaemon.EXPECT().SetProgress(ProgressRead)
    50  			prog = mockDaemon.EXPECT().SetProgress(ProgressRender).After(prog)
    51  			mockDaemon.EXPECT().ClearProgress().After(prog)
    52  
    53  			renderer.StatusReceiver = mockDaemon
    54  
    55  			release := &api.Release{Spec: test.Spec}
    56  
    57  			func() {
    58  				defer mc.Finish()
    59  
    60  				mockState.EXPECT().CachedState().Return(state.State{V1: &state.V1{Config: test.ViperConfig}}, nil)
    61  
    62  				expectedConfig := test.ViperConfig
    63  				if expectedConfig == nil {
    64  					expectedConfig = make(map[string]interface{})
    65  				}
    66  
    67  				p.EXPECT().
    68  					Build("testdir", test.Spec.Assets.V1, test.Spec.Config.V1, gomock.Any(), expectedConfig).
    69  					Return(planner.Plan{}, []string{}, nil)
    70  
    71  				p.EXPECT().
    72  					Execute(ctx, planner.Plan{}).
    73  					Return(nil)
    74  
    75  				err := renderer.Execute(ctx, release, &api.Render{
    76  					Root: "testdir",
    77  				})
    78  				assert.NoError(t, err)
    79  			}()
    80  		})
    81  	}
    82  }