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  }