package org.jsondoc.core.util; import java.util.Map; import java.util.Set; import org.jsondoc.core.annotation.ApiObject; import org.jsondoc.core.annotation.ApiObjectField; import org.junit.Assert; import org.junit.Test; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Sets; public class JSONDocTemplateBuilderWithOrderTest { @ApiObject(name = "unordered") static class Unordered { @ApiObjectField(name = "xField") public String x; @ApiObjectField(name = "aField") public String a; } @ApiObject(name = "ordered") static class Ordered { @ApiObjectField(name = "xField", order = 1) public String x; @ApiObjectField(name = "aField", order = 2) public String a; @ApiObjectField(name = "bField", order = 2) public String b; } @Test public void thatTemplateIsMappedToStringCorrectly() throws Exception { final ObjectMapper mapper = new ObjectMapper(); Set<Class<?>> classes = Sets.<Class<?>>newHashSet(Unordered.class, Ordered.class); Map<String, Object> unorderedTemplate = JSONDocTemplateBuilder.build(Unordered.class, classes); Assert.assertEquals("{\"aField\":\"\",\"xField\":\"\"}", mapper.writeValueAsString(unorderedTemplate)); Map<String, Object> orderedTemplate = JSONDocTemplateBuilder.build(Ordered.class, classes); Assert.assertEquals("{\"xField\":\"\",\"aField\":\"\",\"bField\":\"\"}", mapper.writeValueAsString(orderedTemplate)); } }