Rewrite TUI als workflow incl. State en Unit Tests - #115
Conversation
|
Indien doorvoeren:
|
|
Ook nog verkennen:
|
|
Ik heb al een keer goed doorgelezen en hierbij alvast mijn twee centen: De standaardisering van de stappen van de TUI is zeker netjes en helpt het ook beter gestructureerd te houden. Het State() object zorgt ervoor dat de in- en output van de gpkg nu overal simpel te vinden en gebruiken is. Ik zag ook nette upserts in de QuestionAnswer. Dit moet misschien ook in de GeoDataFrames en DataFrames als je ze niet altijd geheel wil overschrijven. Dit is meer iets voor de toekomst maar als je nu toch ermee bezig bent. Het testen is me nog wat onduidelijk. Deels omdat ik na het bestuderen van unittests me afvroeg of de systeem test automatiseren noodzakelijk is. Misschien is dit juist iets om handmatig te draaien tijdens het maken van de commits. Ik zag dat je aanliep tegen verschillende bestands paden tussen de losse tests en de github tests. Deze kan je oplossen door een fixture te maken van het testbestand en dat in je test in te voegen als argument. Je kan pytest zelf een database laten opzetten in tmp_path met de geopackage. Daarnaast zag ik dat je ergens random choices invoerde. Voor een unittest is het juist belangrijk dat alle mogelijke paden door een functie altijd getest worden. Dit is ook waarom ik nu twijfel aan de meerwaarde van een automatische systeem test omdat je dan alleen de correcte paden test maar niet de mogelijke errors. Je had alle losse test geschreven voor een paar van de stappen. Je test voor de hrd database wel of er iets wordt ingevoerd en of alle punten zijn ingevoerd maar niet of deze rijen ook inhoudelijk kloppen. En voor de Questions wordt niet getest of de output van de Inquirerer wel correct wordt verwerkt. |
|
Ik zat gisteravond nog te denken dat dit idee het ook mogelijk maakt om 'terug te gaan vorige vragen'. Rekening houdend met:
|

TODO: Waarom doen we dit nou. Om in de toekomst de TUI makkelijker te beheren.
Verkenning om het de Terminal User Interface als workflow van
Question- enAction-objecten (parent:Step) te schrijven waarbij het afhangt van deStateof eenStepobject daadwerkelijk wordt uitgevoerd. Enkele voordelen:Op dit moment gebeurt dit met random keuzes voor de
Question-objecten.Step-objecten eenvoudig aanroepen. Dit maakt het veel minder abstract en ook voor een minder ervaren programmeur te volgen.Statemaakt het eenvoudig om te controleren of eenStepuitgevoerd moet worden. Dit is inclusief dat de data in de DB definitief is.Momenteel ben ik het idee nog aan het verder verkennen, voordat het ik het voorstel. De de logica uit de huidige TUI moet namelijk wel omgezet worden naar deze nieuwe versie.
PR aangemaakt voor inzicht in coverage.