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 }