Exemple #1
0
def test_finish_round_balance(
    game_started: entities.Game,
    user: entities.User,
    user_2: entities.User,
    wine: entities.Wine,
    wine_2: entities.Wine,
):
    game_started.start_next_round()
    game_started.place_a_bid(
        entities.Bid(
            user=user,
            type=entities.Bid.Type.WINE,
            b_wine=wine,
            amount=100,
        ))
    game_started.place_a_bid(
        entities.Bid(
            user=user_2,
            type=entities.Bid.Type.WINE,
            b_wine=wine_2,
            amount=100,
        ))
    game_started.finish_current_round()
    assert game_started.get_player_state(user).balance == 2000
    assert game_started.get_player_state(user_2).balance == 900
Exemple #2
0
def test_end_round(wine, wine_2, user, user_2, user_3):
    r = game_entities.Round(quest_item=game_entities.QuestItem(wine=wine))

    assert r.is_ended is False

    r.place_a_bid(
        entities.Bid(user=user, amount=100, type=entities.Bid.Type.WINE, b_wine=wine)
    )
    with pytest.raises(errors.RoundIsStillActiveError):
        r.get_result_for_user(user)

    r.place_a_bid(
        entities.Bid(
            user=user_2, amount=100, type=entities.Bid.Type.WINE, b_wine=wine_2
        )
    )

    r.end()

    assert r.is_ended is True
    assert len(r._results) == 2

    with pytest.raises(errors.RoundIsEndedError):
        r.place_a_bid(
            entities.Bid(
                user=user_3, amount=100, type=entities.Bid.Type.WINE, b_wine=wine
            )
        )
    assert len(r._results) == 2

    # Second end should fail
    with pytest.raises(errors.RoundIsEndedError):
        r.end()
    assert len(r._results) == 2

    result_1 = r.get_result_for_user(user)
    assert result_1.is_right_answer is True
    assert result_1.prize == 1100

    result_2 = r.get_result_for_user(user_2)
    assert result_2.is_right_answer is False
    assert result_2.prize == 0

    result_3 = r.get_result_for_user(user_3)
    assert result_3 is None
Exemple #3
0
def test_bid_matched_part_of_world(user, wine_fixture, matched_expected):
    bid = entities.Bid(
        user=user,
        type=entities.Bid.Type.PART_OF_WORLD,
        b_part_of_world=entities.Country.PartOfWorld.OLD_WORLD,
        amount=100,
    )

    assert bid.is_matched(wine_fixture) is matched_expected
Exemple #4
0
def test_bid_matched_sugar(user, wine_fixture, matched_expected):
    bid = entities.Bid(
        user=user,
        type=entities.Bid.Type.SUGAR,
        b_sugar=entities.Wine.Sugar.SWEET,
        amount=100,
    )

    assert bid.is_matched(wine_fixture) is matched_expected
Exemple #5
0
def test_bid_matched_wine(user, wine, wine_fixture, matched_expected):
    bid = entities.Bid(
        user=user,
        type=entities.Bid.Type.WINE,
        b_wine=wine,
        amount=100,
    )

    assert bid.is_matched(wine_fixture) is matched_expected
Exemple #6
0
def test_bid_matched_country(user, country_old, wine_fixture,
                             matched_expected):
    bid = entities.Bid(
        user=user,
        type=entities.Bid.Type.COUNTRY,
        b_country=country_old,
        amount=100,
    )

    assert bid.is_matched(wine_fixture) is matched_expected
Exemple #7
0
def test_no_enough_money_for_a_bid(
    game_started: entities.Game,
    user: entities.User,
    wine: entities.Wine,
):
    with pytest.raises(errors.NoEnoughMoneyForBid):
        game_started.place_a_bid(
            entities.Bid(user=user,
                         type=entities.Bid.Type.WINE,
                         b_wine=wine,
                         amount=1001))
Exemple #8
0
def test_place_a_bid(
    game_started: entities.Game,
    user: entities.User,
    user_2: entities.User,
    wine: entities.Wine,
    wine_2: entities.Wine,
):
    game_started.start_next_round()
    start_balance = game_started.get_player_state(user).balance
    game_started.place_a_bid(
        entities.Bid(user=user,
                     type=entities.Bid.Type.WINE,
                     b_wine=wine,
                     amount=100))
    balance_after_bid = game_started.get_player_state(user).balance
    assert start_balance - balance_after_bid == 100

    with pytest.raises(errors.PlayerAlreadyPlacedBidError):
        game_started.place_a_bid(
            entities.Bid(
                user=user,
                type=entities.Bid.Type.SUGAR,
                b_sugar=entities.Wine.Sugar.SWEET,
                amount=100,
            ))
    assert game_started.get_player_state(user).balance == balance_after_bid

    start_balance_user_2 = game_started.get_player_state(user_2).balance
    game_started.place_a_bid(
        entities.Bid(user=user_2,
                     type=entities.Bid.Type.WINE,
                     b_wine=wine_2,
                     amount=200))

    assert game_started.get_player_state(user).balance == balance_after_bid
    assert start_balance_user_2 - game_started.get_player_state(
        user_2).balance == 200