コード例 #1
0
ファイル: Game101Test.php プロジェクト: thuliumcc/dartboard
 public function setUp()
 {
     parent::setUp();
     /** @var User $user */
     $user = User::create(['login' => 'A']);
     $this->game = $game = Game::create(['type' => '101']);
     $this->gameUser = $gameUser = GameUser::create(['game_id' => $game->getId(), 'user_id' => $user->getId()]);
     $game->updateAttributes(['current_game_user_id' => $gameUser->getId()]);
 }
コード例 #2
0
ファイル: Game.php プロジェクト: thuliumcc/dartboard
 /**
  * @param int $id
  * @return GameUser
  */
 public function addPlayer($id)
 {
     $ordinal = GameUser::count(['game_id' => $this->id]);
     /** @var GameUser $player */
     $player = GameUser::create(['game_id' => $this->id, 'user_id' => $id, 'ordinal' => $ordinal]);
     $player->game = $this;
     if ($ordinal == 0) {
         $this->current_game_user_id = $player->id;
         $this->update();
     }
     return $player;
 }
コード例 #3
0
ファイル: CricketTest.php プロジェクト: thuliumcc/dartboard
 /**
  * @test
  */
 public function shouldCalculateIsNotShittyRound()
 {
     //given
     $user = User::create(['login' => 'A']);
     $game = Game::create(['type' => 'cricket']);
     $gameUser = GameUser::create(['game_id' => $game->id, 'user_id' => $user->getId()]);
     $game->updateAttributes(['current_game_user_id' => $gameUser->getId()]);
     Hit::createFor('15t', $gameUser);
     Hit::createFor('16t', $gameUser);
     Hit::createFor('17t', $gameUser);
     //when
     $isShittyRound = $gameUser->isShittyRound();
     //then
     $this->assertFalse($isShittyRound);
 }
コード例 #4
0
ファイル: UserTest.php プロジェクト: thuliumcc/dartboard
 /**
  * @test
  */
 public function shouldReturnMaxWonStreak()
 {
     //given
     $user1 = User::create(['login' => 'A']);
     $user2 = User::create(['login' => 'B']);
     $game1 = Game::create();
     $gameUser1 = GameUser::create(['game_id' => $game1->id, 'user_id' => $user1->id]);
     $game1->updateAttributes(['winner_game_user_id' => $gameUser1->id, 'finished' => true]);
     $game2 = Game::create();
     $gameUser2 = GameUser::create(['game_id' => $game2->id, 'user_id' => $user1->id]);
     $game2->updateAttributes(['winner_game_user_id' => $gameUser2->id, 'finished' => true]);
     $game3 = Game::create();
     $gameUser3 = GameUser::create(['game_id' => $game3->id, 'user_id' => $user2->id]);
     $game3->updateAttributes(['winner_game_user_id' => $gameUser3->id, 'finished' => true]);
     $game4 = Game::create();
     $game4->addPlayer($user1->id);
     $game4->addPlayer($user2->id);
     //when
     $maxWonStreak = $user1->maxWonStreak();
     //then
     $this->assertEquals(2, $maxWonStreak);
 }
コード例 #5
0
ファイル: GameUserTest.php プロジェクト: thuliumcc/dartboard
 /**
  * @test
  * @dataProvider hits
  */
 public function shouldReturnIsScoredIfFieldIsInRange($hit, $isScored)
 {
     //given
     $user = User::create(['login' => 'A']);
     $game = Game::create(['type' => 'cricket']);
     $gameUser = GameUser::create(['game_id' => $game->id, 'user_id' => $user->getId()]);
     $game->updateAttributes(['current_game_user_id' => $gameUser->getId()]);
     //when
     $hit = Hit::createFor($hit, $gameUser);
     //then
     $this->assertEquals($isScored, $hit->isScored());
 }
コード例 #6
0
ファイル: GameTest.php プロジェクト: thuliumcc/dartboard
 /**
  * @test
  */
 public function shouldGetCorrectNextPlayerWhenPlayerIsInMultipleGames()
 {
     //given
     /** @var User $user1 */
     $user1 = User::create(['login' => 'A']);
     /** @var User $user2 */
     $user2 = User::create(['login' => 'B']);
     $game1 = Game::create();
     $game1->addPlayer($user1->getId());
     $game1->addPlayer($user2->getId());
     $game1->updateAttributes(['finished' => true]);
     $game2 = Game::create();
     $gameUser1 = GameUser::create(['game_id' => $game2->id, 'user_id' => $user1->getId(), 'ordinal' => 0]);
     $gameUser2 = GameUser::create(['game_id' => $game2->id, 'user_id' => $user2->getId(), 'ordinal' => 1]);
     $game2->updateAttributes(['current_game_user_id' => $gameUser1->getId()]);
     //when
     $game2->nextPlayer();
     //then
     $game2->reload();
     $this->assertEquals($gameUser2->getId(), $game2->current_game_user_id);
 }