Closed phlobbi closed 1 year ago
Tipp für den, der das übernehmen will: Der Debugger ist hier äußerst hilfreich. Verwendet Breakpoints, die Ausdrucksauswertung, usw. Im Learn Bereich von IntelliJ stehen auch noch paar hilfreiche Sachen drin und wie man sie benutzt.
Ich schaus mir mal an, vielleicht finde ich was
Der Fehler liegt definitiv in der validatePickUpDateBeforeDropOffDate.
Macht es Sinn, wenn wir Buchungsdaten um Uhrzeiten erweitern? Damit könnten die am gleichen Tag sein und !pickUpDate.before(DropOffDate) betrachtet die Uhrzeiten mit. Für Auto wäre das irrelevant, Erstellungsdatum braucht keine Uhrzeit, aber für die Buchung wäre das unter Umständen sinnvoll.
Ich hab nämlich so ein wenig das Gefühl, dass ich mir das Genick breche, wenn ich jetzt versuche alle Fälle abzudecken, als wenn wir einfach neue Methoden, die die Zeit betrachten, einführen, sowie das UI von Booking um Uhrzeiten erweitern.
Ich glaube mittlerweile auch dass das so ziemlich die einfachste Möglichkeit wäre, wenn wir Uhrzeiten erlauben. Wieviel Aufwand würde das denn sein, das im UI und co. anzupassen?
Boah, gute Frage, es wirkt glaube ich mehr als es ist.
Booking selbst dürfe AFAIK unberührt bleiben, da sollte nichts schiefgehen, denn es wird alles in Calendar gespeichert..
Ich würd behaupten unter den Voraussetzungen bin ich locker den Rest des Tages mit beschäftigt, vielleicht morgen noch, ich kann so Null einschätzen, wie lange mich Fehler aufhalten und ob überhaupt welche passieren
Ich glaub es läuft jetzt relativ stabil, ich muss mir nur noch ein paar deiner Testfälle anschauen @phlobbi, da failen momentan 3 von 35
Update, nur noch 2
So hab ich mich neulich auch gefühlt beim fixen von Tests 🥲
Bei einem konnt ich noch easy den Fehler finden, da war newPickUpDate = Calendar.getInstance() und newPickUpDate.add(Calendar.DAY_OF_THE_YEAR, -2), das führt zu nem Fehler, weil damit das Abholdatum in der Vergangenheit liegt, da musste ich also den Test ändern
Welcher schlägt im Moment noch fehl?
testCalculateFinalPriceWithTwoDaysDelay liefert statt 320 einen Wert von 260, da fuchse ich mich grad in die Rechnung rein
Ich glaub du brauchst für den Final Price nicht noch einen Tag von den lateDays abzuziehen, das sollte stimmen, weil in dem Statement kommen an: calculatedFinalPrice = 200, newPreisPerDay = 60, lateDays = 2... Damit kämst du auf die 320 die du willst, aber da du noch einen Tag abziehst bleiben 260
Ist sowieso egal, jetzt ist ne andere Preisberechnung falsch
Schade dass er hier noch bisschen auf sich warten lässt: https://github.com/features/preview/copilot-x
Also ich mach jetzt einen auf Frankreich, ich wehe mit der weißen Fahne. Ich hab keine Ahnung warum calculateDaysBetween bei 1 und 2 Tagen Unterschied beides mal 1 liefert
Das hat mich auch schon echt fertig gemacht. Stell mal deinen funktionierenden Fortschritt online, ich schau dann mal gleich rein.
Ich habs mal gepusht, ich hab an den Methoden noch ein klein wenig rumgespielt (also bei der einen +1, bei der anderen -1), aber die Änderungen siehst du ja
Die Fehlermethode ist angepasst, ich hab jetzt eine ganz neue Berechnung für calculateDaysBetween selbst geschrieben, der einzige Struggle ist noch, wenn ein Kunde ein Auto am Jahresende abgeben sollte, aber das realDropOffDate im Neujahr ist
Gibt es schon ein Issue dafür?
Aktuelles Verhalten
Wird eine Buchung über die Erstellungs-Methode im UI (wird mit #96 gemerged) erstellt, kann eine Buchung, die am gleichen Tag beginnt und endet, nicht abgeschlossen werden.
Erwartetes Verhalten
Eine solche Buchung müsste möglich sein.
Schritte zum Reproduzieren
Noch was?
Aufgrund der Fehlermeldung führt dies auf die Methode validatePickUpDateBeforeDropOffDate() in BookingValidation zurück. Bei einem primitiven Fix, der auch das gleiche Datum erlaubt, kam es aber ebenfalls zu Fehlern.