@@ -3,6 +3,8 @@ package tencentcr
33import (
44 "reflect"
55 "testing"
6+ "fmt"
7+ "strings"
68
79 tcr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tcr/v20190924"
810
@@ -161,41 +163,72 @@ func Test_adapter_listCandidateNamespaces(t *testing.T) {
161163 }
162164}
163165
164- func Test_adapter_DeleteManifest (t * testing.T ) {
165- type fields struct {
166- Adapter * native.Adapter
167- registryID * string
168- regionName * string
169- tcrClient * tcr.Client
170- pageSize * int64
171- client * commonhttp.Client
172- registry * model.Registry
166+ type mockAdapter struct {
167+ adapter
168+ deleteImageFunc func (namespace , repo , reference string ) error
169+ }
170+
171+ func (m * mockAdapter ) deleteImage (namespace , repo , reference string ) error {
172+ if m .deleteImageFunc != nil {
173+ return m .deleteImageFunc (namespace , repo , reference )
173174 }
175+ return nil
176+ }
177+
178+ func (m * mockAdapter ) DeleteManifest (repository , reference string ) error {
179+ parts := strings .Split (repository , "/" )
180+ if len (parts ) != 2 {
181+ return fmt .Errorf ("invalid repository format: %s" , repository )
182+ }
183+ namespace , repo := parts [0 ], parts [1 ]
184+ return m .deleteImage (namespace , repo , reference )
185+ }
186+
187+ func Test_adapter_DeleteManifest (t * testing.T ) {
174188 type args struct {
175189 repository string
176190 reference string
177191 }
192+
178193 tests := []struct {
179194 name string
180- fields fields
181195 args args
182196 wantErr bool
183197 }{
184- // TODO: Add test cases.
198+ {
199+ name : "invalid repository format" ,
200+ args : args {
201+ repository : "invalidRepo" ,
202+ reference : "latest" ,
203+ },
204+ wantErr : true ,
205+ },
206+ {
207+ name : "valid repository format should not error" ,
208+ args : args {
209+ repository : "demo/app" ,
210+ reference : "v1.0" ,
211+ },
212+ wantErr : false ,
213+ },
185214 }
215+
186216 for _ , tt := range tests {
187217 t .Run (tt .name , func (t * testing.T ) {
188- a := & adapter {
189- Adapter : tt .fields .Adapter ,
190- registryID : tt .fields .registryID ,
191- regionName : tt .fields .regionName ,
192- tcrClient : tt .fields .tcrClient ,
193- pageSize : tt .fields .pageSize ,
194- client : tt .fields .client ,
195- registry : tt .fields .registry ,
218+ a := & mockAdapter {}
219+
220+ if tt .name == "valid repository format should not error" {
221+ a .deleteImageFunc = func (namespace , repo , reference string ) error {
222+ if namespace != "demo" || repo != "app" || reference != "v1.0" {
223+ t .Errorf ("unexpected args: %s/%s:%s" , namespace , repo , reference )
224+ }
225+ return nil
226+ }
196227 }
197- if err := a .DeleteManifest (tt .args .repository , tt .args .reference ); (err != nil ) != tt .wantErr {
198- t .Errorf ("adapter.DeleteManifest() error = %v, wantErr %v" , err , tt .wantErr )
228+
229+ err := a .DeleteManifest (tt .args .repository , tt .args .reference )
230+ if (err != nil ) != tt .wantErr {
231+ t .Errorf ("DeleteManifest() error = %v, wantErr %v" , err , tt .wantErr )
199232 }
200233 })
201234 }
0 commit comments