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

     1  package plan_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/helmwave/helmwave/pkg/plan"
     8  	"github.com/helmwave/helmwave/pkg/release/uniqname"
     9  	"github.com/helmwave/helmwave/tests"
    10  	"github.com/stretchr/testify/suite"
    11  )
    12  
    13  type NewTestSuite struct {
    14  	suite.Suite
    15  
    16  	ctx context.Context
    17  }
    18  
    19  func TestNewTestSuite(t *testing.T) {
    20  	t.Parallel()
    21  	suite.Run(t, new(NewTestSuite))
    22  }
    23  
    24  func (ts *NewTestSuite) SetupTest() {
    25  	ts.ctx = tests.GetContext(ts.T())
    26  }
    27  
    28  func (ts *NewTestSuite) TestNew() {
    29  	dir := "/proc/1/bla"
    30  	p := plan.New(dir)
    31  
    32  	ts.Require().NotNil(p)
    33  	ts.Require().False(p.IsExist())
    34  	ts.Require().False(p.IsManifestExist())
    35  }
    36  
    37  func (ts *NewTestSuite) TestNewAndImportError() {
    38  	_, err := plan.NewAndImport(ts.ctx, "/proc/1/blabla")
    39  
    40  	ts.Require().Error(err)
    41  	ts.Require().ErrorContains(err, "failed to read plan file")
    42  }
    43  
    44  func (ts *NewTestSuite) TestLogger() {
    45  	p := plan.New(".")
    46  	body := p.NewBody()
    47  
    48  	rel := &plan.MockReleaseConfig{}
    49  	uniq := uniqname.UniqName("blabla@namespace")
    50  	rel.On("Uniq").Return(uniq)
    51  
    52  	repo := &plan.MockRepositoryConfig{}
    53  	repoName := "blarepo"
    54  	repo.On("Name").Return(repoName)
    55  
    56  	body.Releases = append(body.Releases, rel)
    57  	body.Repositories = append(body.Repositories, repo)
    58  
    59  	logger := p.Logger()
    60  
    61  	ts.Require().NotNil(logger)
    62  
    63  	ts.Require().Contains(logger.Data, "releases")
    64  	ts.Require().Equal([]string{uniq.String()}, logger.Data["releases"])
    65  
    66  	ts.Require().Contains(logger.Data, "repositories")
    67  	ts.Require().Equal([]string{repoName}, logger.Data["repositories"])
    68  
    69  	rel.AssertExpectations(ts.T())
    70  	repo.AssertExpectations(ts.T())
    71  }
    72  
    73  func (ts *NewTestSuite) TestJSONSchema() {
    74  	schema := plan.GenSchema()
    75  
    76  	ts.Require().NotNil(schema)
    77  
    78  	ts.NotNil(schema.Properties.GetPair("repositories"))
    79  	ts.NotNil(schema.Properties.GetPair("registries"))
    80  	ts.NotNil(schema.Properties.GetPair("releases"))
    81  	ts.NotNil(schema.Properties.GetPair("lifecycle"))
    82  }