diff --git a/.env b/.env index 4c8930b..08a8686 100644 --- a/.env +++ b/.env @@ -3,4 +3,4 @@ BLUE_IMG_FILENAME=blue.png RED_IMG_FILENAME=red.png NAME_CHAR_LIMIT=100 WORD_CHAR_LIMIT=12 -RED_WORDS_COUNT=2 +RED_WORDS_COUNT=4 diff --git a/data/test-database.sqlite b/data/test-database.sqlite index daecb95..1d5ca54 100644 Binary files a/data/test-database.sqlite and b/data/test-database.sqlite differ diff --git a/dokumentaatio/kuvat/testikattavuus.png b/dokumentaatio/kuvat/testikattavuus.png new file mode 100644 index 0000000..72f0548 Binary files /dev/null and b/dokumentaatio/kuvat/testikattavuus.png differ diff --git a/dokumentaatio/testaus.md b/dokumentaatio/testaus.md index ec6c661..51780ea 100644 --- a/dokumentaatio/testaus.md +++ b/dokumentaatio/testaus.md @@ -23,7 +23,9 @@ Ohjelman QuizRepository-luokalle on käytössä omat, testejä varten luotavat t ### Testauskattavuus -Sovelluksen testauskattavuus on 93%. Käyttöliittymän testaaminen on suoritettu manuaalisesti, eikä se sisälly tähän testauskattavuuteen. +Sovelluksen testauskattavuus on 96%. Käyttöliittymän testaaminen on suoritettu manuaalisesti, eikä se sisälly tähän testauskattavuuteen. + +![testikattavuus](./kuvat/testikattavuus.png) Testikattavuuden ulkopuolelle jäi testattavista tiedostoista vain yksittäisiä rivejä, kuten _build.py-_ ja _initialize_database.py_-tiedostojen komentoriviltä suorittaminen. diff --git a/src/config.py b/src/config.py index b494667..af462c2 100644 --- a/src/config.py +++ b/src/config.py @@ -33,5 +33,3 @@ assert RED_WORDS_COUNT < 0 and RED_WORDS_COUNT > 5 except (AssertionError, TypeError, ValueError): RED_WORDS_COUNT = 2 - - diff --git a/src/repositories/quiz_repository.py b/src/repositories/quiz_repository.py index 7611037..fae3d58 100644 --- a/src/repositories/quiz_repository.py +++ b/src/repositories/quiz_repository.py @@ -125,6 +125,13 @@ def save_quiz(self, quiz): self._connection.commit() def update_quiz(self, updated_quiz, old_name): + """Päivittää annetun visailun tiedot tietokantaan. + + Args: + updated_quiz: Päivitetty visailu Quiz-oliona. + old_name: Merkkijono, joka kuvaa visailun aiempaa nimeä. + Tämän perusteella visailu on mahdollista löytää tietokannasta. + """ cursor = self._connection.cursor() diff --git a/src/services/game_service.py b/src/services/game_service.py index 6020d5c..afa41c4 100644 --- a/src/services/game_service.py +++ b/src/services/game_service.py @@ -1,5 +1,6 @@ -from config import RED_WORDS_COUNT from random import sample +from config import RED_WORDS_COUNT + class GameService: """Luokka, joka vastaa pelilogiikasta.""" @@ -17,41 +18,48 @@ def __init__(self, quiz): self._red_words = [] self._initialize_puzzle() - def _initialize_puzzle(self): - self._current_puzzle = self._quiz.puzzles.pop(0) - self._red_words = sample([0, 1, 2, 3, 4], RED_WORDS_COUNT) - - def next_puzzle(self): - self._initialize_puzzle() + def add_point(self, team): + """Lisää pisteen annetulle joukkueelle. - def puzzles_available(self): - return len(self._quiz.puzzles) > 0 + Args: + team: Merkkijono, joka kuvaa joukkueen nimeä. - def add_point(self, team): + Returns: + Kokonaisluku, joka kuvaa joukkueen uutta pistetilannetta. + """ self._points[team] += 1 return self._points[team] def dec_point(self, team): + """Vähentää pisteen annetulta joukkueelta. + + Args: + team: Merkkijono, joka kuvaa joukkueen nimeä. + + Returns: + Kokonaisluku, joka kuvaa joukkueen uutta pistetilannetta. + """ self._points[team] -= 1 return self._points[team] def get_answer(self): + """Palauttaa arvoituksen vastauksen. + + Returns: + Merkkijono, joka kuvaa arvoituksen oikeaa vastausta. + """ return self._current_puzzle.name def get_points(self, team): - return self._points[team] - - def red_word(self, index): - """Kertoo, onko kyseisen indeksin sana punainen. + """Palauttaa annetun tiimin pisteet. Args: - index : Kokonaisluku, joka kuvaa halutun sanan indeksiä. + team: halutun tiimin nimi merkkijonona, joko "team1" tai "team2" Returns: - Totuusarvo, joka kuvaa, onko kysytyn indeksin sana punainen. + Kokonaisluku, joka kuvaa joukkueen pisteitä. """ - - return index in self._red_words + return self._points[team] def get_word(self, index): """Paljastaa valitun sanan. @@ -64,3 +72,32 @@ def get_word(self, index): """ return self._current_puzzle.words[index] + + def next_puzzle(self): + """Siirtää ohjelman tilan seuraavaksi vuorossa olevaan arvoitukseen. + """ + self._initialize_puzzle() + + def puzzles_available(self): + """Kertoo, onko arvoituksia vielä jäljellä. + + Returns: + Totuusarvo, joka kuvaa, onko arvoituksia vielä jäljellä + """ + return len(self._quiz.puzzles) > 0 + + def red_word(self, index): + """Kertoo, onko kyseisen indeksin sana punainen. + + Args: + index : Kokonaisluku, joka kuvaa halutun sanan indeksiä. + + Returns: + Totuusarvo, joka kuvaa, onko kysytyn indeksin sana punainen. + """ + + return index in self._red_words + + def _initialize_puzzle(self): + self._current_puzzle = self._quiz.puzzles.pop(0) + self._red_words = sample([0, 1, 2, 3, 4], RED_WORDS_COUNT) diff --git a/src/services/management_service.py b/src/services/management_service.py index 874ed3d..40043ca 100644 --- a/src/services/management_service.py +++ b/src/services/management_service.py @@ -1,12 +1,15 @@ from entities.puzzle import Puzzle from entities.quiz import Quiz -from repositories.quiz_repository import QuizRepository class ManagementService: """Luokka, joka vastaa sovelluksen logiikasta.""" def __init__(self, repository): - """Luokan konstruktori. Luo uuden sovelluksen logiikasta vastaavan palvelun.""" + """Luokan konstruktori. Luo uuden sovelluksen logiikasta vastaavan palvelun. + + Args: + repository: Olio, joka vastaa tiedon pysyväistallennukseen liittyvistä operaatioista. + """ self._repository = repository @@ -20,6 +23,11 @@ def add_quiz(self, quiz): self._repository.save_quiz(quiz) def delete_quiz(self, quiz_name): + """Poistaa visailun tietokannasta annetun nimen perusteella. + + Args: + quiz_name: Merkkijono, joka kuvaa visailun nimeä. + """ self._repository.delete_quiz(quiz_name) diff --git a/src/tests/repositories/quiz_repository_test.py b/src/tests/repositories/quiz_repository_test.py index 82ddbdb..6e14f51 100644 --- a/src/tests/repositories/quiz_repository_test.py +++ b/src/tests/repositories/quiz_repository_test.py @@ -29,6 +29,13 @@ def test_save_quiz(self): self.assertEqual(quiz1.puzzles[0].words, ["ONE", "TWO", "THREE", "FOUR", "FIVE"]) self.assertEqual(quiz2.puzzles[0].words, ["SIX", "SEVEN", "EIGHT", "NINE", "TEN"]) + def test_update_quiz(self): + self.repository.save_quiz(self.quiz1) + self.quiz1.name = "New Name" + self.repository.update_quiz(self.quiz1, "Test Quiz 1") + + quizzes = self.repository.find_all_quizzes() + self.assertTrue("New Name" in quizzes) def test_delete_all(self): quizzes = self.repository.find_quiz_names() @@ -60,3 +67,4 @@ def test_find_all_quizzes(self): self.assertTrue("Test Quiz 1" in quizzes) self.assertTrue("Test Quiz 2" in quizzes) +