+ JUnit Test:

+ leerer Warenkorb
	+ Versand Netto und dessen MwSt
	+ Produkte Netto und deren MwSt
	+ Gesamtpreis

+ optische Verfeinerungen
main
eronahasani 2025-12-14 14:08:37 +01:00
parent fb855e3e1b
commit 5f7e3d2dad
6 changed files with 137 additions and 8 deletions

View File

@ -8,4 +8,11 @@
</buildSpec> </buildSpec>
<natures> <natures>
</natures> </natures>
<linkedResources>
<link>
<name>produkte.csv</name>
<type>1</type>
<locationURI>PARENT-4-PROJECT_LOC/Desktop/produkte.csv</locationURI>
</link>
</linkedResources>
</projectDescription> </projectDescription>

View File

@ -1,4 +1,5 @@
package backend; package backend;
import java.util.ArrayList;
public class Bestellung { public class Bestellung {
private String name; private String name;
@ -28,4 +29,10 @@ public class Bestellung {
public double getGesamtpreis() { public double getGesamtpreis() {
return gesamtpreis; return gesamtpreis;
} }
public void warenkorbLeeren() {
for (WarenkorbPosition wp : new ArrayList<>(warenkorb.getPositionen())) {
warenkorb.entfernen(wp.getProdukt());
}
}
} }

View File

@ -12,7 +12,7 @@ public class OnlineShop {
public OnlineShop() throws FileNotFoundException { public OnlineShop() throws FileNotFoundException {
lager = new ArrayList<Produkt>(); lager = new ArrayList<Produkt>();
Scanner sc = new Scanner(new File("././resources/produkte.csv")); Scanner sc = new Scanner(new File("/Users/eronahasani/Desktop/produkte.csv"));
sc.nextLine(); sc.nextLine();
while(sc.hasNextLine() ) { while(sc.hasNextLine() ) {

View File

@ -118,8 +118,8 @@ public class Warenkorb {
if (versandBrutto() == 0 || gesamtNetto == 0) return 0; if (versandBrutto() == 0 || gesamtNetto == 0) return 0;
double anteil7 = netto7 / gesamtNetto; double anteil7 = netto7 / gesamtNetto;
double anteil19 = netto19 / gesamtNetto; double anteil19 = netto19 / gesamtNetto;
double anteilBrutto7 = versandBrutto() * anteil7; double anteilBrutto7 = versandBrutto() * anteil7;
double anteilBrutto19 = versandBrutto() * anteil19; double anteilBrutto19 = versandBrutto() * anteil19;
@ -149,13 +149,13 @@ public class Warenkorb {
return 0; return 0;
} }
double anteil7 = netto7 / gesamtNetto; double anteil7 = netto7 / gesamtNetto;
double anteil19 = netto19 / gesamtNetto; double anteil19 = netto19 / gesamtNetto;
double anteilBrutto7 = versandBrutto() * anteil7; double anteilBrutto7 = versandBrutto() * anteil7;
double anteilBrutto19 = versandBrutto() * anteil19; double anteilBrutto19 = versandBrutto() * anteil19;
double nettoVersand7 = anteilBrutto7 / 1.07; double nettoVersand7 = anteilBrutto7 / 1.07;
double nettoVersand19 = anteilBrutto19 / 1.19; double nettoVersand19 = anteilBrutto19 / 1.19;
return (anteilBrutto7 return (anteilBrutto7

View File

@ -18,7 +18,7 @@ public class WarenkorbTest {
warenkorb = new Warenkorb(); warenkorb = new Warenkorb();
produkte = new ArrayList<>(); produkte = new ArrayList<>();
Scanner sc = new Scanner(new File("././resources/produkte.csv")); Scanner sc = new Scanner(new File("/Users/eronahasani/Desktop/produkte.csv"));
sc.nextLine(); sc.nextLine();
while (sc.hasNextLine()) { while (sc.hasNextLine()) {
@ -40,14 +40,18 @@ public class WarenkorbTest {
@Test @Test
void testProduktHinzufuegen() { void testProduktHinzufuegen() {
warenkorb.produktHinzufügen(produkte.get(0), 2); warenkorb.produktHinzufügen(produkte.get(0), 2);
assertEquals(1, warenkorb.getPositionen().size()); assertEquals(1, warenkorb.getPositionen().size());
assertEquals(2, warenkorb.getPositionen().get(0).getMenge()); assertEquals(2, warenkorb.getPositionen().get(0).getMenge());
} }
@Test @Test
void testGleicheProduktHinzufuegen() { void testGleicheProduktHinzufuegen() {
Produkt p = produkte.get(0); Produkt p = produkte.get(0);
warenkorb.produktHinzufügen(p, 1); warenkorb.produktHinzufügen(p, 1);
warenkorb.produktHinzufügen(p, 2); warenkorb.produktHinzufügen(p, 2);
assertEquals(3, warenkorb.getPositionen().get(0).getMenge()); assertEquals(3, warenkorb.getPositionen().get(0).getMenge());
@ -55,25 +59,136 @@ public class WarenkorbTest {
@Test @Test
void testMengeAendern() { void testMengeAendern() {
Produkt p = produkte.get(1); Produkt p = produkte.get(1);
warenkorb.produktHinzufügen(p, 2); warenkorb.produktHinzufügen(p, 2);
assertTrue(warenkorb.mengeAendern(p, 3)); assertTrue(warenkorb.mengeAendern(p, 3));
assertEquals(3, warenkorb.getPositionen().get(0).getMenge()); assertEquals(3, warenkorb.getPositionen().get(0).getMenge());
} }
@Test @Test
void testEntfernen() { void testEntfernen() {
Produkt p = produkte.get(2); Produkt p = produkte.get(2);
warenkorb.produktHinzufügen(p, 1); warenkorb.produktHinzufügen(p, 1);
warenkorb.mengeAendern(p, 0); warenkorb.mengeAendern(p, 0);
assertEquals(0, warenkorb.getPositionen().size()); assertEquals(0, warenkorb.getPositionen().size());
} }
@Test @Test
void testWarenkorbLeer() { void testWarenkorbLeer() {
Produkt p = produkte.get(0); Produkt p = produkte.get(0);
warenkorb.produktHinzufügen(p, 2); warenkorb.produktHinzufügen(p, 2);
warenkorb.mengeAendern(p, 0); warenkorb.mengeAendern(p, 0);
assertEquals(0, warenkorb.getPositionen().size()); assertEquals(0, warenkorb.getPositionen().size());
} }
@Test
void testProdukteNetto() {
Produkt p = produkte.get(0);
warenkorb.produktHinzufügen(p, 1);
double netto = p.getPreis();
assertEquals(netto, warenkorb.produkteNetto(), 0.01);
}
@Test
void testProdukteMwst() {
Produkt p = produkte.get(0);
warenkorb.produktHinzufügen(p, 1);
double mwst = p.getPreis() * p.getMwst() / 100.0;
assertEquals(mwst, warenkorb.produkteMwst(), 0.01);
}
@Test
void testProdukteMwst19und7() {
Produkt p1 = produkte.get(0);
Produkt p2 = produkte.get(1);
warenkorb.produktHinzufügen(p1, 2);
warenkorb.produktHinzufügen(p2, 3);
double mwstP1 = 2 * p1.getPreis() * p1.getMwst() / 100.0;
double mwstP2 = 3 * p2.getPreis() * p2.getMwst() / 100.0;
double erwartet = mwstP1 + mwstP2;
assertEquals(erwartet, warenkorb.produkteMwst(), 0.01);
}
@Test
void testVersandNetto() {
warenkorb.produktHinzufügen(produkte.get(0), 5);
warenkorb.produktHinzufügen(produkte.get(1), 2);
double gesamtNetto = warenkorb.produkteNetto();
double anteil7 = 2 * produkte.get(1).getPreis() / gesamtNetto;
double anteil19 = 5 * produkte.get(0).getPreis() / gesamtNetto;
double versandBrutto = warenkorb.versandBrutto();
double anteilBrutto7 = versandBrutto * anteil7;
double anteilBrutto19 = versandBrutto * anteil19;
double erwartet = (anteilBrutto7 / 1.07)
+ (anteilBrutto19 / 1.19);
assertEquals(erwartet, warenkorb.versandNetto(), 0.01);
}
@Test
void testVersandMwst() {
warenkorb.produktHinzufügen(produkte.get(0), 5);
warenkorb.produktHinzufügen(produkte.get(1), 2);
double gesamtNetto = warenkorb.produkteNetto();
double anteil7 = 2 * produkte.get(1).getPreis() / gesamtNetto;
double anteil19 = 5 * produkte.get(0).getPreis() / gesamtNetto;
double versandBrutto = warenkorb.versandBrutto();
double anteilBrutto7 = versandBrutto * anteil7;
double anteilBrutto19 = versandBrutto * anteil19;
double nettoVersand7 = anteilBrutto7 / 1.07;
double nettoVersand19 = anteilBrutto19 / 1.19;
double erwartet = (anteilBrutto7
- nettoVersand7)
+ (anteilBrutto19
- nettoVersand19);
assertEquals(erwartet, warenkorb.versandMwst(), 0.01);
}
@Test
void testGesamtpreis() {
warenkorb.produktHinzufügen(produkte.get(1), 2);
double erwartet = warenkorb.produkteNetto()
+ warenkorb.produkteMwst()
+ warenkorb.versandNetto()
+ warenkorb.versandMwst();
assertEquals(erwartet, warenkorb.gesamtpreis());
}
} }

View File

@ -188,7 +188,7 @@ public class shopTUI {
} else if (eingabe.equals("bestellen")) { } else if (eingabe.equals("bestellen")) {
bestellen(); bestellen();
} else { } else {
System.out.println("\n\n Ungültige Eingabe (˃̣̣̥ᯅ˂̣̣̥) Versuchen Sie es bitte erneut: \n\n"); System.out.println("\n\nUngültige Eingabe (˃̣̣̥ᯅ˂̣̣̥) Versuchen Sie es bitte erneut: \n\n");
warenkorb(); warenkorb();
} }
} }
@ -219,7 +219,7 @@ public class shopTUI {
} }
System.out.printf("\nGesamtpreis: \n%.2f€\n", bestellung.getGesamtpreis()); System.out.printf("\nGesamtpreis: \n%.2f€\n", bestellung.getGesamtpreis());
System.out.println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); System.out.println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
warenkorb = new Warenkorb(); bestellung.warenkorbLeeren();
System.out.println("\n\nIhr Warenkorb wurde geleert! ◝(˶˃ᵕ˂˶)◜"); System.out.println("\n\nIhr Warenkorb wurde geleert! ◝(˶˃ᵕ˂˶)◜");
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n"); System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
hauptmenü(); hauptmenü();