github.com/helmwave/helmwave@v0.36.4-0.20240509190856-b35563eba4c6/pkg/plan/export_internal_test.go (about) 1 package plan 2 3 import ( 4 "context" 5 "os" 6 "path/filepath" 7 "testing" 8 9 "github.com/helmwave/helmwave/pkg/release" 10 "github.com/helmwave/helmwave/pkg/template" 11 "github.com/helmwave/helmwave/tests" 12 "github.com/stretchr/testify/suite" 13 ) 14 15 type ExportTestSuite struct { 16 suite.Suite 17 18 ctx context.Context 19 } 20 21 func TestExportTestSuite(t *testing.T) { 22 t.Parallel() 23 suite.Run(t, new(ExportTestSuite)) 24 } 25 26 func (ts *ExportTestSuite) SetupTest() { 27 ts.ctx = tests.GetContext(ts.T()) 28 } 29 30 func (ts *ExportTestSuite) TestValuesEmpty() { 31 tmpDir := ts.T().TempDir() 32 p := New(filepath.Join(tmpDir, Dir)) 33 p.templater = template.TemplaterSprig 34 35 p.body = &planBody{} 36 37 err := p.exportValues() 38 ts.Require().NoError(err) 39 } 40 41 func (ts *ExportTestSuite) TestValuesOneRelease() { 42 tmpDir := ts.T().TempDir() 43 p := New(filepath.Join(tmpDir, Dir)) 44 p.templater = template.TemplaterSprig 45 46 valuesName := "blablavalues.yaml" 47 valuesContents := []byte("a: b") 48 tmpValues := filepath.Join(tmpDir, valuesName) 49 ts.Require().NoError(os.WriteFile(tmpValues, valuesContents, 0o600)) 50 51 mockedRelease := &MockReleaseConfig{} 52 mockedRelease.On("Name").Return("redis") 53 mockedRelease.On("Values").Return([]release.ValuesReference{ 54 {Src: tmpValues}, 55 }) 56 mockedRelease.On("Namespace").Return("defaultblabla") 57 mockedRelease.On("BuildValues").Return(nil) 58 mockedRelease.On("Uniq").Return() 59 60 p.body = &planBody{ 61 Releases: release.Configs{mockedRelease}, 62 } 63 64 ts.Require().NoError(p.buildValues(ts.ctx)) 65 ts.Require().NoError(p.exportValues()) 66 mockedRelease.AssertExpectations(ts.T()) 67 ts.Require().DirExists(filepath.Join(tmpDir, Dir, Values)) 68 ts.Require().FileExists(filepath.Join(tmpDir, Dir, Values, valuesName)) 69 70 contents, err := os.ReadFile(filepath.Join(tmpDir, Dir, Values, valuesName)) 71 ts.Require().NoError(err) 72 ts.Require().Equal(valuesContents, contents) 73 }