aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormrfoxygmfr <mrfoxygmfr@sch9.ru>2025-05-06 20:16:13 +0300
committermrfoxygmfr <mrfoxygmfr@sch9.ru>2025-05-06 20:16:13 +0300
commit357416b38fd9b4defe8dc0f3baa4072019415ded (patch)
tree542cda73fdf940ed9b3c62a4fcf94a8fa8139b9b
parentdda4aa52606522d2640b4736b01b49a867bd7c1b (diff)
test: products controller test
-rw-r--r--src/test/java/ru/mrfoxygmfr/warehouse_accounting/http/ProductsControllerTest.java129
1 files changed, 129 insertions, 0 deletions
diff --git a/src/test/java/ru/mrfoxygmfr/warehouse_accounting/http/ProductsControllerTest.java b/src/test/java/ru/mrfoxygmfr/warehouse_accounting/http/ProductsControllerTest.java
new file mode 100644
index 0000000..66a8485
--- /dev/null
+++ b/src/test/java/ru/mrfoxygmfr/warehouse_accounting/http/ProductsControllerTest.java
@@ -0,0 +1,129 @@
+package ru.mrfoxygmfr.warehouse_accounting.http;
+
+import org.junit.jupiter.api.Test;
+import org.openqa.selenium.*;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.support.ui.Select;
+
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+public class ProductsControllerTest {
+ private final String srcURL = "http://localhost:8080/";
+ private final String title = "Система складского учета";
+
+ @Test
+ void ProductsPageTest() {
+ ChromeDriver driver = new ChromeDriver();
+ driver.get(srcURL);
+ assertEquals(title, driver.getTitle());
+ driver.quit();
+ }
+
+ @Test
+ void CreateNewProduct() {
+ ChromeDriver driver = new ChromeDriver();
+ driver.get("http://localhost:8080/products");
+
+ WebElement newProduct = driver.findElement(By.id("newProductBtn"));
+ newProduct.click();
+
+ driver.manage().timeouts().implicitlyWait(500, TimeUnit.MILLISECONDS);
+
+ String expectedProductName = "Продукт из тестов";
+ String expectedProductHeight = "123";
+ String expectedProductWidth = "231";
+ String expectedProductDepth = "312";
+ String expectedProductMaxStorageDuration = "15";
+
+ driver.findElement(By.id("productName")).sendKeys(expectedProductName);
+ driver.findElement(By.id("productHeight")).sendKeys(expectedProductHeight);
+ driver.findElement(By.id("productWidth")).sendKeys(expectedProductWidth);
+ driver.findElement(By.id("productDepth")).sendKeys(expectedProductDepth);
+ driver.findElement(By.id("productMaxStorageDuration")).sendKeys(expectedProductMaxStorageDuration);
+ driver.findElement(By.id("saveBtn")).click();
+ driver.manage().timeouts().implicitlyWait(500, TimeUnit.MILLISECONDS);
+
+ WebElement products = driver.findElement(By.cssSelector("table[class*='table-bordered']"));
+ List<WebElement> productRows = products.findElements(By.tagName("tr"));
+
+ boolean found = false;
+ for (WebElement row : productRows) {
+ List<WebElement> rowElements = row.findElements(By.tagName("td"));
+ if (rowElements.isEmpty() || !rowElements.get(0).getText().equals(expectedProductName)) {
+ continue;
+ }
+
+ assertEquals(expectedProductName, rowElements.get(0).getText());
+ assertEquals(String.format("%s * %s * %s", expectedProductHeight, expectedProductWidth, expectedProductDepth), rowElements.get(1).getText());
+ found = true;
+ }
+
+ assertTrue(found);
+ driver.quit();
+ }
+
+ @Test
+ void FilterFound() {
+ ChromeDriver driver = new ChromeDriver();
+ driver.get("http://localhost:8080/products");
+
+ String expectedProductName = "product";
+ String expectedProductDimensions = "10 * 10 * 100";
+ driver.findElement(By.id("productHeightGreaterFilter")).sendKeys("5");
+ driver.findElement(By.id("productHeightLessFilter")).sendKeys("15");
+ driver.findElement(By.id("saveBtn")).click();
+ driver.manage().timeouts().implicitlyWait(500, TimeUnit.MILLISECONDS);
+
+ WebElement products = driver.findElement(By.cssSelector("table[class*='table-bordered']"));
+ List<WebElement> productRows = products.findElements(By.tagName("tr"));
+
+ boolean found = false;
+ for (WebElement row : productRows) {
+ List<WebElement> rowElements = row.findElements(By.tagName("td"));
+ if (rowElements.isEmpty() || !rowElements.get(0).getText().equals(expectedProductName)) {
+ continue;
+ }
+
+ assertEquals(expectedProductName, rowElements.get(0).getText());
+ assertEquals(expectedProductDimensions, rowElements.get(1).getText());
+ found = true;
+ }
+
+ assertTrue(found);
+ driver.quit();
+ }
+
+ @Test
+ void FilterNotFound() {
+ ChromeDriver driver = new ChromeDriver();
+ driver.get("http://localhost:8080/products");
+
+ driver.findElement(By.id("productHeightGreaterFilter")).sendKeys("15");
+ driver.findElement(By.id("productHeightLessFilter")).sendKeys("10");
+ driver.findElement(By.id("saveBtn")).click();
+ driver.manage().timeouts().implicitlyWait(500, TimeUnit.MILLISECONDS);
+
+ WebElement products = driver.findElement(By.cssSelector("table[class*='table-bordered']"));
+ List<WebElement> productRows = products.findElements(By.tagName("tr"));
+
+ String expected = "Данному фильтру не удовлетворяет ни одного продукта.";
+
+ boolean found = false;
+ for (WebElement row : productRows) {
+ System.out.println(row.getText());
+ List<WebElement> rowElements = row.findElements(By.tagName("td"));
+ if (rowElements.isEmpty() || !rowElements.getFirst().getText().equals(expected)) {
+ continue;
+ }
+
+ found = true;
+ }
+
+ assertTrue(found);
+ driver.quit();
+ }
+}
+