Skip to content

Commit 295e3f0

Browse files
Skip creation of Search Criteria object for PCS-STAGING (#1990)
1 parent 6c0f77b commit 295e3f0

4 files changed

Lines changed: 50 additions & 1 deletion

File tree

src/main/java/uk/gov/hmcts/reform/pcs/ccd/CaseType.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,18 @@ private static String withSuffix(String base, String separator) {
5151
.orElse(base);
5252
}
5353

54+
/**
55+
* Whether this deployment runs a suffixed case type, e.g. PCS-STAGING or a
56+
* per-PR preview type, driven by the CASE_TYPE_SUFFIX env var.
57+
*/
58+
public static boolean isSuffixedCaseType() {
59+
return isSuffixed(getenv().get("CASE_TYPE_SUFFIX"));
60+
}
61+
62+
static boolean isSuffixed(String suffix) {
63+
return suffix != null && !suffix.isBlank();
64+
}
65+
5466
@Override
5567
public void configure(final ConfigBuilder<PCSCase, State, AccessProfile> builder) {
5668
builder.setCallbackHost(caseApiUrl);

src/main/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseView.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,10 @@ public PCSCase getCase(CaseViewRequest<State> request) {
110110

111111
caseFieldsView.setCaseFields(pcsCase);
112112

113-
pcsCase.setSearchCriteria(searchCriteriaIndexer.buildSearchCriteria(pcsCase));
113+
// Only the canonical PCS case type is indexed into the shared global_search index.
114+
if (!CaseType.isSuffixedCaseType()) {
115+
pcsCase.setSearchCriteria(searchCriteriaIndexer.buildSearchCriteria(pcsCase));
116+
}
114117

115118
return pcsCase;
116119
}

src/test/java/uk/gov/hmcts/reform/pcs/ccd/CaseTypeTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,22 @@ void shouldGetCaseType() {
4141
assertThat(caseType).contains("PCS");
4242
}
4343

44+
@Test
45+
void shouldNotBeSuffixedCaseTypeWhenSuffixAbsentOrBlank() {
46+
// Canonical PCS (indexed into global search): unset or blank CASE_TYPE_SUFFIX.
47+
// The pipeline encodes "canonical" as either unset or an empty string (see Jenkinsfile_CNP).
48+
assertThat(CaseType.isSuffixed(null)).isFalse();
49+
assertThat(CaseType.isSuffixed("")).isFalse();
50+
assertThat(CaseType.isSuffixed(" ")).isFalse();
51+
}
52+
53+
@Test
54+
void shouldBeSuffixedCaseTypeWhenSuffixSet() {
55+
// Suffixed (e.g. PCS-STAGING, PR previews) -> NOT indexed into global search.
56+
assertThat(CaseType.isSuffixed("staging")).isTrue();
57+
assertThat(CaseType.isSuffixed("1234")).isTrue();
58+
}
59+
4460
@Test
4561
void shouldGetJurisdictionId() {
4662
// When

src/test/java/uk/gov/hmcts/reform/pcs/ccd/PCSCaseViewTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.junit.jupiter.api.extension.ExtendWith;
66
import org.mockito.ArgumentCaptor;
77
import org.mockito.Mock;
8+
import org.mockito.MockedStatic;
89
import org.mockito.junit.jupiter.MockitoExtension;
910
import org.modelmapper.ModelMapper;
1011
import uk.gov.hmcts.ccd.sdk.CaseViewRequest;
@@ -55,6 +56,7 @@
5556
import static org.mockito.Mock.Strictness.LENIENT;
5657
import static org.mockito.Mockito.doNothing;
5758
import static org.mockito.Mockito.mock;
59+
import static org.mockito.Mockito.mockStatic;
5860
import static org.mockito.Mockito.never;
5961
import static org.mockito.Mockito.verify;
6062
import static org.mockito.Mockito.when;
@@ -209,6 +211,22 @@ void shouldSetSearchCriteriaFromIndexer() {
209211
assertThat(pcsCase.getSearchCriteria()).isSameAs(searchCriteria);
210212
}
211213

214+
@Test
215+
void shouldNotSetSearchCriteriaForSuffixedCaseType() {
216+
// Given a suffixed (non-canonical) case type, e.g. PCS-STAGING or a PR preview type
217+
try (MockedStatic<CaseType> caseTypeMock = mockStatic(CaseType.class)) {
218+
caseTypeMock.when(CaseType::isSuffixedCaseType).thenReturn(true);
219+
220+
// When
221+
PCSCase pcsCase = underTest.getCase(request(CASE_REFERENCE, DEFAULT_STATE));
222+
223+
// Then - the indexer is never invoked and SearchCriteria is left null, so the
224+
// decentralised indexer won't write a global_search document for this case type
225+
verify(searchCriteriaIndexer, never()).buildSearchCriteria(any(PCSCase.class));
226+
assertThat(pcsCase.getSearchCriteria()).isNull();
227+
}
228+
}
229+
212230
@Test
213231
void shouldMapPartyEntity() {
214232
// Given

0 commit comments

Comments
 (0)