From a88ad8ec1bcda69ca7b59aa5f349a4504a7be963 Mon Sep 17 00:00:00 2001 From: Christian Khazanovych <3028363@stud.th-mannheim.de> Date: Wed, 24 Jun 2026 17:24:52 +0200 Subject: [PATCH] Gruppe L: Bestandsmanagement Tests hinzugefuegt - 10/10 bestanden --- data/produkt_counter.txt | 2 +- data/produkte.csv | 6 + .../BestandsmanagementTest.class | Bin 0 -> 4035 bytes .../BestandsmanagementTest.java | 114 ++++++++++++++++++ 4 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 out/bestandsmanagement/BestandsmanagementTest.class create mode 100644 src/test/java/bestandsmanagement/BestandsmanagementTest.java 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 0000000000000000000000000000000000000000..fb386b39ed408b5a39374ef21425cab010543379 GIT binary patch literal 4035 zcmaJ^`Bxj)75)ZHq=+#l*hw7Qi6^$>uoxt<*a&QD7EzO^gaW~_(>57NPtsV@NS=kn zbV>Jp-_w2j2YOD6Npnt5f9@aE)9=lUq(KbE$I@foefRtBz2Cj_`0xMz^=|-K{4IeV z^u};PMIWA0F!(^<)sr>dEGOT{KM(~+!BaO4({L6P^bU{g#1L2TN?zEGZWisjZt7)G z7p9Zkuo^|T>TC&X*C>d!db5^5482dIA8HIIRSe*if{}=mOGlh-^NE6(?fX*jYA)i~ zQNZ~)o>9;*Pd9xwF`QO##tW&gJC)>;QC<-RqpsKDcveAQIx~^UBrt^MW%y?mJUg80 zBw)+246{5xvJ=NS1t(GyY1+ncLB)%BNx?t>vS`*sS(pkM5r=(uUEuT4PuC)_pAh+c z0vcY9;gX8WxS~L7Smopcm$l+&({O~9)SE_f(PkbUqhZ<#PU_w->kVh!t<}21_3O=W z6S#_3V;EL3f>8zMj!(V3u8ppf>#Bq!ASaj`O zVO4dv4RcS_nwBsq zzOyZDba#U++GkXJ7M~*xKfBq7F7wOI57P()8WLDrvT?l2L3Ky3*M${Fo>iUkIy;7< z3V{-pX}g7rSl0`cC9x-rLdA5=vVtpNfR@O71lKWY$(&(3^Zls6h~a^Xsuak8HzL~G zoK%LLtv8)V(yp$;M1!(n4y1uxmqu_;2*K~}!*fDH_#}`er;po9Mx|EBaSWBYRutb)nV%H8ig;Y9druL-0aLh?L z`g!K^G21JK-K^=4*7dreRo|{&lY?VodwD#So@<4!>Ha*|#uv1;6>TF(uEwEJ7J1p7 zXGm#sU6dII9|o^41#{BRWXDgPQ@{+Y>RMo?y=PcOP0yEEo{H&c!>i+|%m}9deNL^4 zN=>i}Ey*w-Hq~+1sF;F&+Uo7{#bVLPbO7WJ_^jkKJ=aE0$*6*C2FGi*X0ja|8DKE< zw7PCp4Zbxzdb6Y_t1uII-e}kcBUf-uI-lt{U(gP@XXk``vKQ#%dVn1sb{XmBdMC_$ zdk|`R)!`hVbR?GzIYvB2Q`a=6ZJNB!(&vq>$j+XUZg0$K-mYd+O^0&ljXOu%wnV8U zEYIx?I+V4YT@8&wKaaE0+3cJa9+Fzw$g{$Hy=csvrMYHaRCUvIgw)NR%ePXY%F7Zx zX8caGo5HdL+gVt`+>=2GD@cffn-U^3r?r|=BeRfQSJlD-N~cNud8d$0wa#X(QlnO8 zz6yMg-lpSpD&*KN_c88Eu344+*(!fJMdyjFhHDkXsv!r!`9KGu+n?;a3EBUgZtMUT$M*5c5I@EbFx9~uA_8z07jcf)t@B9Yf`@jB2;b+<4~YLm8$aUm z$8Ff<0QT~6usto*8y%zp#tpoTmxyx-SE5jULW7^SQC0$!D;~;RL~w~?VMZ9x7=f-u z!TgLcKX1dV2QZ@^%uNqwA)LeB7K%*a?E|cIV)C<>W=vCzX_^u@l)q_5wAya|B#1%)8<|e zs+0A&zvJQRhe(}~*}Cg*@1u|#`v|-Mu}nknjP-tmS`Yq%tNUmk;`SVS7uX=TP3CY5 zli0=zZ;Z0hx}^VGKKfmo&j|ZMcJE0K&}P^N2#MTp-}{^nZ%6t1Jx~6j?MrYa>yq(& zxn6AVg<}f|Vd&95J}>QLarW^gS%r`g&(Rg|E_IQoE(#cCcBgqmoJA>$#~*3@r#26n xW65LD 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