Skip to content

Task 3-1: Integration Test - Gameplay Events

Phase: 3 - Testing Priority: Medium Depends on: task-1-2 Reference: docs/BountyHunter-Backend/details/feature-receiver-service/SPEC.md

Background

Test end-to-end: ControlServer publish gameplay message → receiver-service → IGameService → room state updated → WS event sent.

Test scenarios

START_GAME

  • [ ] Publish {mac_ip: "<macIp>", message_type: "START_GAME"} vào queue-control-server-gameplay
  • [ ] Verify: IGameService.startGameSuccess(macIp) được gọi đúng 1 lần
  • [ ] Verify: Room state updated trong Redis (confirm key và expected value)
  • [ ] Verify: Players nhận WS event GAME_START

END_GAME (win)

  • [ ] Publish {mac_ip: "<macIp>", message_type: "END_GAME", data: {game_res: 1}}
  • [ ] Verify: IGameService.endGameSuccess(macIp, 1, false) được gọi
  • [ ] Verify: Prize allocation message gửi vào prize queue

END_GAME (lose)

  • [ ] Publish {data: {game_res: 0}}
  • [ ] Verify: IGameService.endGameSuccess(macIp, 0, false) được gọi (không gửi prize)

COUNT_DOWN

  • [ ] Publish {message_type: "COUNT_DOWN", data: {count_down: 3}}
  • [ ] Verify: IGameService.countDownBeforeStart(macIp, 3) được gọi
  • [ ] Verify: Players nhận WS countdown event với count_down: 3

Unknown macIp

  • [ ] Publish với mac_ip không tồn tại trong DB
  • [ ] Verify: Không throw exception — listener vẫn alive
  • [ ] Verify: Log WARN [RECEIVER] Unknown macIp=... (liên quan task-2-2)

Invalid messageType

  • [ ] Publish với message_type: "INVALID_TYPE"
  • [ ] Verify: Logged warning/error, không exception, listener vẫn alive

Verification / Acceptance Criteria

  • [ ] START_GAME: IGameService.startGameSuccess() called, WS event delivered
  • [ ] END_GAME win: prize allocation triggered; END_GAME lose: no prize
  • [ ] COUNT_DOWN: countdown event delivered with correct count
  • [ ] Unknown macIp: graceful handling, WARN log, no crash
  • [ ] Invalid messageType: no crash, appropriate log

Files to Modify

  • Test files trong receiver-service/src/test/ hoặc integration test module