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 }