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àoqueue-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_ipkhô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