From 3d143a11dbcf708fe5dea6ce561e5bff19b2eece Mon Sep 17 00:00:00 2001 From: Valentin Laurin Date: Mon, 17 Feb 2025 09:37:14 +0000 Subject: [PATCH] Add metadata `[sourceFieldPath]` New metadata, for case links only --- .../definition/DefinitionExtractor.java | 1 + .../sdk/spring/metadata/Metadata.java | 5 ++++- .../definition/DefinitionExtractorTest.java | 19 +++++++++++++++++++ .../sdk/spring/metadata/MetadataTest.java | 10 ++++++++++ 4 files changed, 34 insertions(+), 1 deletion(-) 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 7fd6933..f60ca47 100644 --- a/src/main/java/app/quickcase/sdk/spring/definition/DefinitionExtractor.java +++ b/src/main/java/app/quickcase/sdk/spring/definition/DefinitionExtractor.java @@ -70,6 +70,7 @@ public MetadataField extractField(MetadataFieldPath path) { .name("Classification") .label("Default record classification") .build(); + default -> throw new IllegalArgumentException("Path not supported in definition context: " + path); }; } diff --git a/src/main/java/app/quickcase/sdk/spring/metadata/Metadata.java b/src/main/java/app/quickcase/sdk/spring/metadata/Metadata.java index 8bac301..d744977 100644 --- a/src/main/java/app/quickcase/sdk/spring/metadata/Metadata.java +++ b/src/main/java/app/quickcase/sdk/spring/metadata/Metadata.java @@ -10,7 +10,9 @@ public enum Metadata { STATE("[state]"), CLASSIFICATION("[classification]"), CREATED_AT("[createdAt]"), - LAST_MODIFIED_AT("[lastModifiedAt]"); + LAST_MODIFIED_AT("[lastModifiedAt]"), + // CaseLink metadata + SOURCE_FIELD_PATH("[sourceFieldPath]"); private final String path; @@ -37,6 +39,7 @@ public static Metadata fromPath(@NonNull String path) { case "classification", "security_classification" -> CLASSIFICATION; case "createdat", "created", "created_date" -> CREATED_AT; case "lastmodifiedat", "modified", "last_modified", "last_modified_date" -> LAST_MODIFIED_AT; + case "sourcefieldpath" -> SOURCE_FIELD_PATH; default -> throw new IllegalArgumentException("Invalid metadata path: " + path); }; } 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 2cfe795..5ac8e7e 100644 --- a/src/test/java/app/quickcase/sdk/spring/definition/DefinitionExtractorTest.java +++ b/src/test/java/app/quickcase/sdk/spring/definition/DefinitionExtractorTest.java @@ -7,13 +7,17 @@ import app.quickcase.sdk.spring.definition.model.RecordType; import app.quickcase.sdk.spring.definition.model.Schema; import app.quickcase.sdk.spring.path.FieldPath; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; +import static org.junit.jupiter.api.Assertions.assertThrows; class DefinitionExtractorTest { @@ -138,6 +142,21 @@ void shouldReturnLastModifiedAtField() { .build() )); } + + @ParameterizedTest + @ValueSource(strings = { + "[sourceFieldPath]" + }) + @DisplayName("should throw error for paths not supported in definition context") + void shouldThrowErrorForPathsNotSupported(String path) { + var extractor = new DefinitionExtractor(recordType()); + var error = assertThrows( + IllegalArgumentException.class, + () -> extractor.extractField(FieldPath.ofMetadata(path)) + ); + + assertThat(error.getMessage(), equalTo("Path not supported in definition context: " + path)); + } } @Nested diff --git a/src/test/java/app/quickcase/sdk/spring/metadata/MetadataTest.java b/src/test/java/app/quickcase/sdk/spring/metadata/MetadataTest.java index 8809db6..6f14c02 100644 --- a/src/test/java/app/quickcase/sdk/spring/metadata/MetadataTest.java +++ b/src/test/java/app/quickcase/sdk/spring/metadata/MetadataTest.java @@ -119,6 +119,16 @@ void shouldReturnCreatedAt(String path) { void shouldReturnLastModifiedAt(String path) { assertThat(Metadata.fromPath(path), is(Metadata.LAST_MODIFIED_AT)); } + + @ParameterizedTest + @ValueSource(strings = { + "[sourcefieldpath]", + "[SourceFieldPATH]", // Case insensitive + }) + @DisplayName("should return sourceFieldPath metadata") + void shouldReturnSourceFieldPath(String path) { + assertThat(Metadata.fromPath(path), is(Metadata.SOURCE_FIELD_PATH)); + } } } \ No newline at end of file