def test_get_pieces_ignoring_some(self): game_type = GameType() self.assertIsNotNone(game_type.rules) pieces = get_pieces(game_type.rules, ['king', 'pawn'])['white'] piece_names = ['rook', 'knight', 'bishop', 'queen'] self.assertEqual(list(pieces.keys()), piece_names) for move in pieces['bishop']['moves']: self.assertIn('directions', move) self.assertIn('conditions', move)
def test_post_conditions_success(self): game_type = GameType(name="name", description="conditions") game_type.save() pk = game_type.id key = 'conditions' expected = ['doesnt_land_on_piece', 'directional', 'cant_jump_pieces'] data = {'piece': 'king', 'index': '0', 'key': key, 'value': expected} url = reverse('chess-configuration-checkmark', args=[game_type.id]) response = self.client.post(url, data=data) self.assertEqual(response.status_code, 200) game_type = GameType.objects.get(pk=pk) self.assertEqual(game_type.rules['pieces']['king']['moves'][0][key], expected) game_type.delete()
def test_post_limits_unsupported_key(self): game_type = GameType(name="name", description="description") game_type.save() pk = game_type.id data = { 'piece': 'king', 'index': '0', 'key': 'unsupported_key', 'value': ['thor'], } url = reverse('chess-configuration-checkmark', args=[game_type.id]) response = self.client.post(url, data=data) self.assertEqual(response.status_code, 400) game_type = GameType.objects.get(pk=pk) game_type.delete()
def test_post_directions_success_when_rules_is_empty(self): game_type = GameType(name="name", description="description", rules={}) game_type.save() pk = game_type.id self.assertEqual(game_type.rules, {}) key = 'directions' expected = ['vertical', 'horizontal'] data = {'piece': 'king', 'index': '0', 'key': key, 'value': expected} url = reverse('chess-configuration-checkmark', args=[game_type.id]) response = self.client.post(url, data=data) self.assertEqual(response.status_code, 200) game_type = GameType.objects.get(pk=pk) self.assertEqual(game_type.rules['pieces']['king']['moves'][0][key], expected) game_type.delete()