diff --git a/NEWS.md b/NEWS.md index 6aae1148..afe03b04 100644 --- a/NEWS.md +++ b/NEWS.md @@ -9,6 +9,7 @@ ### Features * Migrate Package Endpoints to HoldingsIQ v2 API ([MODKBEKBJ-804](https://folio-org.atlassian.net/browse/MODKBEKBJ-804)) * Add additional fields to POST /eholdings/packages endpoint ([MODKBEKBJ-823](https://folio-org.atlassian.net/browse/MODKBEKBJ-823)) +* Update visibility hidden reason handling ([MODKBEKBJ-823](https://folio-org.atlassian.net/browse/MODKBEKBJ-823)) ### Bug fixes * Fix offset handling when retrieving holdings from HoldingsIQ. ([MODKBEKBJ-825](https://folio-org.atlassian.net/browse/MODKBEKBJ-825)) diff --git a/ramls/types/visibilityData.json b/ramls/types/visibilityData.json index a14f04c8..3a5573dc 100644 --- a/ramls/types/visibilityData.json +++ b/ramls/types/visibilityData.json @@ -9,12 +9,12 @@ "isHidden": { "type": "boolean", "description": "Whether resource is hidden or not", - "example": false + "example": true }, "reason": { "type": "string", "description": "Reason why resource is hidden", - "example": "Set by System" + "example": "Hidden by Customer" } } } \ No newline at end of file diff --git a/src/main/java/org/folio/rest/converter/packages/CommonPackagePutRequestConverter.java b/src/main/java/org/folio/rest/converter/packages/CommonPackagePutRequestConverter.java index e0434f32..e7d69011 100644 --- a/src/main/java/org/folio/rest/converter/packages/CommonPackagePutRequestConverter.java +++ b/src/main/java/org/folio/rest/converter/packages/CommonPackagePutRequestConverter.java @@ -9,9 +9,12 @@ import org.folio.holdingsiq.model.Proxy; import org.folio.holdingsiq.model.Visibility; import org.folio.rest.jaxrs.model.PackagePutDataAttributes; +import org.folio.rest.jaxrs.model.PackageVisibility; public abstract class CommonPackagePutRequestConverter { + static final String HIDDEN_BY_CUSTOMER = "Hidden by Customer"; + protected PackagePut.PackagePutBuilder convertCommonAttributes(PackagePutDataAttributes attributes) { var builder = PackagePut.builder(); @@ -29,12 +32,16 @@ protected PackagePut.PackagePutBuilder convertCommonAttributes(PackagePutDataAtt builder.customAltNames(convertCustomAltNames(attributes)); } - builder.visibilityDetails(mapItems(attributes.getVisibility(), - pv -> new Visibility(pv.getCategory().value(), pv.getHidden(), pv.getReason()))); + builder.visibilityDetails(mapItems(attributes.getVisibility(), this::convertVisibility)); return builder; } + protected Visibility convertVisibility(PackageVisibility pv) { + var reason = Boolean.TRUE.equals(pv.getHidden()) ? HIDDEN_BY_CUSTOMER : null; + return new Visibility(pv.getCategory().value(), pv.getHidden(), reason); + } + private void convertSimpleFields(PackagePutDataAttributes attributes, PackagePut.PackagePutBuilder builder) { builder.isSelected(attributes.getIsSelected()); builder.isFullPackage(attributes.getIsFullPackage()); diff --git a/src/test/java/org/folio/rest/converter/packages/CustomPackagePutRequestConverterTest.java b/src/test/java/org/folio/rest/converter/packages/CustomPackagePutRequestConverterTest.java index 8b4ffeb7..91495872 100644 --- a/src/test/java/org/folio/rest/converter/packages/CustomPackagePutRequestConverterTest.java +++ b/src/test/java/org/folio/rest/converter/packages/CustomPackagePutRequestConverterTest.java @@ -1,7 +1,10 @@ package org.folio.rest.converter.packages; +import static org.folio.rest.converter.packages.CommonPackagePutRequestConverter.HIDDEN_BY_CUSTOMER; import static org.folio.util.PackagesTestUtil.getPackagePutRequest; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.List; @@ -63,6 +66,23 @@ void shouldCreateRequestToChangeCustomPackageVisibility() { .withHidden(true) .withCategory(PackageVisibility.Category.PF))) )); - assertTrue(packagePut.getVisibilityDetails().getFirst().hidden()); + var visibility = packagePut.getVisibilityDetails().getFirst(); + assertTrue(visibility.hidden()); + assertEquals(HIDDEN_BY_CUSTOMER, visibility.reason()); + } + + @Test + void shouldIgnoreIncomingReasonAndClearReasonWhenHiddenFalse() { + var packagePut = + converter.convert(getPackagePutRequest( + new PackagePutDataAttributes() + .withVisibility(List.of(new PackageVisibility() + .withHidden(false) + .withReason("some incoming reason") + .withCategory(PackageVisibility.Category.PF))) + )); + var visibility = packagePut.getVisibilityDetails().getFirst(); + assertFalse(visibility.hidden()); + assertNull(visibility.reason()); } } diff --git a/src/test/java/org/folio/rest/converter/packages/ManagedPackagePutRequestConverterTest.java b/src/test/java/org/folio/rest/converter/packages/ManagedPackagePutRequestConverterTest.java index add2bc4f..60982fc3 100644 --- a/src/test/java/org/folio/rest/converter/packages/ManagedPackagePutRequestConverterTest.java +++ b/src/test/java/org/folio/rest/converter/packages/ManagedPackagePutRequestConverterTest.java @@ -1,7 +1,10 @@ package org.folio.rest.converter.packages; +import static org.folio.rest.converter.packages.CommonPackagePutRequestConverter.HIDDEN_BY_CUSTOMER; import static org.folio.util.PackagesTestUtil.getPackagePutRequest; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.List; @@ -31,7 +34,24 @@ void shouldCreateRequestToHidePackage() { .withHidden(true) .withCategory(PackageVisibility.Category.PF))) )); - assertTrue(packagePut.getVisibilityDetails().getFirst().hidden()); + var visibility = packagePut.getVisibilityDetails().getFirst(); + assertTrue(visibility.hidden()); + assertEquals(HIDDEN_BY_CUSTOMER, visibility.reason()); + } + + @Test + void shouldIgnoreIncomingReasonAndClearReasonWhenHiddenFalse() { + var packagePut = converter.convert(getPackagePutRequest( + new PackagePutDataAttributes() + .withIsSelected(true) + .withVisibility(List.of(new PackageVisibility() + .withHidden(false) + .withReason("some incoming reason") + .withCategory(PackageVisibility.Category.PF))) + )); + var visibility = packagePut.getVisibilityDetails().getFirst(); + assertFalse(visibility.hidden()); + assertNull(visibility.reason()); } @Test diff --git a/src/test/resources/requests/rmapi/packages/put-package-custom.json b/src/test/resources/requests/rmapi/packages/put-package-custom.json index 88555a32..7e0c3461 100644 --- a/src/test/resources/requests/rmapi/packages/put-package-custom.json +++ b/src/test/resources/requests/rmapi/packages/put-package-custom.json @@ -6,7 +6,7 @@ { "category": "PF", "hidden": true, - "reason": "Hidden by customer" + "reason": "Hidden by Customer" } ], "customDescription": null, diff --git a/src/test/resources/requests/rmapi/packages/put-package-is-selected.json b/src/test/resources/requests/rmapi/packages/put-package-is-selected.json index d9a64bf3..20c2000b 100644 --- a/src/test/resources/requests/rmapi/packages/put-package-is-selected.json +++ b/src/test/resources/requests/rmapi/packages/put-package-is-selected.json @@ -6,17 +6,17 @@ { "category": "PF", "hidden": false, - "reason": "Hidden by customer" + "reason": null }, { "category": "FTF", "hidden": true, - "reason": null + "reason": "Hidden by Customer" }, { "category": "MARC", "hidden": true, - "reason": null + "reason": "Hidden by Customer" } ], "customDescription": "Custom description",