From a6684ffad624a61171321cee91489bb97e04113a Mon Sep 17 00:00:00 2001 From: TatuJLund Date: Mon, 1 Jul 2024 21:56:11 +0300 Subject: [PATCH] Add test --- .../tatu/vaadincreate/VaadinCreateUI.java | 2 +- .../tatu/vaadincreate/crud/BooksView.java | 5 ++-- .../tatu/vaadincreate/crud/BooksViewTest.java | 25 +++++++++++++++++-- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/vaadincreate-ui/src/main/java/org/vaadin/tatu/vaadincreate/VaadinCreateUI.java b/vaadincreate-ui/src/main/java/org/vaadin/tatu/vaadincreate/VaadinCreateUI.java index 215aa1f..05f609d 100644 --- a/vaadincreate-ui/src/main/java/org/vaadin/tatu/vaadincreate/VaadinCreateUI.java +++ b/vaadincreate-ui/src/main/java/org/vaadin/tatu/vaadincreate/VaadinCreateUI.java @@ -173,7 +173,7 @@ public void detach() { // https://github.com/vaadin/flow/issues/17215 @WebServlet(value = "/*", asyncSupported = true, initParams = { @WebInitParam(name = "org.atmosphere.websocket.maxIdleTime", value = "300000") }) - @VaadinServletConfiguration(productionMode = false, ui = VaadinCreateUI.class) + @VaadinServletConfiguration(productionMode = false, ui = VaadinCreateUI.class, closeIdleSessions = true) public static class Servlet extends VaadinServlet { @Override diff --git a/vaadincreate-ui/src/main/java/org/vaadin/tatu/vaadincreate/crud/BooksView.java b/vaadincreate-ui/src/main/java/org/vaadin/tatu/vaadincreate/crud/BooksView.java index 54192c4..3f61023 100644 --- a/vaadincreate-ui/src/main/java/org/vaadin/tatu/vaadincreate/crud/BooksView.java +++ b/vaadincreate-ui/src/main/java/org/vaadin/tatu/vaadincreate/crud/BooksView.java @@ -360,7 +360,7 @@ public void editProduct(Product product) { if (product != null) { // Ensure the product is up-to-date if (product.getId() > 0) { - product = refreshProduct(dataProvider, product); + product = refreshProduct(product); } form.showForm(true); } else { @@ -448,8 +448,7 @@ public void eventFired(Object event) { } } - private Product refreshProduct(ListDataProvider dataProvider, - Product product) { + private Product refreshProduct(Product product) { var list = ((List) dataProvider.getItems()); var updatedProduct = presenter.findProduct(product.getId()); list.set(list.indexOf(product), updatedProduct); diff --git a/vaadincreate-ui/src/test/java/org/vaadin/tatu/vaadincreate/crud/BooksViewTest.java b/vaadincreate-ui/src/test/java/org/vaadin/tatu/vaadincreate/crud/BooksViewTest.java index acd67ea..329a0f3 100644 --- a/vaadincreate-ui/src/test/java/org/vaadin/tatu/vaadincreate/crud/BooksViewTest.java +++ b/vaadincreate-ui/src/test/java/org/vaadin/tatu/vaadincreate/crud/BooksViewTest.java @@ -215,11 +215,13 @@ public void deleteProduct() { public void editProduct() { var book = test(grid).item(0); test(grid).click(1, 0); + assertTrue(form.isShown()); var id = book.getId(); test(form.productName).setValue("Edited book"); test(form.save).click(); + assertFalse(form.isShown()); var edited = ui.getProductService().getProductById(id); @@ -231,6 +233,25 @@ public void editProduct() { test(grid).styleName(0)); } + @Test + public void openProductChangedByOtherUser() { + var book = test(grid).item(0); + + // Simulate other user persisting a change to the database + var edited = ui.getProductService().getProductById(book.getId()); + edited.setProductName("Touched book"); + ui.getProductService().updateProduct(edited); + + test(grid).click(1, 0); + assertTrue(form.isShown()); + + // Assert that change is visible when product is opened + assertEquals("Touched book", form.productName.getValue()); + + var name = (String) test(grid).cell(1, 0); + assertEquals("Touched book", name); + } + @Test public void editLockedProduct() { var book = test(grid).item(0); @@ -379,7 +400,7 @@ public void resizeTest() { @Test public void sortingByPrice() { - int size = grid.getDataCommunicator().getDataProviderSize(); + int size = test(grid).size(); test(grid).toggleColumnSorting(2); @@ -400,7 +421,7 @@ public void sortingByPrice() { @Test public void sortingByName() { - int size = grid.getDataCommunicator().getDataProviderSize(); + int size = test(grid).size(); test(grid).toggleColumnSorting(1);