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() + )); } }