From 130d7aec93d12efcf17b425e4411a70aa8b20193 Mon Sep 17 00:00:00 2001 From: Riandy Rahman Nugraha Date: Thu, 18 Jul 2024 06:57:24 +0700 Subject: [PATCH 1/2] fix: make GetBattle() & GetGame() in memory storage always return nil when there is no record in the memory; --- internal/driven/storage/memory/battlestrg/storage.go | 7 ++++++- internal/driven/storage/memory/gamestrg/storage.go | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/internal/driven/storage/memory/battlestrg/storage.go b/internal/driven/storage/memory/battlestrg/storage.go index 0feb5e6a..616c351e 100644 --- a/internal/driven/storage/memory/battlestrg/storage.go +++ b/internal/driven/storage/memory/battlestrg/storage.go @@ -11,7 +11,12 @@ type Storage struct { } func (s *Storage) GetBattle(ctx context.Context, gameID string) (*entity.Battle, error) { - b := s.data[gameID] + b, exist := s.data[gameID] + if !exist { + // if item is not found, returns nil as expected by battle interface + return nil, nil + } + return &b, nil } diff --git a/internal/driven/storage/memory/gamestrg/storage.go b/internal/driven/storage/memory/gamestrg/storage.go index 21a0431f..56e15d18 100644 --- a/internal/driven/storage/memory/gamestrg/storage.go +++ b/internal/driven/storage/memory/gamestrg/storage.go @@ -11,7 +11,12 @@ type Storage struct { } func (s *Storage) GetGame(ctx context.Context, gameID string) (*entity.Game, error) { - g := s.data[gameID] + g, exist := s.data[gameID] + if !exist { + // if item is not found, returns nil as expected by game interface + return nil, nil + } + return &g, nil } From 673b37ec14b3e1cdab3497f6c1101f6af1148362 Mon Sep 17 00:00:00 2001 From: Riandy Rahman Nugraha Date: Thu, 18 Jul 2024 07:16:00 +0700 Subject: [PATCH 2/2] test: ensure if battle not exist GetBattle() will return nil; ensure if game is not exists GetGame() will return nil; --- .../driven/storage/memory/battlestrg/storage_test.go | 9 +++++++-- internal/driven/storage/memory/gamestrg/storage_test.go | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/internal/driven/storage/memory/battlestrg/storage_test.go b/internal/driven/storage/memory/battlestrg/storage_test.go index a30dcedb..97a65bbf 100644 --- a/internal/driven/storage/memory/battlestrg/storage_test.go +++ b/internal/driven/storage/memory/battlestrg/storage_test.go @@ -16,12 +16,17 @@ func TestSaveGetBattle(t *testing.T) { strg := battlestrg.New() expBattle := newBattle() + // get battle, supposedly the returned battle is nil + battle, err := strg.GetBattle(context.Background(), expBattle.GameID) + require.NoError(t, err) + require.Nil(t, battle, "battle is not nil") + // save battle - err := strg.SaveBattle(context.Background(), *expBattle) + err = strg.SaveBattle(context.Background(), *expBattle) require.NoError(t, err) // get battle - battle, err := strg.GetBattle(context.Background(), expBattle.GameID) + battle, err = strg.GetBattle(context.Background(), expBattle.GameID) require.NoError(t, err) // ensure battle is equal to expBattle diff --git a/internal/driven/storage/memory/gamestrg/storage_test.go b/internal/driven/storage/memory/gamestrg/storage_test.go index 8069684d..b15f3e72 100644 --- a/internal/driven/storage/memory/gamestrg/storage_test.go +++ b/internal/driven/storage/memory/gamestrg/storage_test.go @@ -16,12 +16,17 @@ func TestSaveGetGame(t *testing.T) { strg := gamestrg.New() expGame := initNewGame() + // get game, supposedly the returned game is nil + game, err := strg.GetGame(context.Background(), expGame.ID) + require.NoError(t, err) + require.Nil(t, game, "game is not nil") + // save game - err := strg.SaveGame(context.Background(), *expGame) + err = strg.SaveGame(context.Background(), *expGame) require.NoError(t, err) // get game - game, err := strg.GetGame(context.Background(), expGame.ID) + game, err = strg.GetGame(context.Background(), expGame.ID) require.NoError(t, err) // ensure game is equal to newGame