def test_create_should_uppercase_word( self ): game = GameSerializer().create( {'word': 'balloon'} ) self.assertEquals( game.word, 'BALLOON') with patch.object( RandomWord, 'getRandomWord' ) as mockGetRandomWord: mockGetRandomWord.return_value = 'randomballoon' game = GameSerializer().create( {} ) self.assertEquals( game.word, 'RANDOMBALLOON')
def test_update_should_call_handleGuess_with_guessed_letter( self ): mock_game = Mock( letters_available = ['A', 'B', 'C'] ) request_data = { 'letters_guessed': 'B' } serializer = GameSerializer() with patch.object( ModelSerializer, 'update' ) as mock_super_create: mock_super_create.return_value = None serializer.update( mock_game, request_data ) mock_game.handleGuess.assert_called_with( 'B' )
def test_validate_letters_guessed_should_return_valid_guess( self ): serializer = GameSerializer() serializer.instance = Mock( is_game_over = False, letters_available = ['A', 'B'] ) self.assertEquals(['B'], serializer.validate_letters_guessed(['B']))
def test_validate_letters_guessed_should_raise_error_when_guess_not_available( self ): serializer = GameSerializer() serializer.instance = Mock( letters_available = ['A', 'B'] ) with self.assertRaises( ValidationError ): serializer.validate_letters_guessed( ['C'] )
def test_validate_letters_guessed_should_raise_error_guess_is_repeated( self ): serializer = GameSerializer() serializer.instance = Mock( ) with self.assertRaises( ValidationError ): serializer.validate_letters_guessed( ['C', 'C'] )
def test_validate_letters_guessed_should_raise_error_when_guess_is_not_single_letter( self ): serializer = GameSerializer() serializer.instance = Mock( ) with self.assertRaises( ValidationError ): serializer.validate_letters_guessed( ['CAR'] )
def test_validate_letters_guessed_should_stop_guesses_when_game_over( self ): serializer = GameSerializer() serializer.instance = Mock( is_game_over = True ) with self.assertRaises( ValidationError ): serializer.validate_letters_guessed( ['C'] )
def test_create_should_init_guessed_word_state_to_be_empty_strings_for_each_word_char( self ): game = GameSerializer().create( {'word': 'BALLOON'} ) self.assertEquals( len(game.guessed_word_state), len('BALLOON')) self.assertEquals( len( [c for c in game.guessed_word_state if c != ''] ), 0)
def test_create_should_pick_random_word_when_none_given( self ): with patch.object( RandomWord, 'getRandomWord' ) as mockGetRandomWord: mockGetRandomWord.return_value = 'TESTWORD' game = GameSerializer().create( {} ) self.assertEquals( game.word, 'TESTWORD')
def test_create_should_create_game_with_given_word( self ): game = GameSerializer().create( {'word': 'BALLOON'} ) self.assertEquals( game.word, 'BALLOON')