From 04b97fedab26e50ff3643639d529afc33089a87f Mon Sep 17 00:00:00 2001 From: Jonathan Tang Date: Fri, 12 Jan 2024 20:00:44 -0800 Subject: [PATCH 1/4] feat: adds searchOnClear to queryResponse --- .../formplayer/beans/menus/BaseResponseBean.java | 13 +++++++++++++ .../formplayer/beans/menus/QueryResponseBean.java | 1 + 2 files changed, 14 insertions(+) diff --git a/src/main/java/org/commcare/formplayer/beans/menus/BaseResponseBean.java b/src/main/java/org/commcare/formplayer/beans/menus/BaseResponseBean.java index 26d1b7f1d..d9b9a3c1f 100644 --- a/src/main/java/org/commcare/formplayer/beans/menus/BaseResponseBean.java +++ b/src/main/java/org/commcare/formplayer/beans/menus/BaseResponseBean.java @@ -9,6 +9,8 @@ import org.javarosa.core.services.locale.Localization; +import io.micrometer.core.lang.Nullable; + /** * Base class for responses being sent to the front end. Params are: title - self explanatory * notification - A message String and error boolean to be displayed by frontend sholdAutoSubmit - A @@ -28,6 +30,9 @@ public class BaseResponseBean extends LocationRelevantResponseBean { private String smartLinkRedirect; private boolean dynamicSearch; + @Nullable + private boolean searchOnClear; + private ResponseMetaData metaData; public BaseResponseBean() { @@ -68,6 +73,14 @@ public void setDynamicSearch(boolean dynamicSearch) { this.dynamicSearch = dynamicSearch; } + public boolean isSearchOnClear() { + return searchOnClear; + } + + public void setIsSearchOnClear(boolean searchOnClear) { + this.searchOnClear = searchOnClear; + } + public NotificationMessage getNotification() { return notification; } diff --git a/src/main/java/org/commcare/formplayer/beans/menus/QueryResponseBean.java b/src/main/java/org/commcare/formplayer/beans/menus/QueryResponseBean.java index cad313ad6..e624f8c8c 100644 --- a/src/main/java/org/commcare/formplayer/beans/menus/QueryResponseBean.java +++ b/src/main/java/org/commcare/formplayer/beans/menus/QueryResponseBean.java @@ -101,6 +101,7 @@ public QueryResponseBean(QueryScreen queryScreen) { setDescription(queryScreen.getDescriptionText()); setQueryKey(queryScreen.getQueryKey()); setDynamicSearch(queryScreen.getDynamicSearch()); + setIsSearchOnClear(queryScreen.isSearchOnClear()); } @Override From 801d4fb1aa9573ba20608fc76250e3f28bd34624 Mon Sep 17 00:00:00 2001 From: Jonathan Tang Date: Tue, 16 Jan 2024 14:38:24 -0800 Subject: [PATCH 2/4] test: checks search_on_clear is parsed from suite --- .../formplayer/tests/CaseClaimTests.java | 17 +++++++++++++++++ src/test/resources/archives/caseclaim/suite.xml | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/commcare/formplayer/tests/CaseClaimTests.java b/src/test/java/org/commcare/formplayer/tests/CaseClaimTests.java index 88544f1fe..cf721030a 100644 --- a/src/test/java/org/commcare/formplayer/tests/CaseClaimTests.java +++ b/src/test/java/org/commcare/formplayer/tests/CaseClaimTests.java @@ -105,6 +105,23 @@ public void testDynamicSearch() throws Exception { assertFalse(queryResponseBean.getDynamicSearch()); } + @Test + public void testSearchOnClear() throws Exception { + configureQueryMock(); + // Run query with an app with dynamic_search true and verify + QueryData queryData = new QueryData(); + queryData.setForceManualSearch("search_command.m1_results", true); + QueryResponseBean queryResponseBean = runQuery(queryData); + assertTrue(queryResponseBean.isSearchOnClear()); + + // Run query with an app with dynamic_search false and verify + queryResponseBean = sessionNavigateWithQuery(new String[]{"1"}, + "case_claim_eof_navigation", + null, + QueryResponseBean.class); + assertFalse(queryResponseBean.isSearchOnClear()); + } + @Test public void testEmptySearch() throws Exception { configureQueryMock(); diff --git a/src/test/resources/archives/caseclaim/suite.xml b/src/test/resources/archives/caseclaim/suite.xml index cf977cca4..6638e9d9c 100644 --- a/src/test/resources/archives/caseclaim/suite.xml +++ b/src/test/resources/archives/caseclaim/suite.xml @@ -366,7 +366,7 @@ - + From 64d31a866dd2699c7b8b1ddd00dd2f23f9ed0b59 Mon Sep 17 00:00:00 2001 From: Jonathan Tang Date: Thu, 18 Jan 2024 15:22:23 -0800 Subject: [PATCH 3/4] searchOnClear is relevant only for Query so does not need to be in base Response It is also never nullable. When parsed if the attribute is not present, the value stores is the boolean false --- .../formplayer/beans/menus/BaseResponseBean.java | 13 ------------- .../formplayer/beans/menus/QueryResponseBean.java | 9 +++++++++ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/commcare/formplayer/beans/menus/BaseResponseBean.java b/src/main/java/org/commcare/formplayer/beans/menus/BaseResponseBean.java index d9b9a3c1f..26d1b7f1d 100644 --- a/src/main/java/org/commcare/formplayer/beans/menus/BaseResponseBean.java +++ b/src/main/java/org/commcare/formplayer/beans/menus/BaseResponseBean.java @@ -9,8 +9,6 @@ import org.javarosa.core.services.locale.Localization; -import io.micrometer.core.lang.Nullable; - /** * Base class for responses being sent to the front end. Params are: title - self explanatory * notification - A message String and error boolean to be displayed by frontend sholdAutoSubmit - A @@ -30,9 +28,6 @@ public class BaseResponseBean extends LocationRelevantResponseBean { private String smartLinkRedirect; private boolean dynamicSearch; - @Nullable - private boolean searchOnClear; - private ResponseMetaData metaData; public BaseResponseBean() { @@ -73,14 +68,6 @@ public void setDynamicSearch(boolean dynamicSearch) { this.dynamicSearch = dynamicSearch; } - public boolean isSearchOnClear() { - return searchOnClear; - } - - public void setIsSearchOnClear(boolean searchOnClear) { - this.searchOnClear = searchOnClear; - } - public NotificationMessage getNotification() { return notification; } diff --git a/src/main/java/org/commcare/formplayer/beans/menus/QueryResponseBean.java b/src/main/java/org/commcare/formplayer/beans/menus/QueryResponseBean.java index e624f8c8c..d0e35e182 100644 --- a/src/main/java/org/commcare/formplayer/beans/menus/QueryResponseBean.java +++ b/src/main/java/org/commcare/formplayer/beans/menus/QueryResponseBean.java @@ -26,6 +26,7 @@ public class QueryResponseBean extends MenuBean { private final String type = "query"; private String description; private Hashtable groupHeaders; + private Boolean searchOnClear; QueryResponseBean() { } @@ -54,6 +55,14 @@ public void setGroupHeaders(Hashtable groupHeaders){ this.groupHeaders = groupHeaders; } + public boolean isSearchOnClear() { + return searchOnClear; + } + + public void setIsSearchOnClear(boolean searchOnClear) { + this.searchOnClear = searchOnClear; + } + public QueryResponseBean(QueryScreen queryScreen) { OrderedHashtable queryPromptMap = queryScreen.getUserInputDisplays(); Hashtable currentAnswers = queryScreen.getCurrentAnswers(); From 850ea79eacff86b524f20ed384becab0b1a8f026 Mon Sep 17 00:00:00 2001 From: Jonathan Tang Date: Mon, 22 Jan 2024 11:20:37 -0800 Subject: [PATCH 4/4] merge commcare-core --- libs/commcare | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/commcare b/libs/commcare index 451ee3c8f..ed8413c82 160000 --- a/libs/commcare +++ b/libs/commcare @@ -1 +1 @@ -Subproject commit 451ee3c8f037fbbe0ee1ee77abb28c8c3e3db113 +Subproject commit ed8413c82bc5b8ad3bfc6e84bbafbe1b5e04e31a