diff --git a/src/main/java/org/folio/fqm/service/EntityTypeService.java b/src/main/java/org/folio/fqm/service/EntityTypeService.java index b6cec4a9..31007f14 100644 --- a/src/main/java/org/folio/fqm/service/EntityTypeService.java +++ b/src/main/java/org/folio/fqm/service/EntityTypeService.java @@ -126,7 +126,11 @@ public ColumnValues getFieldValues(UUID entityTypeId, String fieldName, @Nullabl if (field.getSource() != null) { if (field.getSource().getType() == SourceColumn.TypeEnum.ENTITY_TYPE) { - return getFieldValuesFromEntityType(entityType, fieldName, searchText); + EntityType sourceEntityType = entityTypeFlatteningService.getFlattenedEntityType(field.getSource().getEntityTypeId(), null); + + permissionsService.verifyUserHasNecessaryPermissions(sourceEntityType, false); + + return getFieldValuesFromEntityType(sourceEntityType, field.getSource().getColumnName(), searchText); } else if (field.getSource().getType() == SourceColumn.TypeEnum.FQM) { switch (Objects.requireNonNull(field.getSource().getName(), "Value sources with the FQM type require the source name to be configured")) { case "currency" -> { diff --git a/src/main/resources/entity-types/orders/simple_purchase_order_line.json5 b/src/main/resources/entity-types/orders/simple_purchase_order_line.json5 index f5acd9a3..f7f467ed 100644 --- a/src/main/resources/entity-types/orders/simple_purchase_order_line.json5 +++ b/src/main/resources/entity-types/orders/simple_purchase_order_line.json5 @@ -380,7 +380,6 @@ valueFunction: 'lower(:value)', source: { entityTypeId: '58148257-bfb0-4687-8c42-d2833d772f3e', - columnName: 'cost_currency', name: 'fqm', columnName: 'currency', } diff --git a/src/test/java/org/folio/fqm/service/EntityTypeServiceTest.java b/src/test/java/org/folio/fqm/service/EntityTypeServiceTest.java index f61a8939..6166c287 100644 --- a/src/test/java/org/folio/fqm/service/EntityTypeServiceTest.java +++ b/src/test/java/org/folio/fqm/service/EntityTypeServiceTest.java @@ -176,7 +176,7 @@ void shouldGetValueWithLabel() { .id(entityTypeId.toString()) .name("whatever") .columns(List.of(new EntityTypeColumn().name(valueColumnName) - .source(new SourceColumn(entityTypeId.toString(), valueColumnName) + .source(new SourceColumn(entityTypeId, valueColumnName) .type(SourceColumn.TypeEnum.ENTITY_TYPE)))); ColumnValues expectedColumnValueLabel = new ColumnValues() @@ -208,7 +208,7 @@ void shouldReturnValueAsLabelIfIdColumnDoNotExist() { .id(entityTypeId.toString()) .name("the entity type") .columns(List.of(new EntityTypeColumn().name(valueColumnName) - .source(new SourceColumn(entityTypeId.toString(), valueColumnName) + .source(new SourceColumn(entityTypeId, valueColumnName) .type(SourceColumn.TypeEnum.ENTITY_TYPE)))); when(queryProcessorService.processQuery(any(EntityType.class), any(), any(), any(), any())) @@ -239,7 +239,7 @@ void shouldFilterBySearchText() { .id(entityTypeId.toString()) .name("this is a thing") .columns(List.of(new EntityTypeColumn().name(valueColumnName) - .source(new SourceColumn(entityTypeId.toString(), valueColumnName) + .source(new SourceColumn(entityTypeId, valueColumnName) .type(SourceColumn.TypeEnum.ENTITY_TYPE)))); String searchText = "search text"; String expectedFql = "{\"" + valueColumnName + "\": {\"$regex\": " + "\"" + searchText + "\"}}"; @@ -256,7 +256,7 @@ void shouldHandleNullSearchText() { .id(entityTypeId.toString()) .name("yep") .columns(List.of(new EntityTypeColumn().name(valueColumnName) - .source(new SourceColumn(entityTypeId.toString(), valueColumnName) + .source(new SourceColumn(entityTypeId, valueColumnName) .type(SourceColumn.TypeEnum.ENTITY_TYPE)))); List fields = List.of("id", valueColumnName); String expectedFql = "{\"" + valueColumnName + "\": {\"$regex\": " + "\"\"}}"; @@ -378,7 +378,7 @@ void shouldReturnCurrencies() { .name("currency-test") .columns(List.of(new EntityTypeColumn() .name(valueColumnName) - .source(new SourceColumn(entityTypeId.toString(), valueColumnName) + .source(new SourceColumn(entityTypeId, valueColumnName) .name("currency") // The special FQM source uses "currency" as the name of the currency value source .type(SourceColumn.TypeEnum.FQM)) )); @@ -405,7 +405,7 @@ void shouldReturnTenantId() { .name("tenant-id-test") .columns(List.of(new EntityTypeColumn() .name(valueColumnName) - .source(new SourceColumn(entityTypeId.toString(), valueColumnName) + .source(new SourceColumn(entityTypeId, valueColumnName) .name("tenant_id") // The special FQM source uses "tenant_id" as the name of the currency value source .type(SourceColumn.TypeEnum.FQM)) )); @@ -431,7 +431,7 @@ void shouldIncludeCentralTenantIdInResponseForSimpleInstanceEntityType() { .name("tenant-id-test") .columns(List.of(new EntityTypeColumn() .name(valueColumnName) - .source(new SourceColumn(entityTypeId.toString(), valueColumnName) + .source(new SourceColumn(entityTypeId, valueColumnName) .name("tenant_id") // The special FQM source uses "tenant_id" as the name of the currency value source .type(SourceColumn.TypeEnum.FQM)) ));