Exemplo n.º 1
0
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())
Exemplo n.º 2
0
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())
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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())