github.com/replicatedhq/ship@v0.55.0/pkg/state/models_test.go (about) 1 package state 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 "github.com/replicatedhq/ship/pkg/api" 9 ) 10 11 func TestState_ReleaseMetadata(t *testing.T) { 12 tests := []struct { 13 name string 14 V1 *V1 15 want *api.ReleaseMetadata 16 }{ 17 { 18 name: "all nil", 19 V1: nil, 20 want: nil, 21 }, 22 { 23 name: "no upstream contents", 24 V1: &V1{ReleaseName: "no upstream contents"}, 25 want: nil, 26 }, 27 { 28 name: "basic upstream contents", 29 V1: &V1{ 30 UpstreamContents: &UpstreamContents{ 31 AppRelease: &ShipRelease{ID: "abc"}, 32 }, 33 }, 34 want: &api.ReleaseMetadata{ 35 ReleaseID: "abc", 36 Images: []api.Image{}, 37 GithubContents: []api.GithubContent{}, 38 }, 39 }, 40 { 41 name: "upstream contents with metadata", 42 V1: &V1{ 43 UpstreamContents: &UpstreamContents{ 44 AppRelease: &ShipRelease{ID: "abc"}, 45 }, 46 Metadata: &Metadata{ 47 CustomerID: "xyz", 48 License: License{ 49 ID: "licenseID", 50 }, 51 }, 52 }, 53 want: &api.ReleaseMetadata{ 54 ReleaseID: "abc", 55 Images: []api.Image{}, 56 GithubContents: []api.GithubContent{}, 57 CustomerID: "xyz", 58 License: api.License{ 59 ID: "licenseID", 60 }, 61 }, 62 }, 63 { 64 name: "upstream contents with actual contents", 65 V1: &V1{ 66 UpstreamContents: &UpstreamContents{ 67 AppRelease: &ShipRelease{ 68 ID: "abc", 69 GithubContents: []GithubContent{ 70 { 71 Repo: "testRepo", 72 Path: "testPath", 73 Ref: "testRef", 74 Files: []GithubFile{ 75 { 76 Name: "testFileName", 77 Path: "testFilePath", 78 Sha: "testFileSha", 79 Size: 1234, 80 Data: "testFileData", 81 }, 82 }, 83 }, 84 }, 85 }, 86 }, 87 }, 88 want: &api.ReleaseMetadata{ 89 ReleaseID: "abc", 90 Images: []api.Image{}, 91 GithubContents: []api.GithubContent{ 92 { 93 Repo: "testRepo", 94 Path: "testPath", 95 Ref: "testRef", 96 Files: []api.GithubFile{ 97 { 98 Name: "testFileName", 99 Path: "testFilePath", 100 Sha: "testFileSha", 101 Size: 1234, 102 Data: "testFileData", 103 }, 104 }, 105 }, 106 }, 107 }, 108 }, 109 } 110 for _, tt := range tests { 111 t.Run(tt.name, func(t *testing.T) { 112 req := require.New(t) 113 v := State{ 114 V1: tt.V1, 115 } 116 got := v.ReleaseMetadata() 117 118 req.Equal(tt.want, got) 119 }) 120 } 121 }