def test_get_user_profile_user_has_badges(self):
        user_1 = UserFactory(name='Name')
        profile_badge_1 = ProfileItemFactory(
            file_path=os.path.join("tests", "support", "badge1.png"))
        profile_badge_2 = ProfileItemFactory(
            file_path=os.path.join("tests", "support", "badge2.png"))
        profile_badge_3 = ProfileItemFactory(
            file_path=os.path.join("tests", "support", "badge3.png"))
        profile_badge_4 = ProfileItemFactory(
            file_path=os.path.join("tests", "support", "badge1.png"))
        user_1.profile_items = [
            UserProfileItemFactory(profile_item=profile_badge_1),
            UserProfileItemFactory(profile_item=profile_badge_2),
            UserProfileItemFactory(profile_item=profile_badge_3),
            UserProfileItemFactory(profile_item=profile_badge_4,
                                   equipped=False),
        ]
        self.test_session.commit()
        with open(os.path.join('tests', 'support', 'user_avatar.png'),
                  'rb') as f:
            user_avatar_bytes = f.read()

        result = asyncio.run(Profile().get_user_profile(user_1.id,
                                                        user_avatar_bytes,
                                                        lang='pt'))

        with open(
                os.path.join('tests', 'support',
                             'get_user_profile_with_badges.png'), 'rb') as f:
            self.assertEqual(result.getvalue(), f.read())
Пример #2
0
    def test_get_currency_user_exists(self):
        user = UserFactory(currency=150)
        self.db_session.commit()

        result = asyncio.run(Palplatina().get_currency(user.id))

        self.assertEqual(result, 150)
Пример #3
0
    def test_get_user_items_user_has_no_items(self):
        user = UserFactory()
        self.db_session.commit()

        result = asyncio.run(Palplatina().get_user_items(user.id))

        self.assertEqual(len(result), 0)
Пример #4
0
    def test_buy_item_item_already_bought(self):
        profile_item = ProfileItemFactory()
        user = UserFactory(currency=150)
        user.profile_items = [
            UserProfileItemFactory(profile_item=profile_item)
        ]
        self.db_session.commit()

        with self.assertRaises(AlreadyOwnsItem):
            asyncio.run(Palplatina().buy_item(user.id, profile_item.name))

        persisted_user = self.db_session.query(User).get(user.id)
        persisted_user_profile_items = persisted_user.profile_items
        self.assertEqual(persisted_user.currency, 150)
        self.assertEqual(len(persisted_user_profile_items), 1)
        self.assertEqual(persisted_user_profile_items[0].profile_item.id,
                         profile_item.id)
Пример #5
0
    def test_unequip_item_user_has_item(self):
        user = UserFactory()
        profile_item = ProfileItemFactory()
        user.profile_items = [
            UserProfileItemFactory(equipped=True, profile_item=profile_item)
        ]
        self.db_session.commit()

        result = asyncio.run(Palplatina().unequip_item(user.id,
                                                       profile_item.name))

        self.assertFalse(result.equipped)

        Session.remove()
        fetched_user_profile_item = self.db_session.query(UserProfileItem).get(
            (user.id, profile_item.id))
        self.assertFalse(fetched_user_profile_item.equipped)
Пример #6
0
def test_add_game_creates_new_game():
    # GIVEN
    Proxy()
    user = UserFactory()
    Proxy().load(full=True)
    # WHEN
    new_game, _ = GameService().add_game(host_id=user.id, players_amount=5)
    # THEN
    assert len(Proxy().games_dict) == 1
Пример #7
0
def test_add_game_creates_new_game_with_code():
    # GIVEN
    Proxy()
    user = UserFactory()
    Proxy().load(full=True)
    # WHEN
    new_game, _ = GameService().add_game(host_id=user.id, players_amount=5)
    # THEN
    assert GameProvider().get_game(new_game.id).code is not None
Пример #8
0
def test_add_game_sets_proper_players_amount():
    # GIVEN
    Proxy()
    user = UserFactory()
    Proxy().load(full=True)
    # WHEN
    new_game, _ = GameService().add_game(host_id=user.id, players_amount=5)
    # THEN
    assert new_game.players_amount == 5
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
Пример #10
0
def test_get_game_returns_proper_player():
    # GIVEN
    Proxy()
    user = UserFactory()
    game = GameFactory()
    Proxy().load(full=True)
    # WHEN
    get_game = GameService().get_game(game.id)
    # THEN
    assert get_game == (game, 1000)
Пример #11
0
def test_join_player_creates_new_player():
    # GIVEN
    Proxy()
    game = GameFactory()
    user = UserFactory()
    Proxy().load(full=True)
    # WHEN
    GameService().join_player(game_id=game.id, user_id=user.id)
    # THEN
    assert len(PlayerProvider().get_game_players(game.id)) == 1
Пример #12
0
def test_property_change_owner_method():
    user1 = UserFactory()
    game = GameFactory(host=user1)
    old_owner = valid_player(user=user1, game=game)
    new_owner = valid_player(game=game)
    player_property = valid_property(player=old_owner, selling_price=300)
    player_property.change_owner(new_owner, old_owner)
    assert player_property.player_id == new_owner.id
    assert old_owner.balance == 800
    assert new_owner.balance == 200
Пример #13
0
def test_set_player_defeated_changes_active_to_false():
    # GIVEN
    Proxy()
    user = UserFactory()
    game = GameFactory()
    Proxy().load(full=True)
    player, _ = GameService().join_player(game_id=game.id, user_id=user.id)
    # WHEN
    GameService().set_player_defeated(user_id=user.id, game_id=game.id)
    # THEN
    assert PlayerProvider().get_player_with_id(player.id).active == False
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
Пример #15
0
def test_join_player_does_not_create_new_player_if_board_is_full():
    # GIVEN
    Proxy()
    game = GameFactory()
    for i in range(4):
        user = UserFactory()
        Proxy().load(full=True)
        GameService().join_player(game_id=game.id, user_id=user.id)
    # WHEN
    GameService().join_player(game_id=game.id, user_id=user.id)
    # THEN
    assert len(PlayerProvider().get_game_players(game.id)) == 4
    def test_set_user_profile_frame_color_invalid_color(self):
        user = UserFactory()
        self.test_session.commit()
        color = 'invalid color'

        with self.assertRaises(ValueError):
            asyncio.run(Profile().set_user_profile_frame_color(user.id, color))

        Session.remove()
        self.assertEqual(
            self.test_session.query(User).get(user.id).profile_frame_color,
            None)
Пример #17
0
    def test_buy_item_item_not_found(self):
        user = UserFactory(currency=150)
        self.db_session.commit()

        with self.assertRaises(ItemNotFound):
            asyncio.run(Palplatina().buy_item(user.id, 'random'))

        Session.remove()
        persisted_user = self.db_session.query(User).get(user.id)
        persisted_user_profile_items = persisted_user.profile_items
        self.assertEqual(persisted_user.currency, 150)
        self.assertEqual(len(persisted_user_profile_items), 0)
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  
Пример #19
0
def test_get_not_possible_to_buy_card():
    # GIVEN
    Proxy()
    game = GameFactory()
    card = CardFactory(position=1)
    user = UserFactory()
    player = PlayerFactory(game_id=game.id, user_id=user.id, position=0)
    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, 2005)
Пример #20
0
    def test_give_daily_not_clear_for_new_daily(self):
        user = UserFactory(currency=150,
                           daily_last_collected_at=datetime.utcnow())
        self.db_session.commit()

        result, user_actual = asyncio.run(Palplatina().give_daily(
            user.id, user.name))
        Session.remove()

        self.assertFalse(result)
        self.assertEqual(user_actual.currency, 150)
        self.assertEqual(
            self.db_session.query(User).get(user.id).currency, 150)
Пример #21
0
    def test_buy_item_not_enough_currency(self):
        user = UserFactory(currency=150)
        profile_item = ProfileItemFactory(price=200)
        self.db_session.commit()

        with self.assertRaises(NotEnoughCredits):
            asyncio.run(Palplatina().buy_item(user.id, profile_item.name))

        Session.remove()
        persisted_user = self.db_session.query(User).get(user.id)
        persisted_user_profile_items = persisted_user.profile_items
        self.assertEqual(persisted_user.currency, 150)
        self.assertEqual(len(persisted_user_profile_items), 0)
Пример #22
0
def test_add_1():
    title = 'Test title'
    content = 'Test content'
    user = UserFactory.create()
    return {
        'params': {
            'user': user,
            'title': title,
            'content': content
        },
        'title': title,
        'content': content,
        'user': user
    }
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
Пример #24
0
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_get_user_profile_user_has_wallpaper(self):
        user_1 = UserFactory(name='Name')
        profile_badge = ProfileItemFactory(type='wallpaper',
                                           file_path=os.path.join(
                                               "tests", "support",
                                               "wallpaper.png"))
        user_1.profile_items = [
            UserProfileItemFactory(profile_item=profile_badge),
        ]
        self.test_session.commit()
        with open(os.path.join('tests', 'support', 'user_avatar.png'),
                  'rb') as f:
            user_avatar_bytes = f.read()

        result = asyncio.run(Profile().get_user_profile(user_1.id,
                                                        user_avatar_bytes,
                                                        lang='pt'))

        with open(
                os.path.join('tests', 'support',
                             'get_user_profile_with_wallpaper.png'),
                'rb') as f:
            self.assertEqual(result.getvalue(), f.read())
    def test_get_user_profile_all_available_fields(self):
        user_1 = UserFactory(name='My very long name')
        user_2 = UserFactory()
        chess_game_1 = ChessGameFactory(player1=user_1, result=1)
        xp_point_1 = XpPointFactory(user=user_1, points=140)
        self.test_session.commit()
        astrology_bot = AstrologyChart()
        datetime = ('1997/08/10', '07:17', '-03:00')
        geopos = (-23.5506507, -46.6333824)
        chart = astrology_bot.calc_chart_raw(datetime, geopos)
        asyncio.run(astrology_bot.save_chart(user_1.id, chart))
        with open(os.path.join('tests', 'support', 'user_avatar.png'),
                  'rb') as f:
            user_avatar_bytes = f.read()

        result = asyncio.run(Profile().get_user_profile(user_1.id,
                                                        user_avatar_bytes,
                                                        lang='pt'))

        with open(
                os.path.join('tests', 'support',
                             'get_user_profile_all_fields.png'), 'rb') as f:
            self.assertEqual(result.getvalue(), f.read())
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_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_get_user_profile_user_exists_no_info(self):
        user_1 = UserFactory(name='Name')
        self.test_session.commit()
        with open(os.path.join('tests', 'support', 'user_avatar.png'),
                  'rb') as f:
            user_avatar_bytes = f.read()

        result = asyncio.run(Profile().get_user_profile(user_1.id,
                                                        user_avatar_bytes,
                                                        lang='pt'))

        with open(
                os.path.join('tests', 'support',
                             'get_user_profile_no_info.png'), 'rb') as f:
            self.assertEqual(result.getvalue(), f.read())
    def test_set_user_profile_frame_color_valid_color(self):
        user = UserFactory()
        self.test_session.commit()
        color = '#f7b1d8'

        result = asyncio.run(Profile().set_user_profile_frame_color(
            user.id, color))

        self.assertEqual(result.id, user.id)
        self.assertEqual(result.profile_frame_color, color)

        Session.remove()
        self.assertEqual(
            self.test_session.query(User).get(user.id).profile_frame_color,
            color)