github.com/SupersunnySea/draft@v0.16.0/pkg/storage/kube/configmap/store_test.go (about)

     1  package configmap
     2  
     3  import (
     4  	"context"
     5  	"reflect"
     6  	"testing"
     7  
     8  	"github.com/Azure/draft/pkg/storage"
     9  )
    10  
    11  func TestStoreDeleteBuilds(t *testing.T) {
    12  	var (
    13  		store = newMockConfigMapsTestFixture(t)
    14  		ctx   = context.Background()
    15  	)
    16  	switch objs, err := store.DeleteBuilds(ctx, "app1"); {
    17  	case err != nil:
    18  		t.Fatalf("failed to delete builds: %v", err)
    19  	case len(objs) != 4:
    20  		t.Fatalf("expected 4 deleted builds, got %d", len(objs))
    21  	}
    22  }
    23  
    24  func TestStoreDeleteBuild(t *testing.T) {
    25  	var (
    26  		store = newMockConfigMapsTestFixture(t)
    27  		ctx   = context.Background()
    28  	)
    29  	obj, err := store.DeleteBuild(ctx, "app1", "foo4")
    30  	if err != nil {
    31  		t.Fatalf("failed to delete build: %v", err)
    32  	}
    33  	assertEqual(t, "DeleteBuild", obj, objectStub("foo4", "bar4", []byte("foobar4")))
    34  }
    35  
    36  func TestStoreCreateBuild(t *testing.T) {
    37  	var (
    38  		store = newMockConfigMapsTestFixture(t)
    39  		ctx   = context.Background()
    40  	)
    41  	obj := objectStub("foo1", "bar1", []byte("foobar1"))
    42  	err := store.CreateBuild(ctx, "app2", obj)
    43  	if err != nil {
    44  		t.Fatalf("failed to create build: %v", err)
    45  	}
    46  	got, err := store.GetBuild(ctx, "app2", "foo1")
    47  	if err != nil {
    48  		t.Fatalf("failed to get storage object: %v", err)
    49  	}
    50  	assertEqual(t, "CreateBuild", got, obj)
    51  }
    52  
    53  func TestStoreUpdateBuild(t *testing.T) {
    54  	var (
    55  		store = newMockConfigMapsTestFixture(t)
    56  		ctx   = context.Background()
    57  	)
    58  	obj := objectStub("foo1", "bar1", []byte("foobar1"))
    59  	err := store.UpdateBuild(ctx, "app2", obj)
    60  	if err != nil {
    61  		t.Fatalf("failed to update build: %v", err)
    62  	}
    63  	got, err := store.GetBuild(ctx, "app2", "foo1")
    64  	if err != nil {
    65  		t.Fatalf("failed to get storage object: %v", err)
    66  	}
    67  	assertEqual(t, "UpdateBuild", got, obj)
    68  }
    69  
    70  func TestStoreGetBuilds(t *testing.T) {
    71  	var (
    72  		store = newMockConfigMapsTestFixture(t)
    73  		ctx   = context.Background()
    74  	)
    75  	switch got, err := store.GetBuilds(ctx, "app1"); {
    76  	case err != nil:
    77  		t.Fatalf("failed to get builds: %v", err)
    78  	case len(got) != 4:
    79  		t.Fatalf("expected 4 storage objects, got %d", len(got))
    80  	}
    81  }
    82  
    83  func TestStoreGetBuild(t *testing.T) {
    84  	var (
    85  		store = newMockConfigMapsTestFixture(t)
    86  		ctx   = context.Background()
    87  		want  = objectStub("foo1", "bar1", []byte("foobar1"))
    88  	)
    89  	got, err := store.GetBuild(ctx, "app1", "foo1")
    90  	if err != nil {
    91  		t.Fatalf("failed to get storage object: %v", err)
    92  	}
    93  	assertEqual(t, "GetBuild", got, want)
    94  }
    95  
    96  //
    97  // test fixtures / helpers
    98  //
    99  
   100  func newMockConfigMapsTestFixture(t *testing.T) *ConfigMaps {
   101  	var mocks = []struct {
   102  		appName string
   103  		objects []*storage.Object
   104  	}{
   105  		{
   106  			appName: "app1",
   107  			objects: []*storage.Object{
   108  				objectStub("foo1", "bar1", []byte("foobar1")),
   109  				objectStub("foo2", "bar2", []byte("foobar2")),
   110  				objectStub("foo3", "bar3", []byte("foobar3")),
   111  				objectStub("foo4", "bar4", []byte("foobar4")),
   112  			},
   113  		},
   114  	}
   115  	return NewConfigMapsWithMocks(t, mocks...)
   116  }
   117  
   118  func objectStub(buildID, release string, contextID []byte) *storage.Object {
   119  	return &storage.Object{
   120  		BuildID:   buildID,
   121  		Release:   release,
   122  		ContextID: contextID,
   123  	}
   124  }
   125  
   126  func assertEqual(t *testing.T, label string, a, b interface{}) {
   127  	if !reflect.DeepEqual(a, b) {
   128  		t.Errorf("failed equality for %s", label)
   129  	}
   130  }