aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/webui/PantryItemTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/webui/PantryItemTest.java')
-rw-r--r--src/test/java/webui/PantryItemTest.java99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/test/java/webui/PantryItemTest.java b/src/test/java/webui/PantryItemTest.java
new file mode 100644
index 0000000..71948b8
--- /dev/null
+++ b/src/test/java/webui/PantryItemTest.java
@@ -0,0 +1,99 @@
+package webui;
+
+import org.junit.jupiter.api.Test;
+
+import static com.microsoft.playwright.assertions.PlaywrightAssertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.List;
+
+import com.microsoft.playwright.Locator;
+
+import dev.submelon.model.PantryItem;
+import io.quarkiverse.quinoa.testing.QuinoaTestProfiles;
+import io.quarkus.test.junit.QuarkusTest;
+import io.quarkus.test.junit.TestProfile;
+import webui.pages.IndexPage;
+import webui.pages.components.AddItemComponent;
+
+@QuarkusTest
+@TestProfile(QuinoaTestProfiles.Enable.class)
+public class PantryItemTest extends ApplicationTest {
+
+ private static PantryItem[] testItems = new PantryItem[] {
+ PantryItem.builder()
+ .name("Flour")
+ .description("White unbleached")
+ .quantity(12.4d)
+ .quantityUnitType("cups")
+ .build(),
+ PantryItem.builder()
+ .name("Ponzu Sauce")
+ .quantity(4d)
+ .quantityUnitType("oz")
+ .build()
+ };
+
+ @Test
+ public void testLanding() {
+ // Arrange
+ final IndexPage page = new IndexPage(context.newPage());
+
+ // Act
+ page.loadAndVerifyPage(indexLocation);
+
+ // Assert
+ page.checkItemTableIsEmpty();
+
+ // Check add item button is visible and enabled
+ Locator addButton = page.getAddItemButton();
+ assertThat(addButton).isVisible();
+ assertThat(addButton).isEnabled();
+ }
+
+ @Test
+ public void testAddItemCancel() {
+ // Arrange
+ final PantryItem testItem = testItems[0];
+ final IndexPage page = new IndexPage(context.newPage());
+
+ // Act
+ page.loadAndVerifyPage(indexLocation);
+ page.checkItemTableIsEmpty();
+
+ AddItemComponent addItem = AddItemComponent.open(page);
+ addItem.enterPantryItem(testItem);
+ addItem.cancel();
+
+ // Assert
+ page.checkItemTableIsEmpty();
+ }
+
+ @Test
+ public void testAddItemSubmit() {
+ // Arrange
+ final PantryItem testItem = testItems[0];
+ final IndexPage page = new IndexPage(context.newPage());
+
+ // Act
+ page.loadAndVerifyPage(indexLocation);
+ page.checkItemTableIsEmpty();
+
+ AddItemComponent addItem = AddItemComponent.open(page);
+ addItem.enterPantryItem(testItem);
+ addItem.submit();
+
+ // Assert
+ page.validateAddItemNotification(testItem);
+
+ List<Locator> items = page.getCurrentItems(1);
+ assertEquals(1, items.size());
+
+ Locator newItem = items.get(0);
+ assertThat(newItem).containsText(testItem.getName());
+ assertThat(newItem).containsText(testItem.getDescription());
+ assertThat(newItem).containsText(testItem.getQuantity().toString());
+ assertThat(newItem).containsText(testItem.getQuantityUnitType());
+ }
+
+}