From b98a4bf27515208cd40321970e630af77c4b2622 Mon Sep 17 00:00:00 2001 From: Valentin Laurin Date: Mon, 17 Feb 2025 10:26:44 +0000 Subject: [PATCH] Fix `[sourceFieldPath]` definition extraction Semantic condition validation relies on definition extractor returning a definition, hence something must be returned for `[sourceFieldPath]` to be considered valid --- .../definition/DefinitionExtractor.java | 7 +++++- .../SemanticConditionValidatorTest.java | 3 ++- .../definition/DefinitionExtractorTest.java | 22 +++++++++---------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/main/java/app/quickcase/sdk/spring/definition/DefinitionExtractor.java b/src/main/java/app/quickcase/sdk/spring/definition/DefinitionExtractor.java index f60ca47..beffc3d 100644 --- a/src/main/java/app/quickcase/sdk/spring/definition/DefinitionExtractor.java +++ b/src/main/java/app/quickcase/sdk/spring/definition/DefinitionExtractor.java @@ -70,7 +70,12 @@ public MetadataField extractField(MetadataFieldPath path) { .name("Classification") .label("Default record classification") .build(); - default -> throw new IllegalArgumentException("Path not supported in definition context: " + path); + // CaseLink metadata + case SOURCE_FIELD_PATH -> MetadataField.builder() + .id(path.toString()) + .name("Link source field") + .label("Path of the field from which the link originated") + .build(); }; } diff --git a/src/test/java/app/quickcase/sdk/spring/condition/validate/SemanticConditionValidatorTest.java b/src/test/java/app/quickcase/sdk/spring/condition/validate/SemanticConditionValidatorTest.java index 5353bc5..975c8cb 100644 --- a/src/test/java/app/quickcase/sdk/spring/condition/validate/SemanticConditionValidatorTest.java +++ b/src/test/java/app/quickcase/sdk/spring/condition/validate/SemanticConditionValidatorTest.java @@ -26,7 +26,8 @@ void shouldReturnEmptySetWhenAllValid() { var condition = new Condition( new Criteria[][]{ new Criteria[]{ - Criteria.builder().path("complex1").build() + Criteria.builder().path("complex1").build(), + Criteria.builder().path("[sourceFieldPath]").build() }, new Criteria[]{ Criteria.builder().path("complex1.member1").build(), diff --git a/src/test/java/app/quickcase/sdk/spring/definition/DefinitionExtractorTest.java b/src/test/java/app/quickcase/sdk/spring/definition/DefinitionExtractorTest.java index 5ac8e7e..400a0ed 100644 --- a/src/test/java/app/quickcase/sdk/spring/definition/DefinitionExtractorTest.java +++ b/src/test/java/app/quickcase/sdk/spring/definition/DefinitionExtractorTest.java @@ -143,19 +143,19 @@ void shouldReturnLastModifiedAtField() { )); } - @ParameterizedTest - @ValueSource(strings = { - "[sourceFieldPath]" - }) - @DisplayName("should throw error for paths not supported in definition context") - void shouldThrowErrorForPathsNotSupported(String path) { + @Test + @DisplayName("should return sourceFieldPath field") + void shouldReturnSourceFieldPathField() { var extractor = new DefinitionExtractor(recordType()); - var error = assertThrows( - IllegalArgumentException.class, - () -> extractor.extractField(FieldPath.ofMetadata(path)) - ); + var field = extractor.extractField(FieldPath.ofMetadata("[sourceFieldPath]")); - assertThat(error.getMessage(), equalTo("Path not supported in definition context: " + path)); + assertThat(field, equalTo( + MetadataField.builder() + .id("[sourceFieldPath]") + .name("Link source field") + .label("Path of the field from which the link originated") + .build() + )); } }