135 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
| package state
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/require"
 | |
| )
 | |
| 
 | |
| func TestGetUnresolvedDependenciess(t *testing.T) {
 | |
| 	tests := []struct {
 | |
| 		name       string
 | |
| 		helmState  *HelmState
 | |
| 		wantErr    bool
 | |
| 		expectfile string
 | |
| 		expectDeps *UnresolvedDependencies
 | |
| 	}{
 | |
| 		{
 | |
| 			name: "oci chart",
 | |
| 			helmState: &HelmState{
 | |
| 				FilePath: "helmfile.yaml",
 | |
| 				ReleaseSetSpec: ReleaseSetSpec{
 | |
| 					Releases: []ReleaseSpec{
 | |
| 						{
 | |
| 							Name:    "foo",
 | |
| 							Chart:   "charts/abc",
 | |
| 							Version: "0.1.0",
 | |
| 						},
 | |
| 					},
 | |
| 					Repositories: []RepositorySpec{
 | |
| 						{
 | |
| 							Name: "charts",
 | |
| 							URL:  "localhost:5000/aaa",
 | |
| 							OCI:  true,
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			wantErr:    false,
 | |
| 			expectfile: "helmfile",
 | |
| 			expectDeps: &UnresolvedDependencies{
 | |
| 				deps: map[string][]unresolvedChartDependency{
 | |
| 					"abc": {
 | |
| 						{
 | |
| 							ChartName:         "abc",
 | |
| 							Repository:        "oci://localhost:5000/aaa",
 | |
| 							VersionConstraint: "0.1.0",
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, tt := range tests {
 | |
| 		t.Run(tt.name, func(t *testing.T) {
 | |
| 			f, ds, err := getUnresolvedDependenciess(tt.helmState)
 | |
| 			if tt.wantErr {
 | |
| 				require.Error(t, err, "getUnresolvedDependenciess() error = nil, wantErr")
 | |
| 			} else {
 | |
| 				require.NoErrorf(t, err, "getUnresolvedDependenciess() want no error, got %v", err)
 | |
| 			}
 | |
| 			require.Equalf(t, tt.expectfile, f, "getUnresolvedDependenciess() expect file %s, got %s", tt.expectfile, f)
 | |
| 			require.Equalf(t, tt.expectDeps, ds, "getUnresolvedDependenciess() expect deps %v, got %v", tt.expectDeps, ds)
 | |
| 		})
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestContains(t *testing.T) {
 | |
| 	tests := []struct {
 | |
| 		name     string
 | |
| 		dep      unresolvedChartDependency
 | |
| 		deps     map[string][]unresolvedChartDependency
 | |
| 		expected bool
 | |
| 	}{
 | |
| 		{
 | |
| 			name: "existing dependency with right item",
 | |
| 			dep: unresolvedChartDependency{
 | |
| 				ChartName:         "abc",
 | |
| 				Repository:        "oci://localhost:5000/aaa",
 | |
| 				VersionConstraint: "0.1.0",
 | |
| 			},
 | |
| 			deps: map[string][]unresolvedChartDependency{
 | |
| 				"abc": {
 | |
| 					{
 | |
| 						ChartName:         "abc",
 | |
| 						Repository:        "oci://localhost:5000/aaa",
 | |
| 						VersionConstraint: "0.1.0",
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: true,
 | |
| 		},
 | |
| 		{
 | |
| 			name: "existing dependency with empty item",
 | |
| 			dep: unresolvedChartDependency{
 | |
| 				ChartName:         "ghi",
 | |
| 				Repository:        "oci://localhost:5000/aaa",
 | |
| 				VersionConstraint: "0.1.0",
 | |
| 			},
 | |
| 			deps: map[string][]unresolvedChartDependency{
 | |
| 				"ghi": {},
 | |
| 			},
 | |
| 			expected: false,
 | |
| 		},
 | |
| 		{
 | |
| 			name: "non-existing dependency",
 | |
| 			dep: unresolvedChartDependency{
 | |
| 				ChartName:         "def",
 | |
| 				Repository:        "oci://localhost:5000/bbb",
 | |
| 				VersionConstraint: "0.2.0",
 | |
| 			},
 | |
| 			deps: map[string][]unresolvedChartDependency{
 | |
| 				"abc": {
 | |
| 					{
 | |
| 						ChartName:         "abc",
 | |
| 						Repository:        "oci://localhost:5000/aaa",
 | |
| 						VersionConstraint: "0.1.0",
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: false,
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, tt := range tests {
 | |
| 		t.Run(tt.name, func(t *testing.T) {
 | |
| 			d := &UnresolvedDependencies{
 | |
| 				deps: tt.deps,
 | |
| 			}
 | |
| 			actual := d.contains(tt.dep)
 | |
| 			require.Equal(t, tt.expected, actual)
 | |
| 		})
 | |
| 	}
 | |
| }
 |