Skip to content

Koodikatselmointi #1

@fialco

Description

@fialco

Katselmoin sovelluksesta versiota joka ladattu 29.4 klo 19.24.

  • Vaatimusmäärittelyssä selkeästi listattuna kaikki valmis ja keskeneräinen toiminnallisuus (kuten pelaajan lisääminen ja eventtien näkyminen) ja kaikki mitä käytettävyydessä itse huomasin oli huomioituna tulevaan.

  • Ohjelmisto on lohkottu järkeviin kokonaisuuksiin luokka, hakemisto ja tiedostotasolla. Myös on mukailtu referenssisovelluksen tyylistä ui, service, repositories tyyliä oikein. Pieni hämmennys siitä mitä scorekeeper_view.py teki mutta ilmeisesti ei olla vielä implementoitu :).

  • Lint antaa täyden kympin!

  • Nimeäminen on kaikinpuolin selkeää metodeista luokkiin. Lisäksii docstringit mallikkaasti toteutettu!

  • Virhekäsittelyä on runsaasti ja osalla tulee selkeä popup asiasta. Ainakin uuden pelaajan lisääminen samalla pelinumerolla tällä hetkellä vain komentoriville ilmoituksen.

  • Jostain syystä Team luokkaan ei asetu team_id kunnolla ja esim tietokantaan events tauluun tulee aina team_id kohdalle NULL.

  • Jos mahdollista niin siirtäisin käyttöliittymästä (game_view, scorekeeper_view) suorat entities viittaukset servicen alle. Näin Käyttöliittymä olisi riippuvainen pelkästään servicestä.

  • Tällä hetkellä on repositorioissa runsaasti metodeja joita ei käytetä käsittääkseni missään. Esimerkiksi game_repositoryn get_all_game() ja event_repositoryn get_all_events(). Arvatenkin tehty valmiiksi tulevaisuutta varten, mutta muista poistaa tarpeeton koodi viimeistä palautusta varten.

En ole varma onko vain omassa päässä vika mutta testit menevät pieleen ja tulee:

self = <src.services.score_service.ScoreService object at 0x797be7f836f0>, team1_name = 'test_team1', team2_name = 'test_team2'

    def start_new_game(self, team1_name, team2_name):
        """Start a new game with selected teams.

        Args:
            team1_name (str): Name of home team
            team2_name (str): Name of away team

        Returns:
            Game: Started game instance

        Raises:
            ValueError: If either team doesn't exist
        """
        team1 = self.team_repository.get_team_by_name(team1_name)
        team2 = self.team_repository.get_team_by_name(team2_name)

        if not team1 or not team2:
>           raise ValueError("Both teams must exist")
E           ValueError: Both teams must exist

src/services/score_service.py:76: ValueError


FAILED src/tests/services/scorekeeper_test.py::TestScoreService::test_add_event - ValueError: Both teams must exist
FAILED src/tests/services/scorekeeper_test.py::TestScoreService::test_add_team - ValueError: Both teams must exist
FAILED src/tests/services/scorekeeper_test.py::TestScoreService::test_events_after_initialization - ValueError: Both teams must exist
FAILED src/tests/services/scorekeeper_test.py::TestScoreService::test_get_score - ValueError: Both teams must exist
FAILED src/tests/services/scorekeeper_test.py::TestScoreService::test_get_teams - ValueError: Both teams must exist

Eli testatessa tietokannasta ei löydy tiimejä. Johtuu käsittääkseni siitä että testien aikana test_team1 ja test_team2 ei lisätä tietokantaan ja start_new_game etsii team_repositoriosta niitä
ja nostetaan ValueError("Both teams must exist").

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions