diff options
author | mrfoxygmfr <mrfoxygmfr@sch9.ru> | 2025-05-06 20:16:13 +0300 |
---|---|---|
committer | mrfoxygmfr <mrfoxygmfr@sch9.ru> | 2025-05-06 20:16:13 +0300 |
commit | 357416b38fd9b4defe8dc0f3baa4072019415ded (patch) | |
tree | 542cda73fdf940ed9b3c62a4fcf94a8fa8139b9b | |
parent | dda4aa52606522d2640b4736b01b49a867bd7c1b (diff) |
test: products controller test
-rw-r--r-- | src/test/java/ru/mrfoxygmfr/warehouse_accounting/http/ProductsControllerTest.java | 129 |
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(); + } +} + |