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