|
|
|
|
@ -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"));
|
|
|
|
|
}
|
|
|
|
|
}
|