package org.minnal.core.serializer; import static org.mockito.Matchers.any; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.testng.Assert.assertEquals; import java.util.HashSet; import java.util.Set; import org.minnal.utils.serializer.DefaultJsonSerializer; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; public class DefaultJsonSerializerTest { private DefaultJsonSerializer serializer; private DummyModel model; @BeforeMethod public void setup() { serializer = new DefaultJsonSerializer(); model = new DummyModel("name","value"); } @Test public void shouldSerializeModel(){ String content = serializer.serialize(model); assertEquals("{\"name\":\"name\",\"value\":\"value\",\"composites\":null,\"association\":null}", content); } @Test public void shouldDeserializeModel(){ String content = serializer.serialize(model); DummyModel dummyModel= serializer.deserialize(content, DummyModel.class); assertEquals(dummyModel.name,model.name); } public DummyModel createNestedDummyModel(){ DummyModel assosiationModel = new DummyModel("name","value"); DummyModel nestedModel = new DummyModel("name","value"); Set<DummyModel> nestedModelSet = new HashSet<DummyModel>(); nestedModelSet.add(nestedModel); model.setAssociation(assosiationModel); model.setComposites(nestedModelSet); return model; } @Test public void shouldRegisterMultipleModules() { ObjectMapper mapper = spy(new ObjectMapper()); serializer = new DefaultJsonSerializer(mapper) { @Override protected void registerModules(ObjectMapper mapper) { mapper.registerModule(new SimpleModule()); mapper.registerModule(new SimpleModule()); mapper.registerModule(new SimpleModule()); } }; verify(mapper, times(3)).registerModule(any(Module.class)); } public static class DummyModel{ private String name; private String value; private Set<DummyModel> composites; private DummyModel association; public DummyModel(){ } public DummyModel(String name, String value){ this.name = name; this.value = value; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the value */ public String getValue() { return value; } /** * @param value the value to set */ public void setValue(String value) { this.value = value; } /** * @return the composites */ public Set<DummyModel> getComposites() { return composites; } /** * @param composites the composites to set */ public void setComposites(Set<DummyModel> composites) { this.composites = composites; } /** * @return the association */ public DummyModel getAssociation() { return association; } /** * @param association the association to set */ public void setAssociation(DummyModel association) { this.association = association; } } }