You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/06/15 05:00:26 UTC
[isis] branch master updated: ISIS-3049: add regr. test to verify Action annotation with choicesFrom provides choices
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/isis.git
The following commit(s) were added to refs/heads/master by this push:
new ba7c5a40c7 ISIS-3049: add regr. test to verify Action annotation with choicesFrom provides choices
ba7c5a40c7 is described below
commit ba7c5a40c7fbd651c920dfde148fff86df5d9aef
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jun 15 07:00:19 2022 +0200
ISIS-3049: add regr. test to verify Action annotation with choicesFrom
provides choices
---
.../testdomain/interact/ActionInteractionTest.java | 27 ++++++++++
.../model/interaction/InteractionDemo.java | 19 ++++----
.../model/interaction/InteractionDemoItem.java | 57 ----------------------
3 files changed, 37 insertions(+), 66 deletions(-)
diff --git a/regressiontests/stable-interact/src/test/java/org/apache/isis/testdomain/interact/ActionInteractionTest.java b/regressiontests/stable-interact/src/test/java/org/apache/isis/testdomain/interact/ActionInteractionTest.java
index 67ad257387..9b504e2b20 100644
--- a/regressiontests/stable-interact/src/test/java/org/apache/isis/testdomain/interact/ActionInteractionTest.java
+++ b/regressiontests/stable-interact/src/test/java/org/apache/isis/testdomain/interact/ActionInteractionTest.java
@@ -372,6 +372,33 @@ class ActionInteractionTest extends InteractionTestAbstract {
assertComponentWiseUnwrappedEquals(expectedChoices, actualChoices);
}
+ @Test
+ void actionAnnotation_withChoicesFrom_shouldProvideChoices() {
+
+ val actionInteraction = startActionInteractionOn(InteractionDemo.class, "doSomethingWithItems", Where.OBJECT_FORMS)
+ .checkVisibility()
+ .checkUsability();
+
+ assertTrue(actionInteraction.getManagedAction().isPresent(), "action is expected to be usable");
+
+ val managedAction = actionInteraction.getManagedAction().get();
+ val pendingArgs = managedAction.startParameterNegotiation();
+
+ val param0Choices = pendingArgs.getObservableParamChoices(0); // observable
+ val param1Choices = pendingArgs.getObservableParamChoices(1); // observable
+
+ assertFalse(param0Choices.getValue().isEmpty());
+ assertFalse(param1Choices.getValue().isEmpty());
+
+ assertComponentWiseUnwrappedEquals(
+ new InteractionDemo().getItems(),
+ param0Choices.getValue());
+
+ assertComponentWiseUnwrappedEquals(
+ new InteractionDemo().getItems(),
+ param1Choices.getValue());
+ }
+
@Test
void shouldProvideParameterBinding() {
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/interaction/InteractionDemo.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/interaction/InteractionDemo.java
index 06083cdaf2..98500c84d1 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/interaction/InteractionDemo.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/interaction/InteractionDemo.java
@@ -44,7 +44,6 @@ import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.testdomain.model.interaction.InteractionDemoItem.CalendarEntry;
import lombok.Getter;
import lombok.Setter;
@@ -93,10 +92,10 @@ public class InteractionDemo {
@XmlTransient
private final _Lazy<List<InteractionDemoItem>> lazyItems = _Lazy.threadSafe(()->
List.of(
- InteractionDemoItem.of("first", CalendarEntry.randomSample()),
- InteractionDemoItem.of("second", CalendarEntry.randomSample()),
- InteractionDemoItem.of("third", CalendarEntry.randomSample()),
- InteractionDemoItem.of("last", CalendarEntry.randomSample()))
+ InteractionDemoItem.of("first"),
+ InteractionDemoItem.of("second"),
+ InteractionDemoItem.of("third"),
+ InteractionDemoItem.of("last"))
);
@Collection
@@ -109,12 +108,14 @@ public class InteractionDemo {
@Action(choicesFrom = "items")
@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
public InteractionDemo doSomethingWithItems(
+ // choicesFrom = "items"
+ final Set<InteractionDemoItem> items0,
- // bulk selection
- final Set<InteractionDemoItem> items) {
+ // choicesFrom = "items"
+ final Set<InteractionDemoItem> items1) {
- if(items!=null) {
- items.forEach(item->System.out.println(item.getName()));
+ if(items0!=null) {
+ items0.forEach(item->System.out.println(item.getName()));
}
return this;
}
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/interaction/InteractionDemoItem.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/interaction/InteractionDemoItem.java
index 9e13fed9a1..fbbdac648b 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/interaction/InteractionDemoItem.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/interaction/InteractionDemoItem.java
@@ -20,11 +20,6 @@ package org.apache.isis.testdomain.model.interaction;
import java.io.Serializable;
import java.time.Duration;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.temporal.ChronoUnit;
-import java.util.concurrent.ThreadLocalRandom;
import javax.inject.Named;
@@ -34,16 +29,13 @@ import org.apache.isis.applib.annotation.Nature;
import org.apache.isis.applib.annotation.ObjectSupport;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Value;
import lombok.AllArgsConstructor;
-import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
-import lombok.val;
@DomainObject(nature=Nature.VIEW_MODEL)
@Named("testdomain.InteractionDemoItem")
@@ -62,55 +54,6 @@ public class InteractionDemoItem implements Serializable {
@PropertyLayout(describedAs="The name of this 'DemoItem'.")
@Getter @Setter private String name;
- @Property(editing = Editing.DISABLED)
- @ToString.Exclude
- @Getter @Setter private CalendarEntry calendarEntry;
-
- // demo tuple type
- @Value
- @Named("testdomain.InteractionDemoItem.CalendarEntry")
- @lombok.Value @Builder
- public static class CalendarEntry implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- // presentation
- LocalDateTime instant;
- Duration duration;
- String title;
- String description;
-
- // storage representation / dto
- @lombok.Data @lombok.Builder
- public static class Dto {
- long instant;
- long duration;
- ChronoUnit durationUnit;
- String title;
- String description;
- }
-
- public static CalendarEntry randomSample() {
- val rand = ThreadLocalRandom.current();
- val dto = Dto.builder()
- .instant(rand.nextLong())
- .duration(rand.nextLong(600))
- .durationUnit(ChronoUnit.MINUTES)
- .title("title-" + Integer.toHexString(rand.nextInt()))
- .description("description-" + Integer.toHexString(rand.nextInt()))
- .build();
- return fromDto(dto);
- }
-
- public static CalendarEntry fromDto(final CalendarEntry.Dto dto) {
- return CalendarEntry.builder()
- .instant(LocalDateTime.ofInstant(Instant.ofEpochMilli(dto.instant), ZoneId.systemDefault()))
- .duration(Duration.of(dto.duration, dto.durationUnit))
- .build();
- }
-
- }
-
// table row decomposition
@DomainObject(nature=Nature.VIEW_MODEL)
@Named("testdomain.InteractionDemoItem.Projection")