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 Element Missed Instructions Cov. Missed Branches Cov. Missed Cxty Missed Lines Missed Methods Missed Classes Total 165 of 349 52 % 0 of 4 100 % 5 22 29 69 5 20 2 6 praktikum 52 % 100 % 5 22 29 69 5 20 2 6
\ 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 Element Missed Instructions Cov. Missed Branches Cov. Missed Cxty Missed Lines Missed Methods Missed Classes Total 165 of 349 52 % 0 of 4 100 % 5 22 29 69 5 20 2 6 Database 0 % n/a 3 3 15 15 3 3 1 1 Praktikum 0 % n/a 2 2 14 14 2 2 1 1 Burger 100 % 100 % 0 9 0 23 0 7 0 1 Ingredient 100 % n/a 0 4 0 8 0 4 0 1 Bun 100 % n/a 0 3 0 6 0 3 0 1 IngredientType 100 % n/a 0 1 0 3 0 1 0 1
\ 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
\ No newline at end of file