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

     1  package plan
     2  
     3  import (
     4  	"path/filepath"
     5  	"testing"
     6  
     7  	"github.com/helmwave/helmwave/pkg/release"
     8  	"github.com/stretchr/testify/suite"
     9  )
    10  
    11  type BuildRepositoriesTestSuite struct {
    12  	suite.Suite
    13  }
    14  
    15  func TestBuildRepositoriesTestSuite(t *testing.T) {
    16  	t.Parallel()
    17  	suite.Run(t, new(BuildRepositoriesTestSuite))
    18  }
    19  
    20  func (ts *BuildRepositoriesTestSuite) TestReposEmpty() {
    21  	tmpDir := ts.T().TempDir()
    22  	p := New(filepath.Join(tmpDir, Dir))
    23  
    24  	p.NewBody()
    25  
    26  	repos, err := p.buildRepositories()
    27  	ts.Require().NoError(err)
    28  	ts.Require().Empty(repos)
    29  }
    30  
    31  func (ts *BuildRepositoriesTestSuite) TestLocalRepo() {
    32  	tmpDir := ts.T().TempDir()
    33  	p := New(filepath.Join(tmpDir, Dir))
    34  
    35  	repoName := ts.T().Name()
    36  
    37  	mockedRelease := &MockReleaseConfig{}
    38  	mockedRelease.On("Name").Return("redis")
    39  	mockedRelease.On("Repo").Return(repoName)
    40  	mockedRelease.On("Namespace").Return("defaultblabla")
    41  	mockedRelease.On("Uniq").Return()
    42  	mockedRelease.On("Chart").Return(&release.Chart{})
    43  
    44  	mockedRepo := &MockRepositoryConfig{}
    45  	mockedRepo.On("Name").Return(repoName)
    46  
    47  	p.SetRepositories(mockedRepo)
    48  	p.SetReleases(mockedRelease)
    49  
    50  	repos, err := p.buildRepositories()
    51  	ts.Require().NoError(err)
    52  	ts.Len(repos, 1)
    53  	ts.Contains(repos, mockedRepo)
    54  
    55  	mockedRepo.AssertExpectations(ts.T())
    56  	mockedRelease.AssertExpectations(ts.T())
    57  }
    58  
    59  func (ts *BuildRepositoriesTestSuite) TestUnusedRepo() {
    60  	tmpDir := ts.T().TempDir()
    61  	p := New(filepath.Join(tmpDir, Dir))
    62  
    63  	mockedRepo := &MockRepositoryConfig{}
    64  
    65  	p.SetRepositories(mockedRepo)
    66  
    67  	repos, err := p.buildRepositories()
    68  	ts.Require().NoError(err)
    69  	ts.Empty(repos)
    70  
    71  	mockedRepo.AssertExpectations(ts.T())
    72  }
    73  
    74  func (ts *BuildRepositoriesTestSuite) TestSuccess() {
    75  	tmpDir := ts.T().TempDir()
    76  	p := New(filepath.Join(tmpDir, Dir))
    77  
    78  	repoName := "blablanami"
    79  
    80  	mockedRelease := &MockReleaseConfig{}
    81  	mockedRelease.On("Name").Return("redis")
    82  	mockedRelease.On("Repo").Return(repoName)
    83  	mockedRelease.On("Namespace").Return("defaultblabla")
    84  	mockedRelease.On("Uniq").Return()
    85  	mockedRelease.On("Chart").Return(&release.Chart{})
    86  
    87  	mockedRepo := &MockRepositoryConfig{}
    88  	mockedRepo.On("Name").Return(repoName)
    89  
    90  	p.SetRepositories(mockedRepo)
    91  	p.SetReleases(mockedRelease)
    92  
    93  	repos, err := p.buildRepositories()
    94  	ts.Require().NoError(err)
    95  	ts.Require().Len(repos, 1)
    96  	ts.Require().Contains(repos, mockedRepo)
    97  
    98  	mockedRepo.AssertExpectations(ts.T())
    99  	mockedRelease.AssertExpectations(ts.T())
   100  }
   101  
   102  func (ts *BuildRepositoriesTestSuite) TestMissingRepo() {
   103  	tmpDir := ts.T().TempDir()
   104  	p := New(filepath.Join(tmpDir, Dir))
   105  
   106  	repoName := "blablanami"
   107  
   108  	mockedRelease := &MockReleaseConfig{}
   109  	mockedRelease.On("Name").Return("redis")
   110  	mockedRelease.On("Repo").Return(repoName)
   111  	mockedRelease.On("Namespace").Return("defaultblabla")
   112  	mockedRelease.On("Uniq").Return()
   113  	mockedRelease.On("Chart").Return(&release.Chart{})
   114  
   115  	p.SetReleases(mockedRelease)
   116  
   117  	repos, err := p.buildRepositories()
   118  	ts.Require().Error(err)
   119  	ts.Require().Empty(repos)
   120  
   121  	mockedRelease.AssertExpectations(ts.T())
   122  }
   123  
   124  func (ts *BuildRepositoriesTestSuite) TestRepoIsLocal() {
   125  	ts.Require().True(repoIsLocal(ts.T().TempDir()))
   126  }