Skip to content

Commit

Permalink
MODFQMMGR-635:Add Query Parameter to retrieve all the ET
Browse files Browse the repository at this point in the history
  • Loading branch information
kjain110 committed Jan 23, 2025
1 parent 4b73f69 commit fc53e52
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ public ResponseEntity<EntityType> getEntityType(UUID entityTypeId, Boolean inclu
}

@Override
public ResponseEntity<EntityTypeSummaries> getEntityTypeSummary(List<UUID> entityTypeIds, Boolean includeInaccessible) {
public ResponseEntity<EntityTypeSummaries> getEntityTypeSummary(List<UUID> entityTypeIds, Boolean includeInaccessible, Boolean includeAll) {
Set<UUID> idsSet = entityTypeIds == null ? Set.of() : Set.copyOf(entityTypeIds);
// Permissions are handled in the service layer// Permissions are handled in the service layer
return ResponseEntity.ok(
new EntityTypeSummaries()
.entityTypes(entityTypeService.getEntityTypeSummary(idsSet, Boolean.TRUE.equals(includeInaccessible)))
.entityTypes(entityTypeService.getEntityTypeSummary(idsSet, Boolean.TRUE.equals(includeInaccessible), Boolean.TRUE.equals(includeAll)))
.version(migrationService.getLatestVersion())
);
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/folio/fqm/service/EntityTypeService.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,11 @@ public class EntityTypeService {
* @param entityTypeIds If provided, only the entity types having the provided Ids will be included in the results
*/
@Transactional(readOnly = true)
public List<EntityTypeSummary> getEntityTypeSummary(Set<UUID> entityTypeIds, boolean includeInaccessible) {
public List<EntityTypeSummary> getEntityTypeSummary(Set<UUID> entityTypeIds, boolean includeInaccessible, boolean includeAll) {
Set<String> userPermissions = permissionsService.getUserPermissions();
return entityTypeRepository
.getEntityTypeDefinitions(entityTypeIds, null)
.filter(entityType -> !Boolean.TRUE.equals(entityType.getPrivate()))
.filter(entityType -> includeAll || !Boolean.TRUE.equals(entityType.getPrivate()))
.filter(entityType -> includeInaccessible || userPermissions.containsAll(permissionsService.getRequiredPermissions(entityType)))
.map(entityType -> {
EntityTypeSummary result = new EntityTypeSummary()
Expand Down
8 changes: 8 additions & 0 deletions src/main/resources/swagger.api/mod-fqm-manager.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ paths:
parameters:
- $ref: '#/components/parameters/entity-type-ids'
- $ref: '#/components/parameters/include-inaccessible'
- $ref: '#/components/parameters/include-All'
responses:
'200':
description: 'Entity type summaries'
Expand Down Expand Up @@ -135,6 +136,13 @@ components:
description: Include inaccessible entity types in the result
schema:
type: boolean
include-All:
name: includeAll
in: query
required: false
description: Include all the entity types regardless of being private
schema:
type: boolean
schemas:
errorResponse:
$ref: schemas/errors.json
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ void shouldGetEntityTypeSummaryForValidIds() throws Exception {
.header(XOkapiHeaders.TENANT, "tenant_01")
.queryParam("ids", id1.toString(), id2.toString());

when(entityTypeService.getEntityTypeSummary(ids, false)).thenReturn(expectedSummary);
when(entityTypeService.getEntityTypeSummary(ids, false, false)).thenReturn(expectedSummary);
when(migrationService.getLatestVersion()).thenReturn("newest coolest version");

mockMvc
Expand All @@ -120,7 +120,7 @@ void shouldGetEntityTypeSummaryForValidIds() throws Exception {
.andExpect(jsonPath("$.entityTypes.[1].missingPermissions").doesNotExist())
.andExpect(jsonPath("$._version", is("newest coolest version")));

verify(entityTypeService, times(1)).getEntityTypeSummary(ids, false);
verify(entityTypeService, times(1)).getEntityTypeSummary(ids, false, false);
verifyNoMoreInteractions(entityTypeService);
}

Expand All @@ -131,16 +131,33 @@ void testSummaryIncludesMissingPermissionsIfRequested() throws Exception {
.header(XOkapiHeaders.TENANT, "tenant_01")
.queryParam("includeInaccessible", "true");

when(entityTypeService.getEntityTypeSummary(Set.of(), true)).thenReturn(List.of());
when(entityTypeService.getEntityTypeSummary(Set.of(), true, false)).thenReturn(List.of());

// all we really want to check here is that the includeInaccessible parameter is correctly unboxed
// no sense making fake data to pass through to ourself; that's redundant with shouldGetEntityTypeSummaryForValidIds
mockMvc.perform(requestBuilder).andExpect(status().isOk());

verify(entityTypeService, times(1)).getEntityTypeSummary(Set.of(), true);
verify(entityTypeService, times(1)).getEntityTypeSummary(Set.of(), true, false);
verifyNoMoreInteractions(entityTypeService);
}

@Test
void testSummaryIncludesAllEntityTypesIfRequested() throws Exception {
RequestBuilder requestBuilder = MockMvcRequestBuilders
.get("/entity-types")
.header(XOkapiHeaders.TENANT, "tenant_01")
.queryParam("includeAll", "true");

when(entityTypeService.getEntityTypeSummary(Set.of(), false, true)).thenReturn(List.of());

mockMvc.perform(requestBuilder)
.andExpect(status().isOk());

verify(entityTypeService, times(1)).getEntityTypeSummary(Set.of(), false, true);
verifyNoMoreInteractions(entityTypeService);
}


@Test
void shouldReturnEmptyListWhenEntityTypeSummaryNotFound() throws Exception {
UUID id1 = UUID.randomUUID();
Expand All @@ -152,7 +169,7 @@ void shouldReturnEmptyListWhenEntityTypeSummaryNotFound() throws Exception {
.header(XOkapiHeaders.TENANT, "tenant_01")
.queryParam("ids", id1.toString(), id2.toString());

when(entityTypeService.getEntityTypeSummary(ids, false)).thenReturn(expectedSummary);
when(entityTypeService.getEntityTypeSummary(ids, false, false)).thenReturn(expectedSummary);

mockMvc.perform(requestBuilder).andExpect(status().isOk()).andExpect(jsonPath("$.entityTypes", is(expectedSummary)));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ void shouldGetEntityTypeSummaryForValidIds() {
when(localizationService.getEntityTypeLabel("translation_label_01")).thenReturn("label_01");
when(localizationService.getEntityTypeLabel("translation_label_02")).thenReturn("label_02");

List<EntityTypeSummary> actualSummary = entityTypeService.getEntityTypeSummary(ids, false);
List<EntityTypeSummary> actualSummary = entityTypeService.getEntityTypeSummary(ids, false, false);

assertEquals(expectedSummary, actualSummary, "Expected Summary should equal Actual Summary");

Expand Down Expand Up @@ -136,7 +136,7 @@ void shouldIncludeCrossTenantEntityTypesWhenInCentralTenant() {
when(localizationService.getEntityTypeLabel("translation_label_02")).thenReturn("label_02");
when(crossTenantQueryService.isCentralTenant()).thenReturn(true);

List<EntityTypeSummary> actualSummary = entityTypeService.getEntityTypeSummary(ids, false);
List<EntityTypeSummary> actualSummary = entityTypeService.getEntityTypeSummary(ids, false, false);
assertEquals(expectedSummary, actualSummary);
}

Expand All @@ -155,7 +155,7 @@ void testEntityTypeSummaryDoesNotIncludeInaccessibleWhenNotRequested() {
.then(invocationOnMock -> new HashSet<>(invocationOnMock.<EntityType>getArgument(0).getRequiredPermissions()));
when(localizationService.getEntityTypeLabel("translation_label_02")).thenReturn("label_02");

List<EntityTypeSummary> actualSummary = entityTypeService.getEntityTypeSummary(ids, false);
List<EntityTypeSummary> actualSummary = entityTypeService.getEntityTypeSummary(ids, false, false);

assertEquals(expectedSummary, actualSummary, "Expected Summary should equal Actual Summary");

Expand Down Expand Up @@ -185,7 +185,7 @@ void testEntityTypeSummaryIncludesInaccessible() {
when(localizationService.getEntityTypeLabel("translation_label_01")).thenReturn("label_01");
when(localizationService.getEntityTypeLabel("translation_label_02")).thenReturn("label_02");

List<EntityTypeSummary> actualSummary = entityTypeService.getEntityTypeSummary(ids, true);
List<EntityTypeSummary> actualSummary = entityTypeService.getEntityTypeSummary(ids, true, false);

assertEquals(expectedSummary, actualSummary, "Expected Summary should equal Actual Summary");

Expand Down

0 comments on commit fc53e52

Please sign in to comment.