diff options
Diffstat (limited to 'src/test/java/webui/PantryItemTest.java')
| -rw-r--r-- | src/test/java/webui/PantryItemTest.java | 99 |
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()); + } + +} |
