diff --git a/pom.xml b/pom.xml index 184bdae89..ffe7c474f 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,84 @@ 11 11 + UTF-8 + 0.8.11 - + + + junit + junit + 4.13.2 + test + + + org.mockito + mockito-core + 5.2.0 + test + + + org.hamcrest + hamcrest + 2.2 + test + + + + + + + + org.jacoco + jacoco-maven-plugin + ${jacoco.version} + + + prepare-agent + + prepare-agent + + + ${project.build.directory}/jacoco.exec + surefire.jacoco.args + + + + report + test + + report + + + ${project.build.directory}/jacoco.exec + ${project.reporting.outputDirectory}/jacoco + + + + post-unit-test + test + + report + + + ${project.build.directory}/jacoco.exec + ${project.reporting.outputDirectory}/jacoco + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + ${surefire.jacoco.args} + false + + + + + \ No newline at end of file diff --git a/src/test/java/praktikum/BunTest.java b/src/test/java/praktikum/BunTest.java new file mode 100644 index 000000000..e881baa26 --- /dev/null +++ b/src/test/java/praktikum/BunTest.java @@ -0,0 +1,33 @@ +package praktikum; + +import org.hamcrest.MatcherAssert; +import org.junit.Test; + +import static org.hamcrest.CoreMatchers.equalTo; + +public class BunTest { + + @Test + public void getNameIsSuccess() { + String bunName = "bunName"; + Bun bun = new Bun(bunName, 100); + + MatcherAssert.assertThat( + "Получено некорректное наименование булочки", + bun.getName(), + equalTo(bunName) + ); + } + + @Test + public void getPriceIsSuccess() { + float bunPrice = 100; + Bun bun = new Bun("bunName", bunPrice); + + MatcherAssert.assertThat( + "Получена некорректная стоимость булочки", + bun.getPrice(), + equalTo(bunPrice) + ); + } +} diff --git a/src/test/java/praktikum/BurgerTest.java b/src/test/java/praktikum/BurgerTest.java new file mode 100644 index 000000000..67d4dd4e0 --- /dev/null +++ b/src/test/java/praktikum/BurgerTest.java @@ -0,0 +1,118 @@ +package praktikum; + +import org.hamcrest.MatcherAssert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +@RunWith(MockitoJUnitRunner.class) +public class BurgerTest { + @Mock + private Bun bun; + @Mock + private Ingredient ingredient; + @Mock + private Ingredient ingredient2; + + @Test + public void setBunsIsSuccess() { + Burger burger = new Burger(); + Mockito.when(bun.getName()).thenReturn("bunName"); + burger.setBuns(bun); + + MatcherAssert.assertThat( + "В бургер не добавляются передаваемые булочки", + bun.getName(), + equalTo(burger.bun.getName()) + ); + } + @Test + public void addIngredientIsSuccess() { + Burger burger = new Burger(); + burger.addIngredient(ingredient); + + assertTrue( + "Ингредиент не добавлен", + burger.ingredients.contains(ingredient) + ); + } + @Test + public void moveIngredientIsSuccess() { + Mockito.when(ingredient.getName()).thenReturn("ingredientName"); + + Burger burger = new Burger(); + burger.addIngredient(ingredient); + burger.addIngredient(ingredient2); + int currentIndex = burger.ingredients.indexOf(ingredient); + int newIndex = burger.ingredients.indexOf(ingredient2); + + burger.moveIngredient(currentIndex, newIndex); + + MatcherAssert.assertThat( + "Ингредиент не перемещается", + ingredient.getName(), + equalTo(burger.ingredients.get(newIndex).getName()) + ); + } + @Test + public void removeIngredientIsSuccess() { + Burger burger = new Burger(); + burger.addIngredient(ingredient); + + int index = burger.ingredients.indexOf(ingredient); + burger.removeIngredient(index); + + assertFalse( + "Ингредиент не удаляется", + burger.ingredients.contains(ingredient) + ); + } + @Test + public void getPriceIsSuccess() { + Mockito.when(bun.getPrice()).thenReturn(100f); + Mockito.when(ingredient.getPrice()).thenReturn(250f); + + Burger burger = new Burger(); + burger.setBuns(bun); + burger.addIngredient(ingredient); + + MatcherAssert.assertThat( + "Цена расчитывается некорректно", + 450f, + equalTo(burger.getPrice()) + ); + + } + @Test + public void getReceiptIsSuccess() { + Mockito.when(bun.getName()).thenReturn("bunName"); + Mockito.when(bun.getPrice()).thenReturn(80f); + Mockito.when(ingredient.getName()).thenReturn("ingredientName"); + Mockito.when(ingredient.getPrice()).thenReturn(100f); + Mockito.when(ingredient.getType()).thenReturn(IngredientType.FILLING); + + String lineSeparator = System.lineSeparator(); + String expectedReceipt = + "(==== bunName ====)" + lineSeparator + + "= filling ingredientName =" + lineSeparator + + "(==== bunName ====)" + lineSeparator + + lineSeparator + + "Price: 260,000000" + lineSeparator; + + Burger burger = new Burger(); + burger.setBuns(bun); + burger.addIngredient(ingredient); + + MatcherAssert.assertThat( + "Возвращается некорректная строка с рецептом", + burger.getReceipt(), + equalTo(expectedReceipt) + ); + } +} diff --git a/src/test/java/praktikum/IngredientTest.java b/src/test/java/praktikum/IngredientTest.java new file mode 100644 index 000000000..a3226a652 --- /dev/null +++ b/src/test/java/praktikum/IngredientTest.java @@ -0,0 +1,48 @@ +package praktikum; + +import org.hamcrest.MatcherAssert; +import org.junit.Before; +import org.junit.Test; + +import static org.hamcrest.CoreMatchers.equalTo; + +public class IngredientTest { + private Ingredient ingredient; + private IngredientType expectedIngredientType = IngredientType.SAUCE; + private String expectedName = "sauceName"; + private float expectedPrice = 50f; + @Before + public void prepareData() { + this.ingredient = new Ingredient( + expectedIngredientType, + expectedName, + expectedPrice + ); + } + @Test + public void getPriceIsSuccess() { + MatcherAssert.assertThat( + "Возвращается некорретная стоимость ингредиента", + ingredient.getPrice(), + equalTo(expectedPrice) + + ); + + } + @Test + public void getNameIsSuccess() { + MatcherAssert.assertThat( + "Возвращается некорректное наименование ингредиента", + ingredient.getName(), + equalTo(expectedName) + ); + } + @Test + public void getTypeIsSuccess() { + MatcherAssert.assertThat( + "Возвращается некорректный тип ингредиента", + ingredient.getType(), + equalTo(expectedIngredientType) + ); + } +} \ No newline at end of file diff --git a/src/test/java/praktikum/IngredientTypeTest.java b/src/test/java/praktikum/IngredientTypeTest.java new file mode 100644 index 000000000..af840dee0 --- /dev/null +++ b/src/test/java/praktikum/IngredientTypeTest.java @@ -0,0 +1,33 @@ +package praktikum; + +import org.hamcrest.MatcherAssert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import static org.hamcrest.CoreMatchers.equalTo; + +@RunWith(Parameterized.class) +public class IngredientTypeTest { + private final String typeName; + + @Parameterized.Parameters(name = "Наличие типа {0}") + public static Object[][] paramsForTest() { + return new Object[][]{ + {"SAUCE"}, + {"FILLING"} + }; + } + + public IngredientTypeTest(String typeName) { + this.typeName = typeName; + } + + @Test + public void ingredientTypeIsCorrectList() { + + MatcherAssert.assertThat("Отсутствует элемент " + typeName, + IngredientType.valueOf(typeName.toUpperCase()).toString(), + equalTo(typeName)); + } +} \ No newline at end of file diff --git a/target/site/jacoco/index.html b/target/site/jacoco/index.html new file mode 100644 index 000000000..8b0442477 --- /dev/null +++ b/target/site/jacoco/index.html @@ -0,0 +1 @@ +praktikum

praktikum

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total165 of 34952 %0 of 4100 %522296952026
praktikum16518452 %4100 %522296952026
\ No newline at end of file diff --git a/target/site/jacoco/praktikum/index.html b/target/site/jacoco/praktikum/index.html new file mode 100644 index 000000000..0eac89bb8 --- /dev/null +++ b/target/site/jacoco/praktikum/index.html @@ -0,0 +1 @@ +praktikum

praktikum

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total165 of 34952 %0 of 4100 %522296952026
Database1060 %n/a3315153311
Praktikum590 %n/a2214142211
Burger133100 %4100 %090230701
Ingredient21100 %n/a04080401
Bun15100 %n/a03060301
IngredientType15100 %n/a01030101
\ No newline at end of file diff --git a/target/site/jacoco/praktikum/index.source.html b/target/site/jacoco/praktikum/index.source.html new file mode 100644 index 000000000..1966652be --- /dev/null +++ b/target/site/jacoco/praktikum/index.source.html @@ -0,0 +1 @@ +praktikum

praktikum

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total165 of 34952 %0 of 4100 %522296952026
Database.java1060 %n/a3315153311
Praktikum.java590 %n/a2214142211
Burger.java133100 %4100 %090230701
Ingredient.java21100 %n/a04080401
Bun.java15100 %n/a03060301
IngredientType.java15100 %n/a01030101
\ No newline at end of file