// SPDX-License-Identifier: CC-BY-4.0
// SPDX-FileCopyrightText: 2023-2024 swt23w23

// To be able to publish this report in the repository under a free license,
// the system under test section had to be taken out,
// and some other sections had to be rewritten.
// The original report has been given to the other group.
== Cross-Testing

*Durchführende Gruppe:* 23 +
*Anwendung von Gruppe:* 22

=== Getestetes System

(Siehe Pflichtenheft Gruppe 22)

=== Fehler-Report

Vom Tabellenformat wurde abgewichen, da dies sehr unübersichtlich wäre.

==== Probleme beim Brausen

===== Authentifikation

*Pfad*: `+/+` +
*Parameter*: unauthentifiziert +
*Beschreibung*: *F0010:* Laut Anforderungsbeschreibung soll das System bei jedem Aufruf eine Authentifizierung verlangen. Dies ist eindeutig nicht der Fall. Evtl. falsche Anforderung? +
*Rückgabe*: Startseite (nicht Login-Seite)

*Pfad*: `+/stock+` u.a. +
*Parameter*: unauthentifiziert +
*Beschreibung*: Wird zwar in Navbar nicht angezeigt, jedoch dennoch aufrufbar +
*Rückgabe*: Stock (nicht Login-Seite)

===== Registrierung mit bestehender E-Mail-Adresse

*Pfad*: `+/register+` +
*Parameter*: `+1234@email.com+`,`+123+` +
*Beschreibung*: *F0021:* Die bereits hinterlegte Email wird abgeleht, aber in Form eines Crash. +
*Rückgabe*: `+java.lang.IllegalArgumentException: A different UserAccount with email 1234@email.com already exists!+`

===== Überbestellung

*Pfad*: `+/catalog/*/detail+`, `+/cart+` +
*Parameter*: * +
*Beschreibung*: *F0100, F0230:* Kein Schutz vor Überbestellung im Backend (es ist möglich, mit 2 Nutzern mehr Items/Personal in den Warenkorb zu legen, als es im Inventar gibt und diese dann auch zu bestellen) +
*Rückgabe*:
image:https://pad.sbruder.de/uploads/0dee8ff3-b7c9-48f8-a650-a814e61c58eb.png[https://pad.sbruder.de/uploads/0dee8ff3-b7c9-48f8-a650-a814e61c58eb]
image:https://pad.sbruder.de/uploads/ea4e9aa2-bf6c-460b-b471-953c7d771267.png[https://pad.sbruder.de/uploads/ea4e9aa2-bf6c-460b-b471-953c7d771267]
image:https://pad.sbruder.de/uploads/06cb0c26-97d4-4d7b-bad3-8c2d51c2e342.png[https://pad.sbruder.de/uploads/06cb0c26-97d4-4d7b-bad3-8c2d51c2e342]

===== Negative Artikelzahl

*Pfad*: `+/catalog/*/detail+`, `+/cart+` +
*Parameter*: * +
*Beschreibung*: *F0230*: Es ist möglich, eine negative Anzahl an Artikeln in den Einkaufskorb zu legen und diese auch zu bestellen (keine Validierung im Backend, siehe link:###globale-probleme[Soviet Russia (Globale Probleme)]. +
*Rückgabe*:
image:https://pad.sbruder.de/uploads/e44ec25b-d481-44da-acc6-aed64f7302b6.png[https://pad.sbruder.de/uploads/e44ec25b-d481-44da-acc6-aed64f7302b6]
image:https://pad.sbruder.de/uploads/fbbb1b9c-7153-41e4-9c80-7acc96c320b5.png[https://pad.sbruder.de/uploads/fbbb1b9c-7153-41e4-9c80-7acc96c320b5]

===== Unpassender Artikel

*Pfad*: `+/catalog/MobileBreakfast/detail+` +
*Parameter*: `+date=2024-02+` +
*Beschreibung*: *F0120:* „Unpassender“ Artikel in den Buchungsoptionen. Kummer-Nummer: `+116 111+` +
*Rückgabe*:
image:https://pad.sbruder.de/uploads/9eff528d-0fd5-42cf-8e14-f06720e6bb7a.png[https://pad.sbruder.de/uploads/9eff528d-0fd5-42cf-8e14-f06720e6bb7a]

===== Archivierung nicht möglich

*Pfad*: * +
*Parameter*: * +
*Beschreibung*: *F0243/F0310:* Die Option zur manuellen Archivierung konnte nicht gefunden werden. Folglich konnte die Option `+abgeschlossen+` in der Ansicht nicht überprüft werden. +
*Rückgabe*: *

===== Unintuitive Gestaltung des Kalenders

*Pfad*: `+/calendar+` +
*Parameter*: * +
*Beschreibung*: Unintuitive Gestaltung des Kalenders, Datum sowie Uhrzeiteingabe am Datum-Filter (ohne Funktion) +
*Rückgabe*:
image:https://pad.sbruder.de/uploads/01d50dc8-adc9-41e3-b542-d8036c979e0d.png[https://pad.sbruder.de/uploads/01d50dc8-adc9-41e3-b542-d8036c979e0d]
image:https://pad.sbruder.de/uploads/b826446c-9b58-4233-9dc6-6de4ad1d720e.png[https://pad.sbruder.de/uploads/b826446c-9b58-4233-9dc6-6de4ad1d720e]

===== Falsches Tabellen-Rendering

*Pfad*: `+/catalog/*/detail+` +
*Parameter*: * +
*Beschreibung*: Falsches Markup führt zu Problem bei Tabellen-Rendering +
*Rückgabe*: image:https://pad.sbruder.de/uploads/f4cc211a-5708-4f6e-aea9-11b5cbb92a53.png[https://pad.sbruder.de/uploads/f4cc211a-5708-4f6e-aea9-11b5cbb92a53]

===== Ungültiger Standardwert für Menge

*Pfad*: `+/catalog/*/detail+` +
*Parameter*: * +
*Beschreibung*: Ungültiger Standardwert für `+value+` (führt bei manchen Browsern zu falscher Darstellung, ist aber in jedem Fall nicht korrekt) +
*Rückgabe*: image:https://pad.sbruder.de/uploads/98988fe4-0c43-4fc1-859a-bb0f2af8c01b.png[https://pad.sbruder.de/uploads/98988fe4-0c43-4fc1-859a-bb0f2af8c01b]

===== Keine Fehlermeldung bei Datum in Vergangenheit

*Pfad*: `+/catalog/PartyService+` +
*Parameter*: Datum in der Vergangenheit +
*Beschreibung*: Keine Fehlermeldung wird angezeigt +
*Rückgabe*: Seite wird erneut aufgerufen, Eingaben verworfen, keine Fehlermeldung angezeigt.

===== Längenbeschränkung bei Registrierung unklar/nicht vorhanden

*F0021*:

Inwiefern „Längenüberschreitungen“ geprüft werden sollen, ist nicht klar
(kann daher also nicht genau geprüft werden).
Weder Template noch Code enthalten derartige Funktionalität.

===== Löschen von bereits bestellten Produkten schlägt fehl

*Pfad*: `+/stock+` +
*Parameter*: Klick auf Mülleimer neben Produkt, was bereits bestellt wurde +
*Beschreibung*: *F0340*: Sollte nach Pflichtenheft Produkt tatsächlich löschen +
*Rückgabe*: Crasht mit Standard-Seite (nicht freundlich)

===== Buchungen werden nach Inventaränderung nicht validiert/gelöscht

*Pfad*: `+/stock+` +
*Parameter*: Reduzieren eines in einer zukünftigen Buchung verwendeten Zubehör erst auf 1, dann auf 0 +
*Beschreibung*: *F0350*: Bei Reduktion auf 1 bleibt die Buchung mit voller Anzahl erhalten, bei Reduktion auf 0 crasht die Applikation +
*Rückgabe*: video::https://salespointframework.org/stock-reduction-crash.mp4[]

===== Kalender von Personal kann nicht eingesehen werden

*F0360*: Weder auf `+/staff+` noch auf `+/calendar+` sehe ich eine Option dazu.

===== Boss kann nicht Gehalt und Stundenlohn anzeigen

*Pfad*: `+/staff+` +
*Parameter*: * +
*Beschreibung*: *F0370*: Es wird lediglich „salary“ angezeigt +
*Rückgabe*: s.o.

===== Feuern von verplanten Mitarbeitern nicht möglich

*Pfad*: `+/staff+` +
*Parameter*: Löschen eines verbuchten Mitarbeites +
*Beschreibung*: Soll nach *F0390* möglich sein +
*Rückgabe*: Hat keinen Effekt, es wird auch keine Fehlermeldung angezeigt

===== `+Consumable+` können nicht ohne Nebeneffekte hinzugefügt werden

*Pfad*: `+/stock+` +
*Parameter*: Hinzufügen eines Consumable +
*Beschreibung*: Soll nach *F0320* ein Consumable hinzufügen +
*Rückgabe*: Fügt Consumable _und_ Rentable hinzu
video::https://salespointframework.org/consumable-only.mp4[]

===== Unintuitives Löschen von Bestellungen

*Pfad*: `+/editorderhistory+` +
*Parameter*: * +
*Beschreibung*: Wählt man keine Produkte aus, löscht der Mülleimer-Button direkt die ganze Bestellung ohne Warnung oder Bestätigungsanforderung an den Nutzer. +
*Rückgabe*: Bestellung wird gelöscht

===== Leere Bestellungen

*Pfad*: `+/catalog/*+` +
*Parameter*: * +
*Beschreibung*: Man kann leere Bestellungen erstellen, wenn man einen Gegenstand 0 mal bestellt und die Bestellung danach in den Warenkorb hinzufügt. +
*Rückgabe*: Leere Bestellung in "`/cart`"

==== Globale Probleme

Hier werden Pfad und Parameter weggelassen, da sie für diese Probleme unerheblich sind.

===== Message-Namen bei unbekannter locale

Werden nicht angezeigt, nur Platzhalter. Führt auf Startseite dazu, dass Anmelde- und Registrierungslink nicht angezeigt wird (letzteres evtl. *F0020*).

image:https://pad.sbruder.de/uploads/83ab1c5e-cdcd-4a56-a711-37e02e520bce.png[https://pad.sbruder.de/uploads/83ab1c5e-cdcd-4a56-a711-37e02e520bce]

===== Datenschutz CDN

Keine datenschutzkonforme Einbindung von Boostrap (über CDN ohne vorherige Einwilligung)

===== Persistenz-Crash

Applikation crasht bei zweitem Start mit aktivierter Persistenz. Dadurch ist Persistenz de facto nicht gegeben.

Start mit `+java -jar swt23w22-1.0.0.BUILD-SNAPSHOT.jar --spring.config.name=test+`

`+test.properties+` (angepasst nach developer documentation auf Basis der `+application.properties+` in jar):

....
spring.datasource.url=jdbc:h2:./db/cateringservice
spring.jpa.hibernate.ddl-auto=update
salespoint.authentication.login-via-email=true
....

Logs:

....
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-12-20T13:08:21.368Z ERROR 2 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: Failed to execute ApplicationRunner
    [snip]
Caused by: org.springframework.dao.IncorrectResultSizeDataAccessException: query did not return a unique result: 2
....

===== Browser-Anforderungen

Browser-Anforderungen in Entwicklerdokumentation zu niedrig angesetzt, z.B. siehe Video für `+date+`-Input-Feld, welches erst von https://caniuse.com/input-datetime[Firefox 57] unterstützt wird, nicht von Firefox 4.0

video::https://salespointframework.org/datetime-input.mp4[]

===== Sprache

Sprache der Applikation nicht konsistent (schwankt zwischen Deutsch und Englisch)

image:https://pad.sbruder.de/uploads/07e41dc8-5b37-437a-bafc-a2f022e12a8b.png%20=x350[https://pad.sbruder.de/uploads/07e41dc8-5b37-437a-bafc-a2f022e12a8b]

===== Katalog für nicht angemeldete Nutzer

Katalog wird für nicht angemeldete Nutzer in der Menüleiste angezeigt, kann aber nicht angesehen werden (Link zur Registrierung ist zudem nicht klickbar)
image:https://pad.sbruder.de/uploads/c85bbe92-3183-49b7-96e6-2479697e3bf7.png%20=500x[https://pad.sbruder.de/uploads/c85bbe92-3183-49b7-96e6-2479697e3bf7]

===== Arbeitsstunden und Arbeitszeiten von Personal anpassen nicht möglich

*F0380* ist recht ungenau formuliert, jedoch kann ich keine derartige Funktionalität finden.

===== Rechnung wird nicht als E-Mail versendet

Wird von *F0244* verlangt, ist aber offensichtlich nicht der Fall.

===== Nicht verfügbare Ressourcen werden eingebunden

image:https://pad.sbruder.de/uploads/2cb4b234-231b-4087-9045-58d1a370035f.png[https://pad.sbruder.de/uploads/2cb4b234-231b-4087-9045-58d1a370035f]

(`+NS_ERROR_CORRUPTED_CONTENT+` heißt hier: CSS/JS erwartet, HTML erhalten; dazu wird 404 zurückgegeben, hier im Netzwerkinspektor nicht sichtbar)

===== In Soviet Russia, catering service pays you!

In dieser Demonstration werden folgende Probleme kombiniert:

* Stock kann von jeder Person gesehen und bearbeitet werden
* Rabatte können außerhalb von latexmath:[[0;100]] liegen
* Backend validiert dies nicht

video::https://salespointframework.org/youpayme.mp4[]

===== F0241

Erstellung einer Buchung pro Service aus dem Warenkorb.

image:https://pad.sbruder.de/uploads/c3676d34-7037-41f1-9dc7-519f8c0789de.png[im Warenkorb des bestellenden Nutzers]

Bestellung

image:https://pad.sbruder.de/uploads/ddb569c9-f51c-4434-b3ea-47a5dcc1d44e.png[als
bestellender Nutzer nach der Bestellung]

image:https://pad.sbruder.de/uploads/40de60c7-a1a9-4ad9-abce-e926bed89dfc.png[als
Admin nach der Bestellung]

Da nirgends eine Definition von des Begriffs _Buchung_ oder im Webinterface das Wort Buchung in den gezeigten Screenshots auftaucht, nehme ich "`Bestellung`" als ein Synonym dafür an.
Da nach den Screenshots eine "`Order-ID`"/"`Bestellnummer`".
Damit wäre F0421 verfehlt.

===== F0242

Bezahlen einer angelegten Buchung, Markierung mit Status „ausstehend“.

image:https://pad.sbruder.de/uploads/e75e1d1b-6a8c-48b5-a3c4-8089652c3b22.png[https://pad.sbruder.de/uploads/e75e1d1b-6a8c-48b5-a3c4-8089652c3b22]

Wo kann man den _Status_ ändern?

 * als Admin scheint es über das Stifticon nicht zu gehen
 * als bestellender Nutzer ist scheinbar nur noch eine Art Rechnung der Bestellung downloadbar

===== F0530

Änderung der persönlichen Daten ist nicht möglich:
image:https://pad.sbruder.de/uploads/f1848c06-f291-47d3-9e37-bd06730c9d83.png[https://pad.sbruder.de/uploads/f1848c06-f291-47d3-9e37-bd06730c9d83]

===== F0520

Kein Login für Mitarbeiter möglich.

===== F0510

Kein Login für Mitarbeiter möglich.

=== Sonstiges

* Optik recht spartanisch, keine Verwendung des eingebundenen Bootstrap, CSS recht repetetiv und nicht unbedingt idiomatisch
* Fehlende Features s.o.
* Usability auf Mobilgeräten sehr schlecht: image:https://pad.sbruder.de/uploads/5f5ceb4e-708f-4a37-af02-bc79291af280.png[https://pad.sbruder.de/uploads/5f5ceb4e-708f-4a37-af02-bc79291af280]
* Formatierung der Uhrzeit in der Rechnungsanzeige von "`/userprofile`" inkorrekt bspw. wird "`Rechnung von 5.1.2024 *13:2* Uhr.`" angezeigt anstatt "`13:02 Uhr`"

=== Verbesserungsvorschläge

* Verwirrende Terminologie: Inventar/Stock
* Verwirrende Terminologie: „Menü“ als Überschrift im Inventar (nicht direkt klar, was das sein soll), „Consumable“ beim Hinzufügen (anderer Begriff)
* Verwirrende Terminologie: Gehalt/Lohn (im F0370 werden beide Begriffe separat verwendet, implementiert ist jedoch Gehalt, jedoch mit einem Betrag, der eher auf Lohn schließen lässt)
* Da nirgends eine Definition von des Begriffs _Buchung_ oder im Webinterface das Wort Buchung in den gezeigten Screenshots auftaucht, nehme ich "`Bestellung`" als ein Synonym dafür an. (F0421)
