github.com/helmwave/helmwave@v0.36.4-0.20240509190856-b35563eba4c6/pkg/plan/rollback_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/kubedog"
    10  	"github.com/helmwave/helmwave/pkg/plan"
    11  	"github.com/helmwave/helmwave/tests"
    12  	log "github.com/sirupsen/logrus"
    13  	"github.com/stretchr/testify/suite"
    14  )
    15  
    16  type RollbackTestSuite struct {
    17  	suite.Suite
    18  
    19  	ctx context.Context
    20  }
    21  
    22  func TestRollbackTestSuite(t *testing.T) {
    23  	t.Parallel()
    24  	suite.Run(t, new(RollbackTestSuite))
    25  }
    26  
    27  func (ts *RollbackTestSuite) SetupTest() {
    28  	ts.ctx = tests.GetContext(ts.T())
    29  }
    30  
    31  func (ts *RollbackTestSuite) TestRollback() {
    32  	tmpDir := ts.T().TempDir()
    33  	p := plan.New(filepath.Join(tmpDir, plan.Dir))
    34  
    35  	mockedRelease := &plan.MockReleaseConfig{}
    36  	mockedRelease.On("Rollback").Return(nil)
    37  	mockedRelease.On("Logger").Return(log.WithField("test", ts.T().Name()))
    38  
    39  	p.SetReleases(mockedRelease)
    40  
    41  	err := p.Rollback(ts.ctx, -1, &kubedog.Config{Enabled: false})
    42  	ts.Require().NoError(err)
    43  
    44  	mockedRelease.AssertExpectations(ts.T())
    45  }
    46  
    47  func (ts *RollbackTestSuite) TestRollbackError() {
    48  	tmpDir := ts.T().TempDir()
    49  	p := plan.New(filepath.Join(tmpDir, plan.Dir))
    50  
    51  	mockedRelease := &plan.MockReleaseConfig{}
    52  	e := errors.New(ts.T().Name())
    53  	mockedRelease.On("Rollback").Return(e)
    54  	mockedRelease.On("Logger").Return(log.WithField("test", ts.T().Name()))
    55  
    56  	p.SetReleases(mockedRelease)
    57  
    58  	err := p.Rollback(ts.ctx, -1, &kubedog.Config{Enabled: false})
    59  	ts.Require().ErrorIs(err, e)
    60  
    61  	mockedRelease.AssertExpectations(ts.T())
    62  }
    63  
    64  func (ts *RollbackTestSuite) TestRollbackNoReleases() {
    65  	tmpDir := ts.T().TempDir()
    66  	p := plan.New(filepath.Join(tmpDir, plan.Dir))
    67  	p.NewBody()
    68  
    69  	err := p.Rollback(ts.ctx, -1, &kubedog.Config{Enabled: false})
    70  	ts.Require().NoError(err)
    71  }