Gruppe K: Belegworkflow Tests hinzugefuegt - 10/10 bestanden

main
Christian Khazanovych 2026-06-24 17:38:34 +02:00
parent 3d74423278
commit 3c0f1cee07
6 changed files with 161 additions and 0 deletions

View File

@ -0,0 +1 @@
9

View File

@ -0,0 +1,9 @@
AN-2026-000001;2026-06-24;K-000001;2026-07-24;OFFEN;0.00;0.00;0.00
AN-2026-000002;2026-06-24;K-000001;2026-07-24;OFFEN;0.00;0.00;0.00
AN-2026-000003;2026-06-24;K-000001;2026-07-24;UEBERFUEHRT;0.00;0.00;0.00
AN-2026-000004;2026-06-24;K-000099;2026-07-24;OFFEN;0.00;0.00;0.00
AN-2026-000005;2026-06-24;K-000001;2026-07-24;UEBERFUEHRT;0.00;0.00;0.00
AN-2026-000006;2026-06-24;K-000001;2026-07-24;UEBERFUEHRT;0.00;0.00;0.00
AN-2026-000007;2026-06-24;K-000001;2026-07-24;UEBERFUEHRT;0.00;0.00;0.00
AN-2026-000008;2026-06-24;K-000001;2026-07-24;UEBERFUEHRT;0.00;0.00;0.00
AN-2026-000009;2026-06-24;K-000001;2026-07-24;OFFEN;20.00;3.80;23.80
1 AN-2026-000001 2026-06-24 K-000001 2026-07-24 OFFEN 0.00 0.00 0.00
2 AN-2026-000002 2026-06-24 K-000001 2026-07-24 OFFEN 0.00 0.00 0.00
3 AN-2026-000003 2026-06-24 K-000001 2026-07-24 UEBERFUEHRT 0.00 0.00 0.00
4 AN-2026-000004 2026-06-24 K-000099 2026-07-24 OFFEN 0.00 0.00 0.00
5 AN-2026-000005 2026-06-24 K-000001 2026-07-24 UEBERFUEHRT 0.00 0.00 0.00
6 AN-2026-000006 2026-06-24 K-000001 2026-07-24 UEBERFUEHRT 0.00 0.00 0.00
7 AN-2026-000007 2026-06-24 K-000001 2026-07-24 UEBERFUEHRT 0.00 0.00 0.00
8 AN-2026-000008 2026-06-24 K-000001 2026-07-24 UEBERFUEHRT 0.00 0.00 0.00
9 AN-2026-000009 2026-06-24 K-000001 2026-07-24 OFFEN 20.00 3.80 23.80

View File

@ -0,0 +1 @@
5

View File

@ -0,0 +1,5 @@
R-2026-000001;2026-06-24;K-000001;2026-06-24;2026-06-24;2026-07-08;AN-2026-000003;OFFEN;true;0.00;0.00;0.00
R-2026-000002;2026-06-24;K-000001;2026-06-24;2026-06-24;2026-07-08;AN-2026-000005;OFFEN;false;0.00;0.00;0.00
R-2026-000003;2026-06-24;K-000001;2026-06-24;2026-06-24;2026-07-08;AN-2026-000006;OFFEN;false;0.00;0.00;0.00
R-2026-000004;2026-06-24;K-000001;2026-06-24;2026-06-24;2026-07-08;AN-2026-000007;OFFEN;false;20.00;3.80;23.80
R-2026-000005;2026-06-24;K-000001;2026-06-24;2026-06-24;2026-07-08;AN-2026-000008;OFFEN;false;20.00;3.80;23.80
1 R-2026-000001 2026-06-24 K-000001 2026-06-24 2026-06-24 2026-07-08 AN-2026-000003 OFFEN true 0.00 0.00 0.00
2 R-2026-000002 2026-06-24 K-000001 2026-06-24 2026-06-24 2026-07-08 AN-2026-000005 OFFEN false 0.00 0.00 0.00
3 R-2026-000003 2026-06-24 K-000001 2026-06-24 2026-06-24 2026-07-08 AN-2026-000006 OFFEN false 0.00 0.00 0.00
4 R-2026-000004 2026-06-24 K-000001 2026-06-24 2026-06-24 2026-07-08 AN-2026-000007 OFFEN false 20.00 3.80 23.80
5 R-2026-000005 2026-06-24 K-000001 2026-06-24 2026-06-24 2026-07-08 AN-2026-000008 OFFEN false 20.00 3.80 23.80

Binary file not shown.

View File

@ -0,0 +1,145 @@
package belegworkflow;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
class BelegworkflowTest {
private BelegworkflowService service;
private List<Dokumentposition> testPositionen;
@BeforeEach
void setUp() throws Exception {
service = new BelegworkflowService();
testPositionen = List.of(new Dokumentposition(
"P-000001", "Testprodukt",
2, new BigDecimal("10.00"), new BigDecimal("0.19")
));
}
@Test
@DisplayName("TC-01: Angebot erstellen -> Angebotsnummer AN- vergeben (F-01, F-02)")
void tc01AngebotErstellen() {
Angebot a = service.erstelleAngebot("K-000001", testPositionen,
LocalDate.now().plusDays(30));
assertNotNull(a);
assertTrue(a.getBelegnummer().startsWith("AN-"));
assertEquals(AngebotStatus.OFFEN, a.getStatus());
}
@Test
@DisplayName("TC-02: Angebot ohne Kunde wird abgelehnt (F-01)")
void tc02AngebotOhneKunde() {
Angebot a = service.erstelleAngebot("", testPositionen,
LocalDate.now().plusDays(30));
assertNull(a);
}
@Test
@DisplayName("TC-03: Angebot ohne Positionen wird abgelehnt (F-01)")
void tc03AngebotOhnePositionen() {
Angebot a = service.erstelleAngebot("K-000001", List.of(),
LocalDate.now().plusDays(30));
assertNull(a);
}
@Test
@DisplayName("TC-04: Summenberechnung korrekt (F-03, GR-06)")
void tc04Summenberechnung() {
Angebot a = service.erstelleAngebot("K-000001", testPositionen,
LocalDate.now().plusDays(30));
assertNotNull(a);
assertEquals(new BigDecimal("20.00"), a.getSummeNetto());
assertEquals(new BigDecimal("3.80"), a.getSummeSteuer());
assertEquals(new BigDecimal("23.80"), a.getSummeBrutto());
}
@Test
@DisplayName("TC-05: Rechnung aus Angebot -> Angebot wird auf UEBERFUEHRT gesetzt (F-05)")
void tc05RechnungAusAngebot() {
Angebot a = service.erstelleAngebot("K-000001", testPositionen,
LocalDate.now().plusDays(30));
assertNotNull(a);
Rechnung r = service.erstelleRechnungAusAngebot(a.getBelegnummer(),
LocalDate.now(), LocalDate.now(), LocalDate.now().plusDays(14));
assertNotNull(r);
assertTrue(r.getBelegnummer().startsWith("R-"));
assertEquals(AngebotStatus.UEBERFUEHRT, a.getStatus());
}
@Test
@DisplayName("TC-06: Rechnungsnummer ist fortlaufend (F-07, GR-01)")
void tc06RechnungsnummerFortlaufend() {
Angebot a1 = service.erstelleAngebot("K-000001", testPositionen,
LocalDate.now().plusDays(30));
Angebot a2 = service.erstelleAngebot("K-000001", testPositionen,
LocalDate.now().plusDays(30));
assertNotNull(a1);
assertNotNull(a2);
Rechnung r1 = service.erstelleRechnungAusAngebot(a1.getBelegnummer(),
LocalDate.now(), LocalDate.now(), LocalDate.now().plusDays(14));
Rechnung r2 = service.erstelleRechnungAusAngebot(a2.getBelegnummer(),
LocalDate.now(), LocalDate.now(), LocalDate.now().plusDays(14));
assertNotNull(r1);
assertNotNull(r2);
assertNotEquals(r1.getBelegnummer(), r2.getBelegnummer());
}
@Test
@DisplayName("TC-07: Rechnung aus ueberführtem Angebot wird abgelehnt (F-05)")
void tc07RechnungAusUeberfuehrtemAngebot() {
Angebot a = service.erstelleAngebot("K-000001", testPositionen,
LocalDate.now().plusDays(30));
assertNotNull(a);
service.erstelleRechnungAusAngebot(a.getBelegnummer(),
LocalDate.now(), LocalDate.now(), LocalDate.now().plusDays(14));
Rechnung r2 = service.erstelleRechnungAusAngebot(a.getBelegnummer(),
LocalDate.now(), LocalDate.now(), LocalDate.now().plusDays(14));
assertNull(r2);
}
@Test
@DisplayName("TC-08: Festgeschriebene Rechnung kann nicht geaendert werden (F-10)")
void tc08FestgeschriebeneRechnung() {
Angebot a = service.erstelleAngebot("K-000001", testPositionen,
LocalDate.now().plusDays(30));
assertNotNull(a);
Rechnung r = service.erstelleRechnungAusAngebot(a.getBelegnummer(),
LocalDate.now(), LocalDate.now(), LocalDate.now().plusDays(14));
assertNotNull(r);
service.finalisiereRechnung(r.getBelegnummer());
assertTrue(r.isFestgeschrieben());
r.setStatus(RechnungStatus.BEZAHLT);
assertEquals(RechnungStatus.OFFEN, r.getStatus());
}
@Test
@DisplayName("TC-09: Kunde ist referenziert wird erkannt (F-12)")
void tc09KundeReferenziert() {
service.erstelleAngebot("K-000099", testPositionen,
LocalDate.now().plusDays(30));
assertTrue(service.istKundeReferenziert("K-000099"));
assertFalse(service.istKundeReferenziert("K-999999"));
}
@Test
@DisplayName("TC-10: Produkt ist referenziert wird erkannt (F-12)")
void tc10ProduktReferenziert() {
service.erstelleAngebot("K-000001", testPositionen,
LocalDate.now().plusDays(30));
assertTrue(service.istProduktReferenziert("P-000001"));
assertFalse(service.istProduktReferenziert("P-999999"));
}
}