def toggle(current_user, id): """ Toggle a cell's status swagger_from_file: src/swagger/game_toggle_cell.yml """ data = request.get_json(silent=True) schema = CellAction() try: game = find_game(current_user.id, id) service = GameService(game) except GameNotFoundException as gnf: return jsonify({"message": str(gnf)}), 404 try: coords = schema.load(data) except ValidationError as err: return jsonify(err.messages), 400 try: service.toggle(coords["row"], coords["column"]) update_game(current_user.id, id, service.game) except InvalidClearException as exc: return jsonify({"message": str(exc)}), 400 return jsonify(service.encode_game_info())
def new_game(current_user): """ Start a new game swagger_from_file: src/swagger/game_start.yml """ data = request.get_json(silent=True) schema = GameSettings() try: settings = schema.load(data) except ValidationError as err: return jsonify(err.messages), 400 rows = settings["rows"] columns = settings["columns"] mines = settings["mines"] service = GameService() try: service.start_game(current_user.id, rows, columns, mines) db.session.add(service.game) db.session.commit() except InvalidGameSettingsException as exc: return jsonify({"message": str(exc)}), 400 return jsonify(service.encode_game_info())
def test_encode_game_info(): service = GameService(get_mock_game()) service._generate_board(10, 10, 20) encoded = service.encode_game_info() assert isinstance(encoded["board"], list) assert encoded["status"] == "started" assert encoded["mines_left"] == 20 assert encoded["id"] == 1337
def retrieve_game(current_user, id): """ Retrieve an existing game swagger_from_file: src/swagger/game_retrieve.yml """ try: game = find_game(current_user.id, id) service = GameService(game) except GameNotFoundException as gnf: return jsonify({"message": str(gnf)}), 404 return jsonify(service.encode_game_info())