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 }