From 8df90e87915ecda42ce1b90da983410d8f733357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Chrastina?= Date: Fri, 11 Mar 2022 15:04:40 +0100 Subject: [PATCH] add renditions json bingind tests --- .../java/kentico/kontent/delivery/Asset.java | 4 + .../kontent/delivery/AssetRendition.java | 119 ++++++++++++++++++ .../kontent/delivery/JacksonBindingsTest.java | 86 ++++++++++++- .../SampleAssetElementWithEmptyRendition.json | 17 +++ .../SampleAssetElementWithRendition.json | 25 ++++ 5 files changed, 250 insertions(+), 1 deletion(-) create mode 100644 kontent-delivery/src/main/java/kentico/kontent/delivery/AssetRendition.java create mode 100644 kontent-delivery/src/test/resources/kentico/kontent/delivery/SampleAssetElementWithEmptyRendition.json create mode 100644 kontent-delivery/src/test/resources/kentico/kontent/delivery/SampleAssetElementWithRendition.json diff --git a/kontent-delivery/src/main/java/kentico/kontent/delivery/Asset.java b/kontent-delivery/src/main/java/kentico/kontent/delivery/Asset.java index 8d481604..77dca130 100644 --- a/kontent-delivery/src/main/java/kentico/kontent/delivery/Asset.java +++ b/kontent-delivery/src/main/java/kentico/kontent/delivery/Asset.java @@ -26,6 +26,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; + /** * Object model for Asset elements */ @@ -56,6 +58,8 @@ public class Asset { @JsonProperty("height") String height; + @JsonProperty("renditions") + Map renditions; /** * File name of the asset diff --git a/kontent-delivery/src/main/java/kentico/kontent/delivery/AssetRendition.java b/kontent-delivery/src/main/java/kentico/kontent/delivery/AssetRendition.java new file mode 100644 index 00000000..35ab50e6 --- /dev/null +++ b/kontent-delivery/src/main/java/kentico/kontent/delivery/AssetRendition.java @@ -0,0 +1,119 @@ +/* + * MIT License + * + * Copyright (c) 2019 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package kentico.kontent.delivery; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Object model for asset rendition + */ +@lombok.Data +@lombok.NoArgsConstructor +@lombok.AllArgsConstructor +@lombok.Builder +public class AssetRendition { + + @JsonProperty("rendition_id") + String renditionId; + + @JsonProperty("preset_id") + String presetId; + + @JsonProperty("width") + String width; + + @JsonProperty("height") + String height; + + @JsonProperty("query") + String query; + + /** + * Asset rendition ID + * + * @return rendition ID + */ + public String getRenditionId() { + return renditionId; + } + + void setRenditionId(String renditionId) { + this.renditionId = renditionId; + } + + /** + * Asset rendition preset ID + * + * @return rendition preset ID + */ + public String getPresetId() { + return presetId; + } + + void setPresetId(String presetId) { + this.presetId = presetId; + } + + /** + * Width of the asset rendition + * + * @return Width of the asset rendition + */ + + public String getWidth() { + return width; + } + + public void setWidth(String width) { + this.width = width; + } + + /** + * Height of the asset rendition + * + * @return Height of the asset rendition + */ + + public String getHeight() { + return height; + } + + public void setHeight(String height) { + this.height = height; + } + + /** + * Asset rendition query + * + * @return rendition query + */ + public String getQuery() { + return query; + } + + void setQuery(String query) { + this.query = query; + } +} \ No newline at end of file diff --git a/kontent-delivery/src/test/java/kentico/kontent/delivery/JacksonBindingsTest.java b/kontent-delivery/src/test/java/kentico/kontent/delivery/JacksonBindingsTest.java index a5a9bdaf..5b3665ae 100644 --- a/kontent-delivery/src/test/java/kentico/kontent/delivery/JacksonBindingsTest.java +++ b/kontent-delivery/src/test/java/kentico/kontent/delivery/JacksonBindingsTest.java @@ -33,6 +33,7 @@ import org.junit.Test; import java.io.IOException; +import java.util.HashMap; import java.util.List; public class JacksonBindingsTest { @@ -321,7 +322,7 @@ public void testDateTimeElementDeserialization() throws IOException { } @Test - public void testAssetElementDeserialization() throws IOException { + public void testAssetElementWithoutRenditionsDeserialization() throws IOException { AssetsElement assetsElement = objectMapper.readValue( this.getClass().getResource("SampleAssetElement.json"), AssetsElement.class); AssetsElement assetsElement2 = objectMapper.readValue( @@ -352,6 +353,89 @@ public void testAssetElementDeserialization() throws IOException { Assert.assertEquals( "https://assets-us-01.kc-usercontent.com:443/38af179c-40ba-42e7-a5ca-33b8cdcc0d45/e700596b-03b0-4cee-ac5c-9212762c027a/coffee-beverages-explained-1080px.jpg", asset.getUrl()); + Assert.assertNull(asset.renditions); + } + + @Test + public void testAssetElementWithEmptyRenditionsDeserialization() throws IOException { + AssetsElement assetsElement = objectMapper.readValue( + this.getClass().getResource("SampleAssetElementWithEmptyRendition.json"), AssetsElement.class); + AssetsElement assetsElement2 = objectMapper.readValue( + this.getClass().getResource("SampleAssetElementWithEmptyRendition.json"), AssetsElement.class); + Assert.assertNotNull("object failed deserialization", assetsElement); + Assert.assertNotNull(assetsElement.toString()); + Assert.assertEquals(assetsElement, assetsElement2); + Assert.assertEquals(assetsElement.hashCode(), assetsElement2.hashCode()); + Assert.assertEquals("Teaser image", assetsElement.getName()); + Assert.assertEquals(1, assetsElement.getValue().size()); + Asset asset = assetsElement.getValue().get(0); + Assert.assertNotNull(asset); + Asset asset2 = Asset.builder() + .name(asset.getName()) + .description(asset.getDescription()) + .size(asset.getSize()) + .url(asset.getUrl()) + .type(asset.getType()) + .height(asset.getHeight()) + .width(asset.getWidth()) + .renditions(asset.getRenditions()) + .build(); + Assert.assertEquals(asset, asset2); + Assert.assertEquals(asset.hashCode(), asset2.hashCode()); + Assert.assertEquals("coffee-beverages-explained-1080px.jpg", asset.getName()); + Assert.assertEquals("image/jpeg", asset.getType()); + Assert.assertEquals(90895, asset.getSize().longValue()); + Assert.assertNull(asset.getDescription()); + Assert.assertEquals( + "https://assets-us-01.kc-usercontent.com:443/38af179c-40ba-42e7-a5ca-33b8cdcc0d45/e700596b-03b0-4cee-ac5c-9212762c027a/coffee-beverages-explained-1080px.jpg", + asset.getUrl()); + Assert.assertNotNull(asset.getRenditions()); + Assert.assertTrue(asset.getRenditions().isEmpty()); + } + + @Test + public void testAssetElementWithRenditionsDeserialization() throws IOException { + AssetsElement assetsElement = objectMapper.readValue( + this.getClass().getResource("SampleAssetElementWithRendition.json"), AssetsElement.class); + AssetsElement assetsElement2 = objectMapper.readValue( + this.getClass().getResource("SampleAssetElementWithRendition.json"), AssetsElement.class); + Assert.assertNotNull("object failed deserialization", assetsElement); + Assert.assertNotNull(assetsElement.toString()); + Assert.assertEquals(assetsElement, assetsElement2); + Assert.assertEquals(assetsElement.hashCode(), assetsElement2.hashCode()); + Assert.assertEquals("Teaser image", assetsElement.getName()); + Assert.assertEquals(1, assetsElement.getValue().size()); + Asset asset = assetsElement.getValue().get(0); + Assert.assertNotNull(asset); + Asset asset2 = Asset.builder() + .name(asset.getName()) + .description(asset.getDescription()) + .size(asset.getSize()) + .url(asset.getUrl()) + .type(asset.getType()) + .height(asset.getHeight()) + .width(asset.getWidth()) + .renditions(asset.getRenditions()) + .build(); + Assert.assertEquals(asset, asset2); + Assert.assertEquals(asset.hashCode(), asset2.hashCode()); + Assert.assertEquals("coffee-beverages-explained-1080px.jpg", asset.getName()); + Assert.assertEquals("image/jpeg", asset.getType()); + Assert.assertEquals(90895, asset.getSize().longValue()); + Assert.assertNull(asset.getDescription()); + Assert.assertEquals( + "https://assets-us-01.kc-usercontent.com:443/38af179c-40ba-42e7-a5ca-33b8cdcc0d45/e700596b-03b0-4cee-ac5c-9212762c027a/coffee-beverages-explained-1080px.jpg", + asset.getUrl()); + Assert.assertNotNull(asset.getRenditions()); + Assert.assertEquals(1, asset.getRenditions().size()); + AssetRendition expectedRendition = new AssetRendition( + "dc448f45-161e-4268-8155-b9d9e33497c8", + "a6d98cd5-8b2c-4e50-99c9-15192bce2490", + "640", + "480", + "w=640&h=480&fit=clip&rect=146,425,788,590" + ); + Assert.assertEquals(expectedRendition, asset.getRenditions().get("default")); } @Test diff --git a/kontent-delivery/src/test/resources/kentico/kontent/delivery/SampleAssetElementWithEmptyRendition.json b/kontent-delivery/src/test/resources/kentico/kontent/delivery/SampleAssetElementWithEmptyRendition.json new file mode 100644 index 00000000..abce7515 --- /dev/null +++ b/kontent-delivery/src/test/resources/kentico/kontent/delivery/SampleAssetElementWithEmptyRendition.json @@ -0,0 +1,17 @@ +{ + "type": "asset", + "name": "Teaser image", + "value": [ + { + "name": "coffee-beverages-explained-1080px.jpg", + "type": "image/jpeg", + "size": "90895", + "description": null, + "url": "https://assets-us-01.kc-usercontent.com:443/38af179c-40ba-42e7-a5ca-33b8cdcc0d45/e700596b-03b0-4cee-ac5c-9212762c027a/coffee-beverages-explained-1080px.jpg", + "width": "1600", + "height": "800", + "renditions": {} + } + ], + "testing_unknown_field_does_not_break_jackson": true +} diff --git a/kontent-delivery/src/test/resources/kentico/kontent/delivery/SampleAssetElementWithRendition.json b/kontent-delivery/src/test/resources/kentico/kontent/delivery/SampleAssetElementWithRendition.json new file mode 100644 index 00000000..a33ae5ed --- /dev/null +++ b/kontent-delivery/src/test/resources/kentico/kontent/delivery/SampleAssetElementWithRendition.json @@ -0,0 +1,25 @@ +{ + "type": "asset", + "name": "Teaser image", + "value": [ + { + "name": "coffee-beverages-explained-1080px.jpg", + "type": "image/jpeg", + "size": "90895", + "description": null, + "url": "https://assets-us-01.kc-usercontent.com:443/38af179c-40ba-42e7-a5ca-33b8cdcc0d45/e700596b-03b0-4cee-ac5c-9212762c027a/coffee-beverages-explained-1080px.jpg", + "width": "1600", + "height": "800", + "renditions": { + "default": { + "rendition_id": "dc448f45-161e-4268-8155-b9d9e33497c8", + "preset_id": "a6d98cd5-8b2c-4e50-99c9-15192bce2490", + "width": 640, + "height": 480, + "query": "w=640&h=480&fit=clip&rect=146,425,788,590" + } + } + } + ], + "testing_unknown_field_does_not_break_jackson": true +}