You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/07/20 17:35:06 UTC
[causeway] 02/02: CAUSEWAY-3532: more regr. test housekeeping
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit c8f84dff51cb41c24fe6cd11c968dc956f647ea6
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jul 20 19:34:58 2023 +0200
CAUSEWAY-3532: more regr. test housekeeping
---
.../testdomain/fixtures/EntityTestFixtures.java | 47 +++++++++++++++++++++-
.../{HasName.java => InventoryJaxbVm.java} | 16 ++++++--
.../testdomain/jdo/JdoInventoryJaxbVm.java | 6 ++-
.../causeway/testdomain/jdo/JdoTestFixtures.java | 40 +++---------------
.../testdomain/jdo/entities/JdoProduct.java | 5 +--
.../testdomain/jpa/JpaInventoryJaxbVm.java | 6 ++-
.../causeway/testdomain/jpa/JpaTestFixtures.java | 42 ++++---------------
.../testdomain/jpa/entities/JpaProduct.java | 5 +--
.../testdomain/util/rest/RestEndpointService.java | 2 +-
9 files changed, 83 insertions(+), 86 deletions(-)
diff --git a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/fixtures/EntityTestFixtures.java b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/fixtures/EntityTestFixtures.java
index d9b4a29b38..257f8a36cc 100644
--- a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/fixtures/EntityTestFixtures.java
+++ b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/fixtures/EntityTestFixtures.java
@@ -21,25 +21,31 @@ package org.apache.causeway.testdomain.fixtures;
import java.util.Collection;
import java.util.Set;
import java.util.concurrent.LinkedBlockingQueue;
+import java.util.stream.Collectors;
import java.util.stream.IntStream;
import javax.inject.Inject;
import static org.junit.Assert.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.apache.causeway.applib.events.metamodel.MetamodelListener;
+import org.apache.causeway.applib.services.bookmark.Bookmark;
import org.apache.causeway.applib.services.bookmark.BookmarkService;
import org.apache.causeway.applib.services.factory.FactoryService;
import org.apache.causeway.applib.services.iactnlayer.InteractionService;
import org.apache.causeway.applib.services.repository.RepositoryService;
import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.commons.internal.assertions._Assert;
+import org.apache.causeway.commons.internal.base._Casts;
+import org.apache.causeway.commons.internal.base._NullSafe;
import org.apache.causeway.commons.internal.base._Oneshot;
import org.apache.causeway.commons.internal.base._Refs;
import org.apache.causeway.commons.internal.base._Refs.BooleanAtomicReference;
import org.apache.causeway.commons.internal.base._Strings;
import org.apache.causeway.testdomain.util.dto.BookDto;
+import org.apache.causeway.testdomain.util.dto.IBook;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
@@ -57,13 +63,33 @@ public abstract class EntityTestFixtures implements MetamodelListener {
install();
}
+ public final <B extends IBook, T extends InventoryJaxbVm<B>> T setUpViewmodelWith3Books() {
+ final T inventoryJaxbVm =
+ _Casts.uncheckedCast(factoryService.viewModel(vmClass()));
+ val books = inventoryJaxbVm.listBooks();
+ if(_NullSafe.size(books)>0) {
+ val favoriteBook = books.get(0);
+ inventoryJaxbVm.setName("Bookstore");
+ inventoryJaxbVm.setBooks(books);
+ inventoryJaxbVm.setFavoriteBook(favoriteBook);
+ inventoryJaxbVm.setBooksForTab1(books.stream().skip(1).collect(Collectors.toList()));
+ inventoryJaxbVm.setBooksForTab2(books.stream().limit(2).collect(Collectors.toList()));
+ }
+ return inventoryJaxbVm;
+ }
+
+ public final Bookmark getInventoryJaxbVmAsBookmark() {
+ return bookmarkService.bookmarkForElseFail(setUpViewmodelWith3Books());
+ }
+
+ protected abstract Class<? extends InventoryJaxbVm<? extends IBook>> vmClass();
protected abstract void clearRepository();
protected abstract void setUp3Books();
// -- ASSERTIONS
public final void assertInventoryHasBooks(
- final Collection<? extends HasName> products,
+ final Collection<?> products,
final int...expectedBookIndices) {
final int[] zeroBasedIndices = IntStream.of(expectedBookIndices)
@@ -77,7 +103,8 @@ public abstract class EntityTestFixtures implements MetamodelListener {
.toArray(new String[0]);
val actualBookNames = products.stream()
- .map(HasName::getName)
+ .map(IBook.class::cast)
+ .map(IBook::getName)
.sorted()
.toArray();
@@ -90,6 +117,20 @@ public abstract class EntityTestFixtures implements MetamodelListener {
assertTrue(id>=-1, ()->String.format("expected valid id; got %d", id));
}
+ public final void assertPopulatedWithDefaults(
+ final InventoryJaxbVm inventoryJaxbVm) {
+ assertEquals("*InventoryJaxbVm; Bookstore; 3 products", "*" + (inventoryJaxbVm.title().substring(3)));
+ assertEquals("Bookstore", inventoryJaxbVm.getName());
+ val books = inventoryJaxbVm.listBooks();
+ assertEquals(3, books.size());
+ val favoriteBook = inventoryJaxbVm.getFavoriteBook();
+ val expectedBook = BookDto.sample();
+ assertEquals(expectedBook.getName(), favoriteBook.getName());
+ assertHasPersistenceId(favoriteBook);
+ inventoryJaxbVm.listBooks()
+ .forEach(this::assertHasPersistenceId);
+ }
+
public static Set<String> expectedBookTitles() {
val expectedTitles = Set.of("Dune", "The Foundation", "The Time Machine");
return expectedTitles;
@@ -161,4 +202,6 @@ public abstract class EntityTestFixtures implements MetamodelListener {
});
}
+
+
}
diff --git a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/fixtures/HasName.java b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/fixtures/InventoryJaxbVm.java
similarity index 67%
rename from regressiontests/stable/src/main/java/org/apache/causeway/testdomain/fixtures/HasName.java
rename to regressiontests/stable/src/main/java/org/apache/causeway/testdomain/fixtures/InventoryJaxbVm.java
index 321444e3ee..1111f8a187 100644
--- a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/fixtures/HasName.java
+++ b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/fixtures/InventoryJaxbVm.java
@@ -18,9 +18,19 @@
*/
package org.apache.causeway.testdomain.fixtures;
-@FunctionalInterface
-public interface HasName {
+import java.util.Collection;
+import java.util.List;
- String getName();
+import org.apache.causeway.testdomain.util.dto.IBook;
+public interface InventoryJaxbVm<T extends IBook> {
+ String title();
+ String getName();
+ List<T> listBooks();
+ T getFavoriteBook();
+ void setName(String string);
+ void setFavoriteBook(T favoriteBook);
+ void setBooks(Collection<T> books);
+ void setBooksForTab1(Collection<T> books);
+ void setBooksForTab2(Collection<T> books);
}
diff --git a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/JdoInventoryJaxbVm.java b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/JdoInventoryJaxbVm.java
index 17c12a6e87..e5aeba1bad 100644
--- a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/JdoInventoryJaxbVm.java
+++ b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/JdoInventoryJaxbVm.java
@@ -42,6 +42,7 @@ import org.apache.causeway.applib.annotation.ObjectSupport;
import org.apache.causeway.applib.annotation.Optionality;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.services.repository.RepositoryService;
+import org.apache.causeway.testdomain.fixtures.InventoryJaxbVm;
import org.apache.causeway.testdomain.jdo.entities.JdoBook;
import org.apache.causeway.testdomain.jdo.entities.JdoInventory;
import org.apache.causeway.testdomain.jdo.entities.JdoProduct;
@@ -63,11 +64,13 @@ import lombok.Setter;
aliased={
"testdomain.jdo.JdoInventoryJaxbVmAlias"
})
-public class JdoInventoryJaxbVm {
+public class JdoInventoryJaxbVm
+implements InventoryJaxbVm<JdoBook> {
@XmlTransient @Inject
private RepositoryService repository;
+ @Override
@ObjectSupport public String title() {
return String.format("%s; %s; %d products",
this.getClass().getSimpleName(), getName(), listProducts().size());
@@ -83,6 +86,7 @@ public class JdoInventoryJaxbVm {
return repository.allInstances(JdoProduct.class);
}
+ @Override
@Action
public List<JdoBook> listBooks() {
return repository.allInstances(JdoBook.class);
diff --git a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/JdoTestFixtures.java b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/JdoTestFixtures.java
index 3d1192d5ce..20658b2e6c 100644
--- a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/JdoTestFixtures.java
+++ b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/JdoTestFixtures.java
@@ -20,19 +20,18 @@ package org.apache.causeway.testdomain.jdo;
import java.util.SortedSet;
import java.util.TreeSet;
-import java.util.stream.Collectors;
import org.springframework.stereotype.Service;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import org.apache.causeway.applib.services.bookmark.Bookmark;
-import org.apache.causeway.commons.internal.base._NullSafe;
import org.apache.causeway.testdomain.fixtures.EntityTestFixtures;
+import org.apache.causeway.testdomain.fixtures.InventoryJaxbVm;
import org.apache.causeway.testdomain.jdo.entities.JdoBook;
import org.apache.causeway.testdomain.jdo.entities.JdoInventory;
import org.apache.causeway.testdomain.jdo.entities.JdoProduct;
import org.apache.causeway.testdomain.util.dto.BookDto;
+import org.apache.causeway.testdomain.util.dto.IBook;
import lombok.val;
@@ -45,38 +44,9 @@ public class JdoTestFixtures extends EntityTestFixtures {
"Sample Publisher"));
}
- public Bookmark getJdoInventoryJaxbVmAsBookmark() {
- return bookmarkService.bookmarkForElseFail(setUpViewmodelWith3Books());
- }
-
- public JdoInventoryJaxbVm setUpViewmodelWith3Books() {
- val inventoryJaxbVm = factoryService.viewModel(new JdoInventoryJaxbVm());
- val books = inventoryJaxbVm.listBooks();
- if(_NullSafe.size(books)>0) {
- val favoriteBook = books.get(0);
- inventoryJaxbVm.setName("Bookstore");
- inventoryJaxbVm.setBooks(books);
- inventoryJaxbVm.setFavoriteBook(favoriteBook);
- inventoryJaxbVm.setBooksForTab1(books.stream().skip(1).collect(Collectors.toList()));
- inventoryJaxbVm.setBooksForTab2(books.stream().limit(2).collect(Collectors.toList()));
- }
- return inventoryJaxbVm;
- }
-
- // -- ASSERTIONS
-
- public void assertPopulatedWithDefaults(
- final JdoInventoryJaxbVm inventoryJaxbVm) {
- assertEquals("JdoInventoryJaxbVm; Bookstore; 3 products", inventoryJaxbVm.title());
- assertEquals("Bookstore", inventoryJaxbVm.getName());
- val books = inventoryJaxbVm.listBooks();
- assertEquals(3, books.size());
- val favoriteBook = inventoryJaxbVm.getFavoriteBook();
- val expectedBook = BookDto.sample();
- assertEquals(expectedBook.getName(), favoriteBook.getName());
- assertHasPersistenceId(favoriteBook);
- inventoryJaxbVm.listBooks()
- .forEach(this::assertHasPersistenceId);
+ @Override
+ protected Class<? extends InventoryJaxbVm<? extends IBook>> vmClass() {
+ return JdoInventoryJaxbVm.class;
}
// -- HELPER
diff --git a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/entities/JdoProduct.java b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/entities/JdoProduct.java
index 34f552d834..dfc882b72c 100644
--- a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/entities/JdoProduct.java
+++ b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jdo/entities/JdoProduct.java
@@ -39,7 +39,6 @@ import org.apache.causeway.applib.annotation.MemberSupport;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.Publishing;
import org.apache.causeway.commons.internal.base._Strings;
-import org.apache.causeway.testdomain.fixtures.HasName;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
@@ -60,9 +59,7 @@ import lombok.ToString;
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class JdoProduct
-implements
- HasName,
- Comparable<JdoProduct> {
+implements Comparable<JdoProduct> {
public String title() {
return toString();
diff --git a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/JpaInventoryJaxbVm.java b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/JpaInventoryJaxbVm.java
index 6214c05b93..f679745596 100644
--- a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/JpaInventoryJaxbVm.java
+++ b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/JpaInventoryJaxbVm.java
@@ -42,6 +42,7 @@ import org.apache.causeway.applib.annotation.ObjectSupport;
import org.apache.causeway.applib.annotation.Optionality;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.services.repository.RepositoryService;
+import org.apache.causeway.testdomain.fixtures.InventoryJaxbVm;
import org.apache.causeway.testdomain.jpa.entities.JpaBook;
import org.apache.causeway.testdomain.jpa.entities.JpaInventory;
import org.apache.causeway.testdomain.jpa.entities.JpaProduct;
@@ -60,11 +61,13 @@ import lombok.Setter;
@Named("testdomain.jpa.JpaInventoryJaxbVm")
@DomainObject(
nature=Nature.VIEW_MODEL)
-public class JpaInventoryJaxbVm {
+public class JpaInventoryJaxbVm
+implements InventoryJaxbVm<JpaBook> {
@XmlTransient @Inject
private RepositoryService repository;
+ @Override
@ObjectSupport public String title() {
return String.format("%s; %s; %d products",
this.getClass().getSimpleName(), getName(), listProducts().size());
@@ -80,6 +83,7 @@ public class JpaInventoryJaxbVm {
return repository.allInstances(JpaProduct.class);
}
+ @Override
@Action
public List<JpaBook> listBooks() {
return repository.allInstances(JpaBook.class);
diff --git a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/JpaTestFixtures.java b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/JpaTestFixtures.java
index 802b59a0c0..d615d7dec7 100644
--- a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/JpaTestFixtures.java
+++ b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/JpaTestFixtures.java
@@ -20,19 +20,18 @@ package org.apache.causeway.testdomain.jpa;
import java.util.SortedSet;
import java.util.TreeSet;
-import java.util.stream.Collectors;
import org.springframework.stereotype.Service;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import org.apache.causeway.applib.services.bookmark.Bookmark;
-import org.apache.causeway.commons.internal.base._NullSafe;
import org.apache.causeway.testdomain.fixtures.EntityTestFixtures;
+import org.apache.causeway.testdomain.fixtures.InventoryJaxbVm;
import org.apache.causeway.testdomain.jpa.entities.JpaBook;
import org.apache.causeway.testdomain.jpa.entities.JpaInventory;
import org.apache.causeway.testdomain.jpa.entities.JpaProduct;
import org.apache.causeway.testdomain.util.dto.BookDto;
+import org.apache.causeway.testdomain.util.dto.IBook;
import lombok.val;
@@ -45,38 +44,9 @@ public class JpaTestFixtures extends EntityTestFixtures {
"Sample Publisher"));
}
- public Bookmark getJpaInventoryJaxbVmAsBookmark() {
- return bookmarkService.bookmarkForElseFail(setUpViewmodelWith3Books());
- }
-
- public JpaInventoryJaxbVm setUpViewmodelWith3Books() {
- val inventoryJaxbVm = factoryService.viewModel(new JpaInventoryJaxbVm());
- val books = inventoryJaxbVm.listBooks();
- if(_NullSafe.size(books)>0) {
- val favoriteBook = books.get(0);
- inventoryJaxbVm.setName("Bookstore");
- inventoryJaxbVm.setBooks(books);
- inventoryJaxbVm.setFavoriteBook(favoriteBook);
- inventoryJaxbVm.setBooksForTab1(books.stream().skip(1).collect(Collectors.toList()));
- inventoryJaxbVm.setBooksForTab2(books.stream().limit(2).collect(Collectors.toList()));
- }
- return inventoryJaxbVm;
- }
-
- // -- ASSERTIONS
-
- public void assertPopulatedWithDefaults(
- final JpaInventoryJaxbVm inventoryJaxbVm) {
- assertEquals("JpaInventoryJaxbVm; Bookstore; 3 products", inventoryJaxbVm.title());
- assertEquals("Bookstore", inventoryJaxbVm.getName());
- val books = inventoryJaxbVm.listBooks();
- assertEquals(3, books.size());
- val favoriteBook = inventoryJaxbVm.getFavoriteBook();
- val expectedBook = BookDto.sample();
- assertEquals(expectedBook.getName(), favoriteBook.getName());
- assertHasPersistenceId(favoriteBook);
- inventoryJaxbVm.listBooks()
- .forEach(this::assertHasPersistenceId);
+ @Override
+ protected Class<? extends InventoryJaxbVm<? extends IBook>> vmClass() {
+ return JpaInventoryJaxbVm.class;
}
// -- FIXTURES
@@ -105,4 +75,6 @@ public class JpaTestFixtures extends EntityTestFixtures {
repository.persistAndFlush(inventory);
}
+
+
}
diff --git a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/entities/JpaProduct.java b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/entities/JpaProduct.java
index ccfa660388..4e761d960a 100644
--- a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/entities/JpaProduct.java
+++ b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/jpa/entities/JpaProduct.java
@@ -43,7 +43,6 @@ import org.apache.causeway.applib.annotation.ObjectSupport;
import org.apache.causeway.applib.annotation.Property;
import org.apache.causeway.applib.annotation.Publishing;
import org.apache.causeway.commons.internal.base._Strings;
-import org.apache.causeway.testdomain.fixtures.HasName;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
@@ -64,9 +63,7 @@ import lombok.ToString;
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class JpaProduct
-implements
- HasName,
- Comparable<JpaProduct> {
+implements Comparable<JpaProduct> {
@ObjectSupport public String title() {
return toString();
diff --git a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/util/rest/RestEndpointService.java b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/util/rest/RestEndpointService.java
index 7dfbd89da8..4849cf4085 100644
--- a/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/util/rest/RestEndpointService.java
+++ b/regressiontests/stable/src/main/java/org/apache/causeway/testdomain/util/rest/RestEndpointService.java
@@ -213,7 +213,7 @@ public class RestEndpointService {
public Try<Can<JdoBook>> getBooksFromInventoryAsJaxbVm(final RestfulClient client) {
val objectId = interactionService.callAnonymous(
- ()->jdoTestFixtures.getJdoInventoryJaxbVmAsBookmark().getIdentifier());
+ ()->jdoTestFixtures.getInventoryJaxbVmAsBookmark().getIdentifier());
// using domain object alias ...
val request = newInvocationBuilder(client,