GitHunt
SP

spg-puw/wmc__aufgabe0207

WMC - Aufgabe 02/07 - COVID-Test

Aufgabe COVID-Test

Aufgabe by PUW. Die folgenden Aufgaben wurde aus dem Repository von Koll. Schletz übernommen und um Tests ergänzt.

Aufgabe

In der klassischen objektorientierten Programmierung würde ein kleines Programm, welches den
3G Nachweis von MitarbeiterInnen verwalten kann, so modelliert werden:

Entwickle nun eine JavaScript Lösung für dieses Modell. Dabei müssen natürlich Besonderheiten der
Sprache JavaScript berücksichtigt werden:

  • Um eine read-only Collection zu simulieren, kannst du ein get Property für safetyChecks definieren.
    Es liefert mit function() { return myArray.values(); }; die Elemente als sogenannter iterator.
  • Achte auf die naming conventions der Properties (Kleinschreibung in JavaScript).
  • Es gibt keine Interfaces in JavaScript. Verwende daher normale Klassen, die dann mit extends
    erweitert werden (siehe https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
    Auch die Antwort von https://stackoverflow.com/questions/29480569/does-ecmascript-6-have-a-convention-for-abstract-classes/30560792
    ist hilfreich wenn es darum geht, eine abstrakte Klasse oder ein Interface zu simulieren.
  • Die Methode isValid() im (simulierten) Interface kann in Javascript einfach undefined zurückgeben.
    Das passiert bei der Deklaration der Funktion ohne Inhalt automatisch.
  • Prüfe bei addSafetyCheck, ob auch ein safety check als Argument übergeben wurde.
  • Deklariere jede Klasse in einem Modul (siehe die Dateien in classes/*.mjs). Die exports und imports sowie die Namensvorgaben sind schon vorhanden.
  • Implementiere die toString Methode für Cured, Test und Vaccination; diese geben jeweils den Klassennamen und das Datum wieder (z.B. Vaccination: DATUM1, DATUM2)
  • Teste die Implementierung in index.mjs mit geeigneten Aufrufen, ein kurzer Democode ist dort schon vorhanden.
  • Führe die Tests (npm run test) durch und behebe alle Fehler in deinem Code.

Die Businesslogik ist einfach:

  • Ein Test ist 48h gültig.
  • Bei Cured (Genesung) liegt die Gültigkeit bei 180 Tagen.
  • Eine Impfung ist bis 270 Tage nach der Zweitimpfung gültig. Achte mit einem set Property darauf,
    dass secondVaccination nicht überschrieben werden kann wenn es einen Wert besitzt. Außerdem
    darf es erst gesetzt werden, wenn firstVaccination einen Datumswert besitzt. Ansonsten ist
    der Wert einfach nicht zu setzen. Auf https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set
    gibt es Informationen über setter.
  • IsSave() liefert true oder false zurück, je nach dem ob der Mitarbeiter zum übergebenen
    Zeitpunkt mindestens einen gültigen Nachweis in der Collection der Nachweise gespeichert hat.

Testsetup

Es wird jest zum Testen verwendet. Das Setup erfolgt:

npm install

Das Programm selber kann mit folgendem Befehl gestartet werden:

npm run start

Anschließend können die Tests mit folgendem Befehl durchlaufen werden:

npm run test

Contributors

Created July 21, 2023
Updated August 7, 2023