github.com/helmwave/helmwave@v0.36.4-0.20240509190856-b35563eba4c6/pkg/plan/down_test.go (about)

     1  package plan_test
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/helmwave/helmwave/pkg/plan"
    10  	"github.com/helmwave/helmwave/pkg/release"
    11  	"github.com/helmwave/helmwave/tests"
    12  	"github.com/stretchr/testify/suite"
    13  	helmRelease "helm.sh/helm/v3/pkg/release"
    14  )
    15  
    16  type DestroyTestSuite struct {
    17  	suite.Suite
    18  
    19  	ctx context.Context
    20  }
    21  
    22  func TestDestroyTestSuite(t *testing.T) {
    23  	t.Parallel()
    24  	suite.Run(t, new(DestroyTestSuite))
    25  }
    26  
    27  func (ts *DestroyTestSuite) SetupTest() {
    28  	ts.ctx = tests.GetContext(ts.T())
    29  }
    30  
    31  func (ts *DestroyTestSuite) TestDestroy() {
    32  	tmpDir := ts.T().TempDir()
    33  	p := plan.New(filepath.Join(tmpDir, plan.Dir))
    34  
    35  	mockedRelease := &plan.MockReleaseConfig{}
    36  	mockedRelease.On("Name").Return("redis")
    37  	mockedRelease.On("Namespace").Return("defaultblabla")
    38  	mockedRelease.On("Uniq").Return()
    39  	mockedRelease.On("Uninstall").Return(&helmRelease.UninstallReleaseResponse{}, nil)
    40  	mockedRelease.On("DependsOn").Return([]*release.DependsOnReference{})
    41  
    42  	p.SetReleases(mockedRelease)
    43  
    44  	err := p.Down(ts.ctx)
    45  	ts.Require().NoError(err)
    46  
    47  	mockedRelease.AssertExpectations(ts.T())
    48  }
    49  
    50  func (ts *DestroyTestSuite) TestDestroyFailedRelease() {
    51  	tmpDir := ts.T().TempDir()
    52  	p := plan.New(filepath.Join(tmpDir, plan.Dir))
    53  
    54  	mockedRelease := &plan.MockReleaseConfig{}
    55  	mockedRelease.On("Name").Return("redis")
    56  	mockedRelease.On("Namespace").Return("defaultblabla")
    57  	mockedRelease.On("Uniq").Return()
    58  	e := errors.New(ts.T().Name())
    59  	mockedRelease.On("Uninstall").Return(&helmRelease.UninstallReleaseResponse{}, e)
    60  	mockedRelease.On("DependsOn").Return([]*release.DependsOnReference{})
    61  
    62  	p.SetReleases(mockedRelease)
    63  
    64  	err := p.Down(ts.ctx)
    65  	ts.Require().ErrorIs(err, e)
    66  
    67  	mockedRelease.AssertExpectations(ts.T())
    68  }
    69  
    70  func (ts *DestroyTestSuite) TestDestroyNoReleases() {
    71  	tmpDir := ts.T().TempDir()
    72  	p := plan.New(filepath.Join(tmpDir, plan.Dir))
    73  	p.NewBody()
    74  
    75  	err := p.Down(ts.ctx)
    76  	ts.Require().NoError(err)
    77  }