Dynamic number of players
This commit is contained in:
@@ -36,7 +36,7 @@ class GameDashboardServiceTest extends TestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function testCreateSessionInitializesRightsAndPwd(): void
|
||||
public function testCreateSessionDoesNotInitializeSettings(): void
|
||||
{
|
||||
$game = new Game();
|
||||
$game->setStatus(GameStatus::OPEN);
|
||||
@@ -44,20 +44,23 @@ class GameDashboardServiceTest extends TestCase
|
||||
$user = new User();
|
||||
$user->setUsername('testuser');
|
||||
|
||||
$this->entityManager->expects($this->exactly(7))
|
||||
$this->entityManager->expects($this->exactly(2))
|
||||
->method('persist');
|
||||
// 1. Session, 2. Player, 3. SessionSetting (rights), 4. SessionSetting (pwd), 5. SessionSetting (chat tracking), 6. SessionSetting (verify codes), 7. SessionSetting (verification progress)
|
||||
// 1. Session, 2. Player
|
||||
|
||||
$session = $this->service->createSession($game, $user, false);
|
||||
|
||||
$this->assertInstanceOf(Session::class, $session);
|
||||
}
|
||||
|
||||
public function testJoinSessionInitializesRightsAndPwd(): void
|
||||
public function testJoinSessionDoesNotInitializeSettings(): void
|
||||
{
|
||||
$user = new User();
|
||||
$user->setUsername('testuser');
|
||||
$game = new Game();
|
||||
$game->setNumberOfPlayers(3);
|
||||
$session = new Session();
|
||||
$session->setGame($game);
|
||||
|
||||
$setting = new SessionSetting();
|
||||
$setting->setSession($session);
|
||||
@@ -71,15 +74,93 @@ class GameDashboardServiceTest extends TestCase
|
||||
$repo->method('findOneBy')
|
||||
->willReturn($setting);
|
||||
|
||||
$this->entityManager->expects($this->exactly(6))
|
||||
$this->entityManager->expects($this->exactly(1))
|
||||
->method('persist');
|
||||
// 1. Player, 2. SessionSetting (rights), 3. SessionSetting (pwd), 4. SessionSetting (chat tracking), 5. SessionSetting (verify codes), 6. SessionSetting (verification progress)
|
||||
// 1. Player
|
||||
|
||||
$result = $this->service->joinSession('abc-123', $user);
|
||||
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
public function testStartSessionAssignsScreensAndInitializesSettings(): void
|
||||
{
|
||||
$game = new Game();
|
||||
$game->setNumberOfPlayers(2);
|
||||
$session = new Session();
|
||||
$session->setGame($game);
|
||||
$session->setStatus(\App\Game\Enum\SessionStatus::CREATED);
|
||||
|
||||
$user1 = new User();
|
||||
$user1->setUsername('user1');
|
||||
$player1 = new Player();
|
||||
$player1->setUser($user1);
|
||||
$session->addPlayer($player1);
|
||||
|
||||
$user2 = new User();
|
||||
$user2->setUsername('user2');
|
||||
$player2 = new Player();
|
||||
$player2->setUser($user2);
|
||||
$session->addPlayer($player2);
|
||||
|
||||
// For each player (2):
|
||||
// Player (persist)
|
||||
// SessionSetting (rights)
|
||||
// SessionSetting (pwd)
|
||||
// SessionSetting (chat tracking)
|
||||
// SessionSetting (verify codes)
|
||||
// SessionSetting (verification progress)
|
||||
// Total = 2 * 6 = 12
|
||||
// PLUS Session (persist)
|
||||
// Total = 13
|
||||
|
||||
$this->entityManager->expects($this->exactly(13))
|
||||
->method('persist');
|
||||
|
||||
$result = $this->service->startSession($session);
|
||||
|
||||
$this->assertTrue($result);
|
||||
$this->assertEquals(\App\Game\Enum\SessionStatus::READY, $session->getStatus());
|
||||
$this->assertNotNull($player1->getScreen());
|
||||
$this->assertNotNull($player2->getScreen());
|
||||
$this->assertNotEquals($player1->getScreen(), $player2->getScreen());
|
||||
}
|
||||
|
||||
public function testStartSessionWithFourPlayers(): void
|
||||
{
|
||||
$game = new Game();
|
||||
$game->setNumberOfPlayers(4);
|
||||
$session = new Session();
|
||||
$session->setGame($game);
|
||||
$session->setStatus(\App\Game\Enum\SessionStatus::CREATED);
|
||||
|
||||
for ($i = 1; $i <= 4; $i++) {
|
||||
$user = new User();
|
||||
$user->setUsername('user' . $i);
|
||||
$player = new Player();
|
||||
$player->setUser($user);
|
||||
$session->addPlayer($player);
|
||||
}
|
||||
|
||||
// For each player (4):
|
||||
// Player (persist) + 5 Settings = 6 persists
|
||||
// Total = 4 * 6 = 24
|
||||
// PLUS Session (persist)
|
||||
// Total = 25
|
||||
|
||||
$this->entityManager->expects($this->exactly(25))
|
||||
->method('persist');
|
||||
|
||||
$result = $this->service->startSession($session);
|
||||
|
||||
$this->assertTrue($result);
|
||||
foreach ($session->getPlayers() as $player) {
|
||||
$this->assertNotNull($player->getScreen());
|
||||
$this->assertGreaterThanOrEqual(1, $player->getScreen());
|
||||
$this->assertLessThanOrEqual(4, $player->getScreen());
|
||||
}
|
||||
}
|
||||
|
||||
public function testLeaveSession(): void
|
||||
{
|
||||
$user = new User();
|
||||
|
||||
Reference in New Issue
Block a user