package org.aplikator.shared.rpc.marshaller; import java.util.Date; import org.aplikator.client.shared.data.ContainerNodeDTO; import org.aplikator.client.shared.data.Operation; import org.aplikator.client.shared.data.PrimaryKey; import org.aplikator.client.shared.data.RecordDTO; import org.aplikator.client.shared.rpc.marshaller.ContainerNodeDTOMarshaller; import org.aplikator.client.shared.rpc.marshaller.PrimaryKeyMarshaller; import org.aplikator.client.shared.rpc.marshaller.RecordDTOMarshaller; import org.easymock.EasyMock; import org.jboss.errai.marshalling.client.api.Marshaller; import org.jboss.errai.marshalling.client.api.MarshallingSession; import org.jboss.errai.marshalling.client.api.json.EJValue; import org.jboss.errai.marshalling.client.marshallers.StringMarshaller; import org.jboss.errai.marshalling.server.JSONDecoder; import org.junit.Assert; import junit.framework.TestCase; public class ContainerNodeDTOMarshallerTest extends TestCase { public static RecordDTO createEditedRecord() { RecordDTO recordDTO = new RecordDTO(); recordDTO.setPrimaryKey(new PrimaryKey("modul", 2)); recordDTO.setValue("datumovepole", new Date()); recordDTO.setValue("stringovepole", "string"); recordDTO.setValue("integerovepole", 2); recordDTO.setValue("doublepole", 3.3); recordDTO.setValue("booleanpole", true); return recordDTO; } public static RecordDTO createOriginalRecord() { RecordDTO recordDTO = new RecordDTO(); recordDTO.setPrimaryKey(new PrimaryKey("modul", 4)); recordDTO.setValue("datumovepole", new Date()); recordDTO.setValue("stringovepole", "string"); recordDTO.setValue("integerovepole", 2); recordDTO.setValue("doublepole", 3.3); recordDTO.setValue("booleanpole", true); return recordDTO; } public void testMarshall() { ContainerNodeDTO cnode = new ContainerNodeDTO(); cnode.setEdited(createEditedRecord()); cnode.setOperation(Operation.UPDATE); cnode.setViewId("modul"); cnode.setOriginal(createOriginalRecord()); MarshallingSession ctx = ctx(); ContainerNodeDTOMarshaller cmarsh = new ContainerNodeDTOMarshaller(); String marshalled = cmarsh.marshall(cnode, ctx); EJValue ejValue = JSONDecoder.decode(marshalled); ContainerNodeDTO demarshalled = cmarsh.demarshall(ejValue, ctx); Assert.assertTrue(demarshalled.getViewId().equals(cnode.getViewId())); Assert.assertTrue(demarshalled.getEdited().getPrimaryKey().equals(cnode.getEdited().getPrimaryKey())); Assert.assertTrue(demarshalled.getOriginal().getPrimaryKey().equals(cnode.getOriginal().getPrimaryKey())); Assert.assertTrue(demarshalled.getOperation().equals(cnode.getOperation())); } @SuppressWarnings("unchecked") private MarshallingSession ctx() { MarshallingSession session = EasyMock.createMock(MarshallingSession.class); PrimaryKeyMarshaller pkmarsh = new PrimaryKeyMarshaller(); Object marsh = pkmarsh; EasyMock.expect(session.getMarshallerInstance(PrimaryKey.class.getName())).andReturn((Marshaller<Object>) marsh).anyTimes(); StringMarshaller smarsh = new StringMarshaller(); marsh = smarsh; EasyMock.expect(session.getMarshallerInstance(String.class.getName())).andReturn((Marshaller<Object>) marsh).anyTimes(); RecordDTOMarshaller recMarsh = new RecordDTOMarshaller(); marsh = recMarsh; EasyMock.expect(session.getMarshallerInstance(RecordDTO.class.getName())).andReturn((Marshaller<Object>) marsh).anyTimes(); EasyMock.replay(session); return session; } }