Skip to content

Commit

Permalink
Merge pull request #65 from Haraj-backend/fix/error-409-start-battle-…
Browse files Browse the repository at this point in the history
…memory

Fix: Error 409 When Starting Battle using Rest Memory Variant
  • Loading branch information
riandyrn authored Jul 18, 2024
2 parents 51cea85 + 673b37e commit 25ca900
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 6 deletions.
7 changes: 6 additions & 1 deletion internal/driven/storage/memory/battlestrg/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down
9 changes: 7 additions & 2 deletions internal/driven/storage/memory/battlestrg/storage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 6 additions & 1 deletion internal/driven/storage/memory/gamestrg/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down
9 changes: 7 additions & 2 deletions internal/driven/storage/memory/gamestrg/storage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 25ca900

Please sign in to comment.