Week 11 - reflectie

reflectie

Maandag – unit-tests in Jenkins

Vandaag heb ik de unit-tests voor mijn eerste twee controllers afgerond. Ik heb direct even wat tijd genomen om deze in Jenkins te laten uitvoeren.

Met behulp van twee plugins is dat snel gerealiseerd. De ene plugin maakt het uitvoeren van de unit-test met behulp van vstest-console.exe eenvoudig. De andere plugin zet het door vstest-console.exe in TRX formaat gegenereerde test resultaat om naar het JUnit formaat dat door Jenkins kan worden geïnterpreteerd en gerapporteerd. Als één test faalt, faalt de hele build en stopt de hele build pipeline.

Aantal en resultaat van de unit-tests per buildAantal en resultaat van de unit-tests per build

Dinsdag/Woensdag – nog meer unit-tests

Gisteren en vandaag weer flink bezig geweest met toevoegen van unit tests voor al mijn API controllers. En ik ben klaar!

Het resultaat is een whopping 277 tests en ze slagen allemaal! 😉

277 slagende unit-tests277 slagende unit-tests Nu verder met de views die gebruik maken van de controllers. In plaats van alle code te dupliceren, wil ik kijken of ik een generieke AngularJS controller kan maken die ik met behulp van compositie aanpas voor iedere API controller…

Donderdag/Vrijdag – release lijst en detail controllers

Alle soorten releases erven van de Release klasse en hebben daardoor dezelfde basisset aan properties. Op basis hiervan is het eenvoudig om één AngularJS controller te maken die alle soorten releases in lijsten kan tonen. Deze lijsten tonen alleen de gemeenschappelijke properties en daarmee is ook de HTML template voor alle releases gelijk.

Bij het openen van de details van een release, moeten natuurlijk wel de properties specifiek voor de gekozen release getoond worden. Maar, ook hier kan de controller generiek opgezet worden en is het vooral in de HTML template waar, als een property bestaat, deze ook wordt getoond. De specifiek properties zijn soms wel lastig door de gekozen naming convention. Ik heb er namelijk voor gekozen om de naam van de property gelijk te houden aan het type naam van de property. Dus een ZigBeeLightProductRelease heeft als property LightHardwareRelease van het type LightHardwareRelease, waar een ZigBeeBridgeProductRelease een property BridgeHardwareRelease van het type BridgeHardwareRelease heeft. Hierdoor gebruik je in de HTML template {{ Release.LightHardwareRelease }} en {{ Release.BridgeHardwareRelease }}. Hierdoor is het lastiger om een generieke template te maken en moet ik dus in de controller wat verzinnen om hier omheen te werken. Het idee is om ieder HardwareRelease type te kopiëren naar een HardwareRelease property. Hierdoor zijn de gedeelde properties eenvoudig in de template te gebruiken en is het alleen nog kijken naar de specifieke properties.

maandag 20 april 2015