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 }