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  }