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  }