package com.trywildcard.pair.model.product; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.trywildcard.pair.util.TestUtil; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import java.io.IOException; import java.net.URISyntaxException; import java.util.Iterator; /** * Test serializing and deserializing a product card from data in a json file. */ public class ProductCardSerializationTest { ObjectMapper mapper = new TestUtil().getObjectMapper(); static String inputString; @BeforeClass public static void prepare() throws IOException{ // TODO: test null and empty fields //mapper.setSerializationInclusion(Include.NON_NULL); //mapper.setSerializationInclusion(Include.NON_EMPTY); inputString = TestUtil.readResourceAsString("example_product_card.json"); } @Test public void testSerializeProductCard() throws URISyntaxException, JsonMappingException, IOException{ JsonNode inputNode = mapper.readTree(inputString); ProductCard card = mapper.readValue(inputString, ProductCard.class); JsonNode outputNode = mapper.readTree(card.writeAsJsonString()); Assert.assertEquals("Expected inputNode and outputNode sizes to match", inputNode.size(), outputNode.size()); Iterator<String> inputItr = inputNode.fieldNames(); Iterator<String> outputItr = outputNode.fieldNames(); while (inputItr.hasNext()){ String inFieldName = inputItr.next(); String outFieldName = outputItr.next(); Assert.assertEquals("Expected " + inFieldName + " to match", inputNode.get(inFieldName), outputNode.get(outFieldName)); } } }