WIP: #57 Én databaseinstans og testmodus for database
Databasen har testmode=False
som parameter i sin __init__
.
Dersom parameteren er True vil det lages en database-fil med navnet testDatabase
.
test_database.py
initialiserer db i testmodus og sletter testDatabase-filen når testene er ferdig.
Det som er litt dumt er at soitool.*.py
-filer som selv lager database vil bruke original database under testing (ikke test-database). For å fikse det må vi isåfall ha en testmode-parameter i alle slike funksjoner. Det er per nå bare codebook_to_pdf.py
som bruker original database under testing.
Merge request reports
Activity
38 40 If db is created, tables are created and filled. 39 41 40 42 Holds a QTimer that requests an update of CodeBook on every timeout. 43 44 Database can be run in testmode, this will create a seperate database-file. 41 45 """ 42 46 43 def __init__(self): 47 def __init__(self, testmode=False): Hva med å heller parameterisere path til databasefil, slik at funkjsonaliteten kan bli implementert uavhengig av tester? Default-verdi kan være den gamle
DB_PATH
, også kan tester gi en egen path den kan bestemme selv.Generelt foretrekker ihvertfall jeg at reell kode i trenger å tenke på tester direkte, og her finnes det en fin løsning som unngår dette.
Vil også gjøre det mulig å ha flere databaser om en skulle ønske det.
changed this line in version 2 of the diff
Godt poeng, nå er det fikset.
Edited by Anders H. Rebner
- Resolved by Anders H. Rebner
Du nevnte noe om at
codebook_to_pdf.py
ikke bruker testdatabasen på Discord. Hvorfor ikke? Vil det ikke fungere om en sender medtest_mode=True
til databaseklassen på denne linjen: https://gitlab.stud.idi.ntnu.no/bachelor-paa-bittet/soitool/-/blob/657a3233d50e7ac26229a120c0e23c94d0b09924/soitool/codebook_to_pdf.py#L148 ?Du har rett i at det vil fungere.
Den skal kalle
Database()
til vanlig, og evt.Database(test_mode=True)
ved tester, men den vet ikke om den kjøres fra en test eller ikke. For at den skal vite det, så må selve funksjonenget_codebook_data
ha en parametertest_mode
, og det hadde vel vært litt merkelig, eller?Edited by Anders H. RebnerHva med at funksjonene for å lage en kodebok PDF heller tar en ferdig
Database
instans? Flytter også litt ansvar ut av funksjonene, da de ikke trenger å tenke på å lage et databaseobjekt. For meg er det ryddig at disse funksjonene ikke trenger å lage et databaseobjekt fra grunnen av, nettopp fordi da må instillinger som test/ikke-test dupliseres der og.Gir mening om en tenker på input og output av funksjonene syns jeg, som bruker forventer jeg at
database -> | sidestørrelse -> |-> lag kodebok pdf -> .PDF orientation -> | small/large -> |
Heller enn at jeg ikke får lov til å kontrollere hvilke database PDF-en blir laget fra.
Edited by Thomas Holene Løkkeborg