def test_property_provider_returns_valid_property_when_there_are_more_players( ): # GIVEN Proxy() player = PlayerFactory() player2 = PlayerFactory(game_id=player.game_id, order=1) property = PropertyFactory(player=player, game_id=player.game_id) property2 = PropertyFactory(player=player, game_id=player2.game_id) Proxy().load() # WHEN provided_properties = PropertyProvider().get_player_properties( game_id=player.game_id, player_id=player.id) # THEN assert provided_properties[0] == property
def test_sell_building_when_success(): Proxy() player = PlayerFactory(position=3, move=1) card = CardFactory(position=7) property = PropertyFactory(player=player, game=player.game, card=card, buildings=2, deposited=False) Proxy().load(full=True) response = WebsocketService().sell_building(player.game_id, player.user_id, card.id) assert response['status'] == 1000
def valid_property(player=None, buildings=0, deposited=False, selling_price=0): if player == None: owner = valid_player() else: owner = player return PropertyFactory(player=owner, buildings=buildings, deposited=deposited, selling_price=selling_price)
def test_tax_when_success(): Proxy() game = GameFactory() player = PlayerFactory(game=game, position=1) card = CardFactory(position=1) property = PropertyFactory(player=player, game=game, card=card) Proxy().load(full=True) response = WebsocketService().tax(player.game_id, player.user_id) assert response['status'] == 1000
def test_offer_when_card_is_owned(): Proxy() game = GameFactory() card = CardFactory(position=1) property = PropertyFactory(game_id=game.id,card_id=card.id) player = PlayerFactory(game_id=game.id,position=1) Proxy().load(full=True) response = WebsocketService().offer(player.game_id, player.user_id) assert response['status'] == 2006
def test_property_provider_returns_if_property_with_card_id_not_exist(): # GIVEN Proxy() game = GameFactory() property = PropertyFactory(game_id=game.id, card_id=1) Proxy().load() # WHEN if_exist = PropertyProvider().check_if_exist(game_id=game.id, card_id=2) # THEN assert if_exist == False
def test_buy_building_when_player_is_not_owner(): # GIVEN Proxy() player = PlayerFactory(balance=5000, position=3, move=1) card = CardFactory(position=3) property = PropertyFactory(card=card, game=player.game, deposited=False) Proxy().load(full=True) [property, status] = BuildingService().buy_building(player.game_id, player.user_id) assert status == 2004
def test_create_offer_when_success(): Proxy() user = UserFactory() game = GameFactory() player = PlayerFactory(user=user, game=game, move=1) card = CardFactory(position=5) user_property = PropertyFactory(card=card, player=player, game=game) Proxy().load(full=True) response = WebsocketService().create_offer(player.game_id, player.user_id, card_id=card.id, price=5000) assert response['status'] == 1000
def test_property_provider_returns_valid_property(): # GIVEN Proxy() player = PlayerFactory() property = PropertyFactory(player=player, game_id=player.game_id) Proxy().load() # WHEN provided_properties = PropertyProvider().get_player_properties( game_id=player.game_id, player_id=player.id) # THEN assert provided_properties[0] == property
def test_accept_offer_when_success(): Proxy() user = UserFactory() game = GameFactory() player = PlayerFactory(user=user, game=game, balance=6000) card = CardFactory(position=5) old_owner = PlayerFactory(game=game, balance=1000) user_property = PropertyFactory(card=card, game=game, player=old_owner, selling_price=5000) Proxy().load(full=True) response = WebsocketService().accept_offer(player.game_id, player.user_id, card_id=card.id) assert response['status'] == 1000
def test_cancel_offer_when_success(): # GIVEN Proxy() user = UserFactory() # WHEN game = GameFactory() player = PlayerFactory(user=user, game=game) card = CardFactory(position=5) user_property = PropertyFactory(card=card, player=player, game=game, selling_price=5000) Proxy().load(full=True) response = WebsocketService().cancel_offer(player.game_id, player.user_id, card_id=card.id) assert response['status'] == 1000
def test_deposit_when_valid(): # GIVEN Proxy() game = GameFactory() card = CardFactory(position=1) player = PlayerFactory(game_id=game.id, move=1) user_property = PropertyFactory(player=player, card=card, game=game, deposited=False) Proxy().load(full=True) # WHEN response = WebsocketService().deposit(user_id=player.user.id, game_id=game.id, card_id=card.id) # THEN assert response['status'] == 1000
def test_is_property_taken_returns_true(): # GIVEN Proxy() game = GameFactory() card = CardFactory() player = PlayerFactory(game_id=game.id) property = PropertyFactory(player=player, game_id=game.id, card_id=card.id) Proxy().load() # WHEN is_taken = PropertyProvider().is_property_taken(game_id=game.id, card_id=card.id) # THEN assert is_taken == True
def test_cancel_offer_when_already_not_for_sale(): # GIVEN Proxy() user = UserFactory() # WHEN game = GameFactory() player = PlayerFactory(user=user, game=game, move=1) card = CardFactory(position=5) user_property = PropertyFactory(card=card, player=player, game=game) Proxy().load(full=True) [prop, status] = TradingService().cancel_offer(game.id, user.id, card.id) # THEN assert prop == None assert status == 2013
def test_property_provider_returns_if_property_with_card_id_not_exist_in_specified_game( ): # GIVEN Proxy() game = GameFactory() game2 = GameFactory() card = CardFactory() property = PropertyFactory(game_id=game2.id, card_id=card.id) Proxy().load() # WHEN if_exist = PropertyProvider().check_if_exist(game_id=game.id, card_id=card.id) # THEN assert if_exist == False
def test_get_already_owned_card_to_buy(): # GIVEN Proxy() game = GameFactory() card = CardFactory(position=99) property = PropertyFactory(game_id=game.id, card_id=card.id) user = UserFactory() player = PlayerFactory(game_id=game.id, user_id=user.id, position=99) Proxy().load(full=True) # WHEN get_card = CardService().get_available_card_to_buy(game_id=game.id, user_id=user.id) # THEN assert get_card == (None, 2006)
def test_tax_when_success(): Proxy() game = GameFactory() init_balance = 1000 cost = 100 player = PlayerFactory(game=game, position=1, balance=init_balance) player2 = PlayerFactory(game=game, balance=init_balance) charge = ChargeFactory(zero_apartments=cost) card = CardFactory(position=1, charge=charge) property = PropertyFactory(player=player2, game=game, card=card, buildings=0) Proxy().load(full=True) response = WebsocketService().tax(player.game_id, player.user_id) assert PlayerProvider().get_player_with_id(player.id).balance == init_balance-cost assert PlayerProvider().get_player_with_id(player2.id).balance == init_balance+cost
def test_repurchase_when_not_owner(): # GIVEN Proxy() game = GameFactory() card = CardFactory(position=1) player = PlayerFactory(game_id=game.id, move=1) user_property = PropertyFactory(card=card, game=game, deposited=False) Proxy().load(full=True) # WHEN deposit_property, status = DepositService().repurchase( user_id=player.user.id, game_id=game.id, card_id=card.id) # THEN assert deposit_property == None assert status == 2004
def test_buy_building_when_buildings_limit_reached(): # GIVEN Proxy() player = PlayerFactory(balance=5000, position=3) card = CardFactory(position=3) property = PropertyFactory(card=card, player=player, game=player.game, buildings=5, deposited=False) Proxy().load(full=True) [property, status] = BuildingService().buy_building(player.game_id, player.user_id) assert status == 2014
def test_buy_building_when_property_is_deposited(): # GIVEN Proxy() player = PlayerFactory(position=3, move=1) card = CardFactory(position=3) property = PropertyFactory(card=card, player=player, game=player.game, buildings=0, deposited=True) Proxy().load(full=True) [property, status] = BuildingService().buy_building(player.game_id, player.user_id) assert status == 2016
def test_deposit_when_already_deposited(): # GIVEN Proxy() game = GameFactory() card = CardFactory(position=1) player = PlayerFactory(game_id=game.id, move=1) user_property = PropertyFactory(player=player, card=card, game=game) Proxy().load(full=True) # WHEN deposit_property, status = DepositService().deposit(user_id=player.user.id, game_id=game.id, card_id=card.id) # THEN assert deposit_property == None assert status == 2016
def test_create_offer_when_property_is_not_present(): # GIVEN Proxy() user = UserFactory() # WHEN game = GameFactory() player = PlayerFactory(user=user, game=game, move=1) card = CardFactory(position=5) user_property = PropertyFactory(card=card) Proxy().load(full=True) [prop, status] = TradingService().create_offer(game.id, user.id, card.id, 5000) # THEN assert prop == None assert status == 2007
def test_accept_offer_when_not_for_sale(): # GIVEN Proxy() user = UserFactory() # WHEN game = GameFactory() player = PlayerFactory(user=user, game=game, move=1, balance=4000) card = CardFactory(position=5) user_property = PropertyFactory(card=card, game=game, selling_price=0) Proxy().load(full=True) [new_owner, status] = TradingService().accept_offer(game.id, user.id, card.id) # THEN assert new_owner == None assert status == 2013
def test_accept_offer_when_valid(): # GIVEN Proxy() user = UserFactory() # WHEN game = GameFactory() player = PlayerFactory(user=user, game=game, move=1, balance=6000) card = CardFactory(position=5) user_property = PropertyFactory(card=card, game=game) Proxy().load(full=True) [new_owner, status] = TradingService().accept_offer(game.id, user.id, card.id, 5000) # THEN assert new_owner == player assert status == 1000
def test_cancel_offer_when_user_is_not_owner(): # GIVEN Proxy() user = UserFactory() # WHEN game = GameFactory() player = PlayerFactory(user=user, game=game, move=1) card = CardFactory(position=5) user_property = PropertyFactory(card=card, game=game, selling_price=4000) Proxy().load(full=True) [prop, status] = TradingService().cancel_offer(game.id, user.id, card.id) # THEN property_price = PropertyProvider().get_property_with_id( user_property.id).selling_price assert property_price == 4000 assert prop == None assert status == 2004
def test_cancel_offer_when_valid(): # GIVEN Proxy() user = UserFactory() # WHEN game = GameFactory() player = PlayerFactory(user=user, game=game, move=1) card = CardFactory(position=5) user_property = PropertyFactory(card=card, player=player, game=game, selling_price=5000) Proxy().load(full=True) [prop, status] = TradingService().cancel_offer(game.id, user.id, card.id) # THEN assert prop.selling_price == 0 assert status == 1000
def test_buy_building_when_valid_buying_hotel(): # GIVEN Proxy() player = PlayerFactory(balance=700, position=3, move=1) card = CardFactory(position=3) property = PropertyFactory(card=card, player=player, game=player.game, buildings=4, deposited=False) Proxy().load(full=True) [property, status] = BuildingService().buy_building(player.game_id, player.user_id) new_balance = PlayerProvider().get_player_with_id(player.id).balance updated_property = PropertyProvider().get_property_with_id(property.id) assert status == 1000 assert updated_property.buildings == 5 assert new_balance == 0
def test_accept_offer_when_valid(): # GIVEN Proxy() user = UserFactory() # WHEN game = GameFactory() player = PlayerFactory(user=user, game=game, move=1, balance=6000) card = CardFactory(position=5) old_owner = PlayerFactory(game=game, balance=1000) user_property = PropertyFactory(card=card, game=game, player=old_owner, selling_price=5000) Proxy().load(full=True) [[new_owner, old_owner], status] = TradingService().accept_offer(game.id, user.id, card.id) old_owner_new_balance = old_owner.balance # THEN assert new_owner.balance == 1000 assert old_owner_new_balance == 6000
def test_repurchase_when_valid(): # GIVEN Proxy() game = GameFactory() card = CardFactory(position=1) player = PlayerFactory(game_id=game.id, move=1) user_property = PropertyFactory(player=player, card=card, game=game, deposited=True) Proxy().load(full=True) # WHEN deposit_property, status = DepositService().repurchase( user_id=player.user.id, game_id=game.id, card_id=card.id) # THEN new_balance = PlayerProvider().get_player_with_id(player.id).balance new_property = PropertyProvider().get_property_with_id(user_property.id) assert new_property == user_property assert status == 1000 assert new_property.deposited == False assert new_balance == (player.balance - card.deposit_value)