diff --git a/data/produkt_counter.txt b/data/produkt_counter.txt index 56a6051..301160a 100644 --- a/data/produkt_counter.txt +++ b/data/produkt_counter.txt @@ -1 +1 @@ -1 \ No newline at end of file +8 \ No newline at end of file diff --git a/data/produkte.csv b/data/produkte.csv index e69de29..08c7dcd 100644 --- a/data/produkte.csv +++ b/data/produkte.csv @@ -0,0 +1,6 @@ +P-000002;Verfuegbar;9.99;0.19;5;; +P-000003;Ausverkauft;9.99;0.19;0;; +P-000004;Hammer;5.99;0.19;20;; +P-000006;Edit Artikel;15.00;0.19;10;; +P-000007;Ref Artikel;1.00;0.19;5;; +P-000008;Testprodukt;19.99;0.19;100;; diff --git a/out/bestandsmanagement/BestandsmanagementTest.class b/out/bestandsmanagement/BestandsmanagementTest.class new file mode 100644 index 0000000..fb386b3 Binary files /dev/null and b/out/bestandsmanagement/BestandsmanagementTest.class differ diff --git a/src/test/java/bestandsmanagement/BestandsmanagementTest.java b/src/test/java/bestandsmanagement/BestandsmanagementTest.java new file mode 100644 index 0000000..c080e3a --- /dev/null +++ b/src/test/java/bestandsmanagement/BestandsmanagementTest.java @@ -0,0 +1,114 @@ +package bestandsmanagement; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.math.BigDecimal; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class BestandsmanagementTest { + + private ProduktServiceImpl service; + + @BeforeEach + void setUp() throws Exception { + service = new ProduktServiceImpl(); + } + + @Test + @DisplayName("TC-01: Artikel anlegen -> ID P-000001 vergeben") + void tc01ArtikelAnlegen() { + Produkt p = service.produktAnlegen("Testprodukt", + new BigDecimal("19.99"), new BigDecimal("0.19"), 100, null); + assertNotNull(p); + assertTrue(p.getProduktId().startsWith("P-")); + } + + @Test + @DisplayName("TC-02: Artikel mit negativem Bestand wird abgelehnt (F-09)") + void tc02NegativerBestand() { + Produkt p = service.produktAnlegen("Testprodukt", + new BigDecimal("19.99"), new BigDecimal("0.19"), -1, null); + assertNull(p); + } + + @Test + @DisplayName("TC-03: Artikel ohne Bezeichnung wird abgelehnt") + void tc03FehlenderName() { + Produkt p = service.produktAnlegen("", + new BigDecimal("19.99"), new BigDecimal("0.19"), 10, null); + assertNull(p); + } + + @Test + @DisplayName("TC-04: Bestand 0 -> Artikel wird als nicht verfuegbar markiert (F-08)") + void tc04BestandNull() { + Produkt p = service.produktAnlegen("Ausverkauft", + new BigDecimal("9.99"), new BigDecimal("0.19"), 0, null); + assertNotNull(p); + assertFalse(p.isVerfuegbar()); + } + + @Test + @DisplayName("TC-05: Bestand > 0 -> Artikel ist verfuegbar") + void tc05BestandPositiv() { + Produkt p = service.produktAnlegen("Verfuegbar", + new BigDecimal("9.99"), new BigDecimal("0.19"), 5, null); + assertNotNull(p); + assertTrue(p.isVerfuegbar()); + } + + @Test + @DisplayName("TC-06: Artikel bearbeiten aktualisiert Preis (F-03, F-04)") + void tc06ArtikelBearbeiten() { + Produkt p = service.produktAnlegen("Edit Artikel", + new BigDecimal("10.00"), new BigDecimal("0.19"), 10, null); + assertNotNull(p); + boolean ok = service.produktBearbeiten(p.getProduktId(), "Edit Artikel", + new BigDecimal("15.00"), new BigDecimal("0.19"), 10, null); + assertTrue(ok); + assertEquals(new BigDecimal("15.00"), + service.findeProdukt(p.getProduktId()).getNettoEinzelpreis()); + } + + @Test + @DisplayName("TC-07: Suche nach Bezeichnung findet Treffer (F-07)") + void tc07SucheNachBezeichnung() { + service.produktAnlegen("Hammer", + new BigDecimal("5.99"), new BigDecimal("0.19"), 20, null); + List treffer = service.sucheNachBezeichnung("Hammer"); + assertFalse(treffer.isEmpty()); + assertEquals("Hammer", treffer.get(0).getBezeichnung()); + } + + @Test + @DisplayName("TC-08: findeProdukt gibt null fuer unbekannte ID zurueck") + void tc08FindeProduktNull() { + assertNull(service.findeProdukt("P-999999")); + } + + @Test + @DisplayName("TC-09: Loeschen referenzierter Artikel wird abgelehnt (F-11)") + void tc09LoeschsperreReferenzierterArtikel() { + Produkt p = service.produktAnlegen("Ref Artikel", + new BigDecimal("1.00"), new BigDecimal("0.19"), 5, null); + assertNotNull(p); + p.belegHinzufuegen("R-2026-000001"); + boolean geloescht = service.produktLoeschen(p.getProduktId()); + assertFalse(geloescht); + } + + @Test + @DisplayName("TC-10: Loeschen nicht referenzierter Artikel funktioniert (F-10)") + void tc10LoeschenErfolgreich() { + Produkt p = service.produktAnlegen("Temp Artikel", + new BigDecimal("1.00"), new BigDecimal("0.19"), 5, null); + assertNotNull(p); + boolean geloescht = service.produktLoeschen(p.getProduktId()); + assertTrue(geloescht); + assertNull(service.findeProdukt(p.getProduktId())); + } +} \ No newline at end of file