diff --git a/pom.xml b/pom.xml index 184bdae890..948b946fd8 100644 --- a/pom.xml +++ b/pom.xml @@ -13,4 +13,59 @@ 11 - + + + org.junit.jupiter + junit-jupiter + 5.11.4 + test + + + org.junit.jupiter + junit-jupiter-params + 5.11.4 + test + + + org.mockito + mockito-junit-jupiter + 5.17.0 + test + + + + + src/main/java + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 11 + + + + org.jacoco + jacoco-maven-plugin + 0.8.12 + + + prepare-agent + prepare-agent + + + report + test + report + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.4 + + + + \ No newline at end of file diff --git a/src/test/java/BunTest.java b/src/test/java/BunTest.java new file mode 100644 index 0000000000..5ef3be7cb1 --- /dev/null +++ b/src/test/java/BunTest.java @@ -0,0 +1,27 @@ +import praktikum.*; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + + class BunTest { + static Bun bun; + + @BeforeAll + static void setUpAll() { + bun = new Bun("Bulochka", 22); + } + + @Test + void getNameReturnsName() { + String actual = bun.getName(); + assertEquals("Bulochka", actual); + } + + @Test + void getPriceReturnPrice() { + float actual = bun.getPrice(); + assertEquals(22, actual); + } +} diff --git a/src/test/java/BurgerTest.java b/src/test/java/BurgerTest.java new file mode 100644 index 0000000000..fc1ca3649f --- /dev/null +++ b/src/test/java/BurgerTest.java @@ -0,0 +1,117 @@ +import praktikum.*; + +import static org.junit.jupiter.api.Assertions.*; +import static praktikum.IngredientType.FILLING; +import static praktikum.IngredientType.SAUCE; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + + +class BurgerTest { + Burger burger; + Bun bun; + Ingredient sauce; + Ingredient filling; + + @BeforeEach + public void setUpAll() { + burger = new Burger(); + bun = new Bun("Bulochka", 100.0f); + sauce = new Ingredient(SAUCE, "ketchup", 20.5f); + filling = new Ingredient(FILLING, "chicken", 50.0f); + } + + @Test + //проверяем, что в бургере есть булка + void setBunsShouldSetBun() { + burger.setBuns(bun); + assertNotNull(burger.bun); + assertEquals("Bulochka", burger.bun.getName()); + assertEquals(100.0f, burger.bun.getPrice()); + } + @Test + //проверяем, что через метод addIngredient в список ingredients добавляется sauce и filling + void addIngredientShouldAddToList(){ + burger.addIngredient(sauce); + burger.addIngredient(filling); + assertEquals(2, burger.ingredients.size()); + assertSame(sauce, burger.ingredients.get(0)); + assertSame(filling, burger.ingredients.get(1)); + } + @ParameterizedTest + @ValueSource(ints = {0, 1, 2, 3, 4, 5}) + void removeIngredientShouldWorkWithAnyIndex(int index) { + // заполняем 6 ингредиентов + for (int i = 0; i < 6; i++) { + burger.addIngredient(new Ingredient(SAUCE, "test" + i, 10f)); + } + + burger.removeIngredient(index); + + assertEquals(5, burger.ingredients.size()); // всегда 5 остается + } + @Test + void removeFirstShouldLeaveFilling() { + burger.addIngredient(sauce); + burger.addIngredient(filling); + burger.removeIngredient(0); // удаляем sauce + + assertSame(filling, burger.ingredients.get(0)); // ✓ + } + + @Test + void removeSecondShouldLeaveSauce() { + burger.addIngredient(sauce); + burger.addIngredient(filling); + burger.removeIngredient(1); // удаляем filling + + assertSame(sauce, burger.ingredients.get(0)); // ✓ + } + + @Test + void moveIngredientShouldChangeOrder() { + Ingredient anotherSauce = new Ingredient(SAUCE, "ketchup", 15.0f); + + burger.addIngredient(sauce); // index 0 + burger.addIngredient(filling); // index 1 + burger.addIngredient(anotherSauce); // index 2 + + // перенос элемент с index 0 в позицию 2 + burger.moveIngredient(0, 2); + + assertEquals(3, burger.ingredients.size()); + assertSame(filling, burger.ingredients.get(0)); + assertSame(anotherSauce, burger.ingredients.get(1)); + assertSame(sauce, burger.ingredients.get(2)); + } + @Test + void getPriceShouldReturnSumOfBunAndIngredients() { + burger.setBuns(bun); // 100 * 2 = 200 + burger.addIngredient(sauce); // + 20.5 + burger.addIngredient(filling); // + 50 + + float expected = 100.0f * 2 + 20.5f + 50.0f; + + assertEquals(expected, burger.getPrice()); + } + @Test + void getReceiptShouldReturnCorrectFormattedString() { + burger.setBuns(bun); + burger.addIngredient(sauce); + burger.addIngredient(filling); + + String receipt = burger.getReceipt(); + + assertTrue(receipt.contains("(==== Bulochka ====)")); + assertTrue(receipt.contains("= sauce ketchup =")); + assertTrue(receipt.contains("= filling chicken =")); + + float expectedPrice = 100.0f * 2 + 20.5f + 50.0f; + String expectedPricePart = String.format("Price: %f", expectedPrice); + + assertTrue(receipt.contains(expectedPricePart)); + } +} \ No newline at end of file diff --git a/src/test/java/DatabaseTest.java b/src/test/java/DatabaseTest.java new file mode 100644 index 0000000000..6fc2821811 --- /dev/null +++ b/src/test/java/DatabaseTest.java @@ -0,0 +1,34 @@ +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import praktikum.*; +import java.util.List; + + class DatabaseTest { + private Database db; + @BeforeEach + void setUp() { + db = new Database(); + } + @Test + void availableBunsShouldReturnThreeBuns() { + List buns = db.availableBuns(); + assertEquals(3, buns.size()); + // проверяем первый black bun + assertEquals("black bun", buns.get(0).getName()); + assertEquals(100f, buns.get(0).getPrice()); + } + @Test + void availableIngredientsShouldReturnSixIngredients() { + List ingredients = db.availableIngredients(); + assertEquals(6, ingredients.size()); + // 3 соуса + 3 начинки + long sauces = ingredients.stream() + .map(Ingredient::getType) + .filter(type -> type == IngredientType.SAUCE) + .count(); + assertEquals(3, sauces); + } + +} diff --git a/src/test/java/IngredientTest.java b/src/test/java/IngredientTest.java new file mode 100644 index 0000000000..7c2804d664 --- /dev/null +++ b/src/test/java/IngredientTest.java @@ -0,0 +1,30 @@ +import praktikum.*; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static praktikum.IngredientType.SAUCE; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + + class IngredientTest { + static Ingredient ingredient; + @BeforeAll + static void setUpAll() { + ingredient = new Ingredient(SAUCE, "NachinkaSauce", 10); + } + @Test + void getPriceReturnPrice(){ + float actual = ingredient.getPrice(); + assertEquals(10, actual); + } + @Test + void getNameReturnName(){ + String actual = ingredient.getName(); + assertEquals("NachinkaSauce", actual); + } + @Test + void getTypeReturnsType(){ + IngredientType actual = ingredient.getType(); + assertEquals(SAUCE, actual); + } + }