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
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
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
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
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
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
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))
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