From e0de59ec40a97f29a3a66f7d7b2b41b31b703dc0 Mon Sep 17 00:00:00 2001 From: Stewart Jingga Date: Thu, 15 Apr 2021 12:49:24 +0700 Subject: [PATCH] fix: fetching empty types returns null --- store/type_repository.go | 2 +- store/type_repository_test.go | 48 +++++++++++++++++++++++------------ 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/store/type_repository.go b/store/type_repository.go index d7b333d4..b0976c45 100644 --- a/store/type_repository.go +++ b/store/type_repository.go @@ -204,7 +204,7 @@ func (repo *TypeRepository) GetAll(ctx context.Context) ([]models.Type, error) { return nil, err } - var types []models.Type + types := []models.Type{} for _, rawType := range rawEntities { var serialised = new(bytes.Buffer) if err := json.NewEncoder(serialised).Encode(rawType); err != nil { diff --git a/store/type_repository_test.go b/store/type_repository_test.go index 038a4e30..96cd723e 100644 --- a/store/type_repository_test.go +++ b/store/type_repository_test.go @@ -322,23 +322,39 @@ func TestTypeRepository(t *testing.T) { } }) t.Run("GetAll", func(t *testing.T) { - repo := store.NewTypeRepository(esTestServer.NewClient()) - err := repo.CreateOrReplace(ctx, daggerType) - if err != nil { - t.Errorf("error writing to elasticsearch: %v", err) - return - } + t.Run("should return empty list if no type is available", func(t *testing.T) { + esClient := esTestServer.NewClient() + repo := store.NewTypeRepository(esClient) + _, err := esClient.Indices.Create("meta") + if err != nil { + t.Errorf("error creating meta index: %v", err) + return + } - types, err := repo.GetAll(ctx) - if err != nil { - t.Errorf("error getting type from repository: %v", err) - return - } - var expect = []models.Type{daggerType} - if reflect.DeepEqual(expect, types) == false { - t.Errorf("expected repository to return %#v, returned %#v instead", expect, types) - return - } + types, err := repo.GetAll(ctx) + if err != nil { + t.Errorf("error getting type from repository: %v", err) + return + } + + assert.Equal(t, []models.Type{}, types) + }) + t.Run("should return types from elasticsearch", func(t *testing.T) { + repo := store.NewTypeRepository(esTestServer.NewClient()) + err := repo.CreateOrReplace(ctx, daggerType) + if err != nil { + t.Errorf("error writing to elasticsearch: %v", err) + return + } + + types, err := repo.GetAll(ctx) + if err != nil { + t.Errorf("error getting type from repository: %v", err) + return + } + var expect = []models.Type{daggerType} + assert.Equal(t, expect, types) + }) }) t.Run("Delete", func(t *testing.T) { typeName := "delete-type"