예제 #1
0
def test_natl_match_lineup_insert(session, national_data, person_data, position_data):
    match = mn.NationalGroupMatches(
        group_round=enums.GroupRoundType.first_round,
        group='C',
        matchday=2,
        **national_data
    )
    session.add(match)
    session.commit()

    nation_from_db = session.query(mco.Countries).filter(mco.Countries.name == u"Mexico").one()

    player_data = person_data['player'][0]
    del player_data['country']
    player_data['country_id'] = nation_from_db.id
    player = mcp.Players(position=position_data[0], **player_data)
    session.add(player)
    session.commit()

    lineup = mn.NationalMatchLineups(
        match_id=match.id,
        team_id=nation_from_db.id,
        player_id=player.id,
        position_id=player.position_id
    )
    session.add(lineup)

    lineup_from_db = session.query(mn.NationalMatchLineups).join(mn.NationalGroupMatches).\
        filter(mn.NationalGroupMatches.id == match.id)

    assert lineup_from_db.count() == 1
    assert unicode(lineup_from_db[0]) == u"<NationalMatchLineup(match={}, player=Miguel Ángel Ponce, team=Mexico, " \
                                         u"position=Left back, starter=False, captain=False)>".format(match.id)
예제 #2
0
def test_club_goal_insert(session, club_data, person_data, position_data):
    match = mc.ClubLeagueMatches(matchday=15, **club_data)
    session.add(match)
    player = mcp.Players(position=position_data[0], **person_data['player'][0])
    session.add(player)
    session.commit()

    club_from_db = session.query(
        mc.Clubs).filter(mc.Clubs.name == u"Arsenal FC").one()

    lineup = mc.ClubMatchLineups(match_id=match.id,
                                 team_id=club_from_db.id,
                                 player_id=player.id,
                                 position_id=player.position_id)
    session.add(lineup)
    session.commit()

    goal = mc.ClubGoals(lineup_id=lineup.id,
                        team_id=club_from_db.id,
                        bodypart=enums.BodypartType.head,
                        event=enums.ShotEventType.cross_ck,
                        time=70)
    session.add(goal)

    goals_from_db = session.query(mc.ClubGoals).join(mc.ClubMatchLineups).join(
        mc.ClubLeagueMatches).filter(mc.ClubLeagueMatches.id == match.id)

    assert goals_from_db.count() == 1
    assert goals_from_db[0].team.name == u"Arsenal FC"
    assert goals_from_db[0].lineup.full_name == u"Miguel Ángel Ponce"
    assert goals_from_db[0].bodypart.value == "Head"
    assert goals_from_db[0].event.value == "Cross from corner kick"
    assert goals_from_db[0].time == 70
예제 #3
0
def test_lineup_designate_captain(session, match_data, person_data,
                                  position_data):
    capn_indx = 1
    lineups = [
        mcm.MatchLineups(match=mcm.Matches(**match_data),
                         player=mcp.Players(**plyr),
                         position=pos,
                         is_starting=True,
                         is_captain=(j == capn_indx))
        for j, (plyr,
                pos) in enumerate(zip(person_data['player'], position_data))
    ]
    session.add_all(lineups)

    capn_position = position_data[capn_indx]

    lineup_from_db = session.query(mcm.MatchLineups).join(
        mcp.Positions).filter(mcp.Positions.name == capn_position.name).all()
    assert len(lineup_from_db) == 1
    assert lineup_from_db[0].is_captain is True

    other_lineup_from_db = session.query(mcm.MatchLineups).join(
        mcp.Positions).filter(mcp.Positions.name != capn_position.name).all()
    for others in other_lineup_from_db:
        assert others.is_captain is False
예제 #4
0
def test_substitutions_insert(session, match_lineup, person_data):
    match_from_db, lineup_from_db = match_lineup

    bench_lineup = mcm.MatchLineups(
        match_id=match_from_db.id,
        player=mcp.Players(**person_data['generic']),
        position=mcp.Positions(name=u"Center back",
                               type=enums.PositionType.defender),
        is_starting=False,
        is_captain=False)
    session.add(bench_lineup)
    session.commit()

    substitution = mce.Substitutions(lineup_in_id=bench_lineup.id,
                                     lineup_out_id=lineup_from_db.id,
                                     time=67)
    session.add(substitution)

    lineup_alias = aliased(mcm.MatchLineups)
    substitution_from_db = session.query(mce.Substitutions)\
        .join(mcm.MatchLineups, mcm.MatchLineups.id == mce.Substitutions.lineup_in_id)\
        .join(lineup_alias, lineup_alias.id == mce.Substitutions.lineup_out_id)\
        .join(mcm.Matches).filter(mcm.Matches.id == match_from_db.id)

    assert substitution_from_db.count() == 1
    assert substitution_from_db[0].lineup_out.full_name == u"Cristiano Ronaldo"
    assert substitution_from_db[0].lineup_in.full_name == u"John Doe"
    assert substitution_from_db[0].time == 67
예제 #5
0
def test_player_insert(session, person_data, position_data):
    player_data = [
        data for key, records in person_data.items() for data in records
        if key in ['player']
    ]
    for player, position in zip(player_data, position_data):
        player['position'] = position
    players = [mcp.Players(**data) for data in player_data]
    session.add_all(players)

    players_from_db = session.query(mcp.Players)
    assert players_from_db.count() == len(players)
예제 #6
0
def test_player_history_insert(session, person_data, player_history_data):
    player_data = dict(position=mcp.Positions(
        name='Central Midfielder', type=enums.PositionType.midfielder),
                       **person_data['generic'])
    generic_player = mcp.Players(**player_data)
    player_history = [
        mcp.PlayerHistory(**dict(player=generic_player, **data))
        for data in player_history_data
    ]
    session.add_all(player_history)

    history_from_db = session.query(mcp.PlayerHistory).join(mcp.Players).\
        filter(mcp.Players.last_name == u"Doe")

    assert history_from_db.count() == len(player_history)
예제 #7
0
def test_match_lineup_generic_insert(session, match_data, person_data,
                                     position_data):
    lineup = mcm.MatchLineups(match=mcm.Matches(**match_data),
                              player=mcp.Players(**person_data['player'][1]),
                              position=position_data[1])
    session.add(lineup)

    lineup_from_db = session.query(mcm.MatchLineups).one()
    match_from_db = session.query(mcm.Matches).one()
    player_from_db = session.query(mcp.Players).one()

    assert lineup_from_db.is_starting is False
    assert lineup_from_db.is_captain is False
    assert lineup_from_db.match_id == match_from_db.id
    assert lineup_from_db.player_id == player_from_db.id
예제 #8
0
def test_player_history_representation(session, person_data,
                                       player_history_data):
    player_data = dict(position=mcp.Positions(
        name='Central Midfielder', type=enums.PositionType.midfielder),
                       **person_data['generic'])
    generic_player = mcp.Players(**player_data)
    player_history = [
        mcp.PlayerHistory(**dict(player=generic_player, **data))
        for data in player_history_data
    ]
    session.add_all(player_history)

    history_from_db = session.query(mcp.PlayerHistory).join(mcp.Players).\
        filter(mcp.Players.last_name == u"Doe", mcp.PlayerHistory.date == date(1998, 7, 15)).one()

    assert repr(
        history_from_db
    ) == u"<PlayerHistory(name=John Doe, date=1998-07-15, height=1.74, weight=76)>"
예제 #9
0
def test_natl_goal_insert(session, national_data, person_data, position_data):
    match = mn.NationalKnockoutMatches(
        ko_round=enums.KnockoutRoundType.round_16,
        **national_data
    )
    session.add(match)
    session.commit()

    nation_from_db = session.query(mco.Countries).filter(mco.Countries.name == u"Mexico").one()

    player_data = person_data['player'][0]
    del player_data['country']
    player_data['country_id'] = nation_from_db.id
    player = mcp.Players(position=position_data[0], **player_data)
    session.add(player)
    session.commit()

    lineup = mn.NationalMatchLineups(
        match_id=match.id,
        team_id=nation_from_db.id,
        player_id=player.id,
        position_id=player.position_id
    )
    session.add(lineup)
    session.commit()

    goal = mn.NationalGoals(
        lineup_id=lineup.id,
        team_id=nation_from_db.id,
        bodypart=enums.BodypartType.head,
        event=enums.ShotEventType.cross_ck,
        time=70
    )
    session.add(goal)

    goals_from_db = session.query(mn.NationalGoals).join(mn.NationalMatchLineups)\
        .join(mn.NationalKnockoutMatches).filter(mn.NationalKnockoutMatches.id == match.id)

    assert goals_from_db.count() == 1
    assert goals_from_db[0].team.name == u"Mexico"
    assert goals_from_db[0].lineup.full_name == u"Miguel Ángel Ponce"
    assert goals_from_db[0].bodypart.value == "Head"
    assert goals_from_db[0].event.value == "Cross from corner kick"
    assert goals_from_db[0].time == 70
예제 #10
0
def test_club_match_lineup_insert(session, club_data, person_data,
                                  position_data):
    match = mc.ClubLeagueMatches(matchday=15, **club_data)
    session.add(match)
    player = mcp.Players(position=position_data[0], **person_data['player'][0])
    session.add(player)
    session.commit()

    club_from_db = session.query(
        mc.Clubs).filter(mc.Clubs.name == u"Arsenal FC").one()

    lineup = mc.ClubMatchLineups(match_id=match.id,
                                 team_id=club_from_db.id,
                                 player_id=player.id,
                                 position_id=player.position_id)
    session.add(lineup)

    lineup_from_db = session.query(mc.ClubMatchLineups).join(mc.ClubLeagueMatches)\
        .filter(mc.ClubLeagueMatches.id == match.id)

    assert lineup_from_db.count() == 1
    assert unicode(lineup_from_db[0]) == u"<ClubMatchLineup(match={}, player=Miguel Ángel Ponce, team=Arsenal FC, " \
                                         u"position=Left back, starter=False, captain=False)>".format(match.id)
예제 #11
0
def match_lineup(session, match_data, person_data, position_data):
    match = mcm.Matches(**match_data)
    session.add(match)

    match_from_db = session.query(mcm.Matches).one()

    lineups = [
        mcm.MatchLineups(match_id=match_from_db.id,
                         player=mcp.Players(**plyr),
                         position=pos,
                         is_starting=True,
                         is_captain=False)
        for j, (plyr,
                pos) in enumerate(zip(person_data['player'], position_data))
    ]
    session.add_all(lineups)

    scorer_indx = 1

    lineup_from_db = session.query(mcm.MatchLineups).join(mcp.Players).\
        filter(mcp.Players.last_name == person_data['player'][scorer_indx]['last_name']).one()

    return match_from_db, lineup_from_db
예제 #12
0
def test_player_representation(session, person_data, position_data):
    player_data = [
        data for key, records in person_data.items() for data in records
        if key in ['player']
    ]
    for player, position in zip(player_data, position_data):
        player['position'] = position
    players = [mcp.Players(**data) for data in player_data]
    session.add_all(players)

    korean_player = session.query(mcp.Players).join(mco.Countries).\
        filter(mco.Countries.name == u"Korea Republic").one()
    assert repr(korean_player) == u"<Player(name=Son Heung-Min, DOB=1992-07-08, " \
                                  u"country=Korea Republic, position=Second striker)>"

    ronaldo = session.query(mcp.Players).filter(
        mcp.Players.nick_name == u"Cristiano Ronaldo").one()
    assert repr(ronaldo) == u"<Player(name=Cristiano Ronaldo, DOB=1985-02-05, " \
                            u"country=Portugal, position=Forward)>"

    mexican_player = session.query(mcp.Players).join(
        mco.Countries).filter(mco.Countries.name == u"Mexico").one()
    assert unicode(mexican_player) == u"<Player(name=Miguel Ángel Ponce, DOB=1989-04-12, " \
                                      u"country=Mexico, position=Left back)>"