github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/source/source_test.go (about) 1 package source_test 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/google/go-cmp/cmp" 8 9 "github.com/kubri/kubri/internal/testsource" 10 "github.com/kubri/kubri/source" 11 ) 12 13 func TestSource(t *testing.T) { 14 want := []*source.Release{ 15 { 16 Name: "v1.1.0-pre", 17 Version: "v1.1.0-pre", 18 Prerelease: true, 19 }, 20 { 21 Name: "v1.0.0", 22 Version: "v1.0.0", 23 }, 24 { 25 Name: "v0.9.0", 26 Version: "v0.9.0", 27 }, 28 } 29 30 s := testsource.New([]*source.Release{ 31 {Version: "foo"}, 32 {Version: "v0.9.0"}, 33 {Version: "v1.1.0-pre"}, 34 {Version: "v1.0.0"}, 35 }) 36 37 ctx := context.Background() 38 39 t.Run("ListReleases", func(t *testing.T) { 40 tests := []struct { 41 msg string 42 want []*source.Release 43 opt *source.ListOptions 44 }{ 45 {"nil options", want[1:], nil}, 46 {"zero options", want[1:], &source.ListOptions{}}, 47 {"version >= v1", want[1:2], &source.ListOptions{Version: ">= v1"}}, 48 {"version >= v1; prerelease = true", want[:2], &source.ListOptions{Version: ">= v1", Prerelease: true}}, 49 } 50 51 for _, test := range tests { 52 got, _ := s.ListReleases(ctx, test.opt) 53 if diff := cmp.Diff(test.want, got); diff != "" { 54 t.Errorf("%s\n%s", test.msg, diff) 55 } 56 } 57 }) 58 59 t.Run("GetRelease", func(t *testing.T) { 60 got, _ := s.GetRelease(ctx, want[0].Version) 61 if diff := cmp.Diff(want[0], got); diff != "" { 62 t.Error(diff) 63 } 64 }) 65 66 t.Run("UploadAsset", func(t *testing.T) { 67 err := s.UploadAsset(ctx, want[0].Version, "test", []byte("test")) 68 if err != nil { 69 t.Error(err) 70 } 71 }) 72 73 t.Run("DownloadAsset", func(t *testing.T) { 74 got, err := s.DownloadAsset(ctx, want[0].Version, "test") 75 if err != nil { 76 t.Error(err) 77 } 78 if diff := cmp.Diff("test", string(got)); diff != "" { 79 t.Error(diff) 80 } 81 }) 82 }