gifs/api

Paddy 2014-10-17 Parent:18cb30e077ba

4:1bbbe113f599 Go to Latest

gifs/api/datastore_test.go

Upload is no longer async, memstorage is parallel-safe. Upload no longer needs to be run async (it can be run inside a goroutine), so it now returns stuff instead of taking a channel as an argument. This will make it easier to implement, as all the async stuff is an abstraction above, and therefore doesn't need to be worried about for each reimplementation. The memstorage type is no longer exported and can now be safely used by multiple goroutines, thanks to the sync package.

History
paddy@0 1 package api
paddy@0 2
paddy@0 3 import (
paddy@0 4 "testing"
paddy@0 5 "time"
paddy@0 6
paddy@2 7 "code.secondbit.org/uuid.hg"
paddy@0 8 )
paddy@0 9
paddy@0 10 var datastores = []Datastore{NewMemstore()}
paddy@0 11
paddy@0 12 func compareCollections(expectation, result Collection) (field string, expected, got interface{}) {
paddy@0 13 if !expectation.ID.Equal(result.ID) {
paddy@0 14 return "ID", expectation.ID, result.ID
paddy@0 15 }
paddy@0 16 if expectation.Name != result.Name {
paddy@0 17 return "name", expectation.Name, result.Name
paddy@0 18 }
paddy@0 19 if !expectation.Owner.Equal(result.Owner) {
paddy@0 20 return "owner", expectation.Owner, result.Owner
paddy@0 21 }
paddy@0 22 if !expectation.Created.Equal(result.Created) {
paddy@0 23 return "created", expectation.Created, result.Created
paddy@0 24 }
paddy@0 25 return "", nil, nil
paddy@0 26 }
paddy@0 27
paddy@0 28 func TestCreateCollection(t *testing.T) {
paddy@0 29 for pos, datastore := range datastores {
paddy@0 30 expectation := Collection{
paddy@0 31 ID: uuid.NewID(),
paddy@0 32 Name: "Test Collection",
paddy@0 33 Owner: uuid.NewID(),
paddy@0 34 Created: time.Now(),
paddy@0 35 }
paddy@0 36 err := datastore.CreateCollection(expectation)
paddy@0 37 if err != nil {
paddy@0 38 t.Errorf("Error creating collection in datastore %d: %s\n", pos, err)
paddy@0 39 }
paddy@0 40 result, err := datastore.GetCollectionByID(expectation.ID)
paddy@0 41 if err != nil {
paddy@0 42 t.Errorf("Error retrieving collection in datastore %d: %s\n", pos, err)
paddy@0 43 }
paddy@0 44 field, exp, got := compareCollections(expectation, result)
paddy@0 45 if field != "" {
paddy@0 46 t.Errorf("Collection did not meet expectations for datastore %d. Expected %v for %s, got %v.", pos, exp, field, got)
paddy@0 47 }
paddy@0 48 }
paddy@0 49 }
paddy@2 50
paddy@2 51 func TestUpdateCollection(t *testing.T) {
paddy@2 52 }
paddy@2 53
paddy@2 54 func TestUpdateCollectionCollectionNotFound(t *testing.T) {
paddy@2 55 }
paddy@2 56
paddy@2 57 func TestGetCollectionByDomain(t *testing.T) {
paddy@2 58 }
paddy@2 59
paddy@2 60 func TestGetCollectionByDomainCollectionNotFound(t *testing.T) {
paddy@2 61 }
paddy@2 62
paddy@2 63 func TestGetCollectionByID(t *testing.T) {
paddy@2 64 }
paddy@2 65
paddy@2 66 func TestGetCollectionByIDCollectionNotFound(t *testing.T) {
paddy@2 67 }
paddy@2 68
paddy@2 69 func TestGetCollectionsByUser(t *testing.T) {
paddy@2 70 }
paddy@2 71
paddy@2 72 func TestGetCollectionsByUserNoCollections(t *testing.T) {
paddy@2 73 }
paddy@2 74
paddy@2 75 func TestAddDomainToCollection(t *testing.T) {
paddy@2 76 }
paddy@2 77
paddy@2 78 func TestAddDomainToCollectionDomainAlreadyExists(t *testing.T) {
paddy@2 79 }
paddy@2 80
paddy@2 81 func TestAddDomainToCollectionCollectionNotFound(t *testing.T) {
paddy@2 82 }
paddy@2 83
paddy@2 84 func TestRemoveDomainFromCollection(t *testing.T) {
paddy@2 85 }
paddy@2 86
paddy@2 87 func TestRemoveDomainFromCollectionDomainNotFound(t *testing.T) {
paddy@2 88 }
paddy@2 89
paddy@2 90 func TestGetDomainsByCollection(t *testing.T) {
paddy@2 91 }
paddy@2 92
paddy@2 93 func TestGetDomainsByCollectionNoResults(t *testing.T) {
paddy@2 94 }
paddy@2 95
paddy@2 96 func TestDeleteCollection(t *testing.T) {
paddy@2 97 }
paddy@2 98
paddy@2 99 func TestDeleteCollectionCollectionNotFound(t *testing.T) {
paddy@2 100 }
paddy@2 101
paddy@2 102 func TestGetItemsByCollectionDomain(t *testing.T) {
paddy@2 103 }
paddy@2 104
paddy@2 105 func TestGetItemsByCollectionDomainCollectionNotFound(t *testing.T) {
paddy@2 106 }
paddy@2 107
paddy@2 108 func TestGetItemsByCollectionDomainNoResults(t *testing.T) {
paddy@2 109 }
paddy@2 110
paddy@2 111 func TestGetItemsByCollectionID(t *testing.T) {
paddy@2 112 }
paddy@2 113
paddy@2 114 func TestGetItemsByCollectionIDCollectionNotFound(t *testing.T) {
paddy@2 115 }
paddy@2 116
paddy@2 117 func TestGetItemsByCollectionIDNoResults(t *testing.T) {
paddy@2 118 }
paddy@2 119
paddy@2 120 func TestAddItemToCollection(t *testing.T) {
paddy@2 121 }
paddy@2 122
paddy@2 123 func TestAddItemToCollectionCollectionNotFound(t *testing.T) {
paddy@2 124 }
paddy@2 125
paddy@2 126 func TestAddItemToCollectionItemAlreadyExists(t *testing.T) {
paddy@2 127 }
paddy@2 128
paddy@2 129 func TestGetItemByName(t *testing.T) {
paddy@2 130 }
paddy@2 131
paddy@2 132 func TestGetItemByNameCollectionNotFound(t *testing.T) {
paddy@2 133 }
paddy@2 134
paddy@2 135 func TestGetItemByNameItemNotFound(t *testing.T) {
paddy@2 136 }
paddy@2 137
paddy@2 138 func TestDeleteItem(t *testing.T) {
paddy@2 139 }
paddy@2 140
paddy@2 141 func TestDeleteItemItemNotFound(t *testing.T) {
paddy@2 142 }