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

     1  package plan_test
     2  
     3  import (
     4  	"errors"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	"github.com/helmwave/helmwave/pkg/plan"
     9  	log "github.com/sirupsen/logrus"
    10  	"github.com/stretchr/testify/suite"
    11  	"helm.sh/helm/v3/pkg/chart"
    12  	helmRelease "helm.sh/helm/v3/pkg/release"
    13  )
    14  
    15  type StatusTestSuite struct {
    16  	suite.Suite
    17  }
    18  
    19  func (s *StatusTestSuite) TestStatusByName() {
    20  	tmpDir := s.T().TempDir()
    21  	p := plan.New(filepath.Join(tmpDir, plan.Dir))
    22  
    23  	mockedRelease := &plan.MockReleaseConfig{}
    24  	mockedRelease.On("Name").Return("redis")
    25  	mockedRelease.On("Namespace").Return("defaultblabla")
    26  	mockedRelease.On("Uniq").Return()
    27  	mockedRelease.On("Logger").Return(log.WithField("test", s.T().Name()))
    28  	r := &helmRelease.Release{
    29  		Info: &helmRelease.Info{},
    30  		Chart: &chart.Chart{
    31  			Metadata: &chart.Metadata{},
    32  		},
    33  	}
    34  	mockedRelease.On("Status").Return(r, nil)
    35  
    36  	p.SetReleases(mockedRelease)
    37  
    38  	err := p.Status(string(mockedRelease.Uniq()))
    39  	s.Require().NoError(err)
    40  
    41  	err = p.Status()
    42  	s.Require().NoError(err)
    43  
    44  	mockedRelease.AssertExpectations(s.T())
    45  }
    46  
    47  // TestStatusFailedRelease tests that Status method should just skip releases that fail Status method.
    48  func (s *StatusTestSuite) TestStatusFailedRelease() {
    49  	tmpDir := s.T().TempDir()
    50  	p := plan.New(filepath.Join(tmpDir, plan.Dir))
    51  
    52  	mockedRelease := &plan.MockReleaseConfig{}
    53  	mockedRelease.On("Status").Return(&helmRelease.Release{}, errors.New(s.T().Name()))
    54  	mockedRelease.On("Logger").Return(log.WithField("test", s.T().Name()))
    55  
    56  	p.SetReleases(mockedRelease)
    57  
    58  	err := p.Status()
    59  	s.Require().NoError(err)
    60  
    61  	mockedRelease.AssertExpectations(s.T())
    62  }
    63  
    64  func (s *StatusTestSuite) TestStatusNoReleases() {
    65  	tmpDir := s.T().TempDir()
    66  	p := plan.New(filepath.Join(tmpDir, plan.Dir))
    67  	p.NewBody()
    68  
    69  	err := p.Status()
    70  	s.Require().NoError(err)
    71  }
    72  
    73  func TestStatusTestSuite(t *testing.T) {
    74  	t.Parallel()
    75  	suite.Run(t, new(StatusTestSuite))
    76  }