예제 #1
0
def test_remove_player(fill_players):
    with test_session_scope() as ts:
        assert reset_session_squad(session_id=API_SESSION_ID, dbsession=ts)
        assert add_session_player(12, API_SESSION_ID, ts)
        assert remove_session_player(12, API_SESSION_ID, ts)
        players = get_session_players(API_SESSION_ID, ts)
        assert len(players) == 0
예제 #2
0
def test_invalid_session_squad(fill_players):
    with test_session_scope() as ts:
        reset_session_squad(session_id=API_SESSION_ID, dbsession=ts)
        assert not validate_session_squad(API_SESSION_ID, ts)
        # add one player - check it is still invalid
        assert add_session_player(5, API_SESSION_ID, ts)
        assert not validate_session_squad(API_SESSION_ID, ts)
예제 #3
0
def test_add_player_by_name(fill_players):
    """
    Should be able to add a player with string argument
    """
    with test_session_scope() as ts:
        t = Squad()
        added_ok = t.add_player("Alice", season=TEST_SEASON, dbsession=ts)
        assert added_ok
예제 #4
0
def test_add_player_by_id(fill_players):
    """
    Should be able to add a player with integer argument
    """
    with test_session_scope() as ts:
        t = Squad()
        added_ok = t.add_player(50, season=TEST_SEASON, dbsession=ts)
        assert added_ok
예제 #5
0
def test_cant_add_same_player_twice(fill_players):
    with test_session_scope() as ts:
        assert reset_session_squad(session_id=API_SESSION_ID, dbsession=ts)
        assert add_session_player(33, API_SESSION_ID, ts)
        assert not add_session_player(33, API_SESSION_ID, ts)
        players = get_session_players(API_SESSION_ID, ts)
        assert len(players) == 1
        assert players[0]["id"] == 33
예제 #6
0
def test_get_player(fill_players):
    """
    test we can get a player object from either a name or an id
    """
    with test_session_scope() as tsession:
        p = get_player("Bob", tsession)
        assert isinstance(p, Player)
        assert p.player_id == 1
예제 #7
0
def test_list_all_players(fill_players):
    with test_session_scope() as ts:

        player_list = list_players_teams_prices(dbsession=ts, gameweek=1)
        assert isinstance(player_list, list)
        assert len(player_list) > 0
        first_player = player_list[0]
        # test the format of the returned strings
        assert re.search("[a-zA-Z\s]+\([A-Z]{3}\)\: [\d\.]+", first_player)
예제 #8
0
def test_reset_session_squad():
    with test_session_scope() as ts:
        assert reset_session_squad(session_id=API_SESSION_ID, dbsession=ts)
        st = ts.query(SessionSquad).filter_by(session_id=API_SESSION_ID).all()
        assert len(st) == 0
        sb = ts.query(SessionBudget).filter_by(session_id=API_SESSION_ID).all()
        assert len(sb) == 1
        assert sb[0].budget == 1000
        assert get_session_budget(API_SESSION_ID, ts) == 1000
예제 #9
0
def test_cant_add_too_many_per_squad(fill_players):
    """
    no more than three from the same squad.
    """
    with test_session_scope() as ts:
        t = Squad()
        assert t.add_player(1, season=TEST_SEASON, dbsession=ts)
        assert t.add_player(21, season=TEST_SEASON, dbsession=ts)
        assert t.add_player(41, season=TEST_SEASON, dbsession=ts)
        assert not t.add_player(61, season=TEST_SEASON, dbsession=ts)
예제 #10
0
def test_cant_add_same_player(fill_players):
    """
    can't add a player thats already on the squad.
    """
    with test_session_scope() as ts:
        t = Squad()
        added_ok = t.add_player(1, season=TEST_SEASON, dbsession=ts)
        assert added_ok
        added_ok = t.add_player(1, season=TEST_SEASON, dbsession=ts)
        assert not added_ok
예제 #11
0
def test_remove_player(fill_players):
    """
    add a player then remove them.
    """
    with test_session_scope() as ts:
        t = Squad()
        t.add_player(1, season=TEST_SEASON, dbsession=ts)
        assert len(t.players) == 1
        assert t.num_position["GK"] == 1
        t.remove_player(1, season=TEST_SEASON, use_api=False, dbsession=ts)
        assert len(t.players) == 0
        assert t.num_position["GK"] == 0
        assert t.budget == 1000
예제 #12
0
def test_cant_add_too_many_per_position(fill_players):
    """
    no more than two keepers, 5 defenders, 5 midfielders, 3 forwards.
    """
    with test_session_scope() as ts:
        t = Squad()
        # keepers
        assert t.add_player("Alice", season=TEST_SEASON, dbsession=ts)
        assert t.add_player("Bob", season=TEST_SEASON, dbsession=ts)
        assert not t.add_player("Pedro", season=TEST_SEASON, dbsession=ts)
        # defenders
        assert t.add_player("Carla", season=TEST_SEASON, dbsession=ts)
        assert t.add_player("Donald", season=TEST_SEASON, dbsession=ts)
        assert t.add_player("Erica", season=TEST_SEASON, dbsession=ts)
        assert t.add_player("Frank", season=TEST_SEASON, dbsession=ts)
        assert t.add_player("Gerry", season=TEST_SEASON, dbsession=ts)
        assert not t.add_player("Stefan", season=TEST_SEASON, dbsession=ts)
예제 #13
0
def test_cant_exceed_budget():
    """
    try and make an expensive squad
    """
    with test_session_scope() as ts:
        t = Squad()
        added_ok = True
        added_ok = added_ok and t.add_player(
            45, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            46, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            47, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            48, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            49, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            50, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            51, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            52, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            53, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            54, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            55, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            56, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            57, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            58, season=TEST_SEASON, dbsession=ts)
        added_ok = added_ok and t.add_player(
            59, season=TEST_SEASON, dbsession=ts)
        assert not added_ok
예제 #14
0
def test_valid_session_squad(fill_players):
    with test_session_scope() as ts:
        reset_session_squad(API_SESSION_ID, ts)
        for pid in range(15):
            assert add_session_player(pid, API_SESSION_ID, ts)
        assert validate_session_squad(API_SESSION_ID, ts)
예제 #15
0
def test_set__get_budget():
    with test_session_scope() as ts:
        assert reset_session_squad(session_id=API_SESSION_ID, dbsession=ts)
        assert set_session_budget(500, API_SESSION_ID, ts)
        assert get_session_budget(API_SESSION_ID, ts) == 500
예제 #16
0
def test_get_player_id(fill_players):
    """
    Should be able to find a player with string argument
    """
    with test_session_scope() as tsession:
        assert get_player_id("Bob", tsession) == 1
예제 #17
0
def test_get_player_name(fill_players):
    """
    Should be able to find a player with integer argument
    """
    with test_session_scope() as tsession:
        assert get_player_name(1, tsession) == "Bob"