/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.eas.server.httpservlet; import com.eas.client.Application; import com.eas.client.ModuleStructure; import com.eas.client.ModulesProxy; import com.eas.client.ServerModulesProxy; import com.eas.client.cache.FormsDocuments; import com.eas.client.cache.ModelsDocuments; import com.eas.client.cache.ReportsConfigs; import com.eas.client.cache.ScriptsConfigs; import com.eas.client.changes.Change; import com.eas.client.changes.ChangeValue; import com.eas.client.changes.Command; import com.eas.client.changes.Delete; import com.eas.client.changes.Insert; import com.eas.client.changes.Update; import com.eas.client.queries.QueriesProxy; import com.eas.client.scripts.ScriptedResource; import com.eas.client.threetier.json.ChangesJSONReader; import com.eas.script.Scripts; import com.eas.util.RowsetJsonConstants; import java.io.File; import java.nio.file.Path; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.TimeZone; import java.util.function.Consumer; import static org.junit.Assert.*; import org.junit.BeforeClass; import org.junit.Test; /** * * @author mg */ public class PlatypusRequestHttpReaderTest { protected static final String WRITTEN_CHANGES = "[{\"kind\":\"insert\", \"entity\":\"testEntity\", \"data\":{\"data\\\"\\\"1\":56, \"data2\":\"data2Value\", \"da\\\"ta3\":true, \"data4\":false, \"data5\":\"2012-08-27T11:42:15.514Z\"}},{\"kind\":\"update\", \"entity\":\"testEntity\", \"data\":{\"data\\\"\\\"1\":56, \"data2\":\"data2Value\", \"da\\\"ta3\":true, \"data4\":false, \"data5\":\"2012-08-27T11:42:15.514Z\"}, \"keys\":{\"key1\":78.9000015258789, \"key2\":\"key2Value\"}},{\"kind\":\"delete\", \"entity\":\"testEntity\", \"keys\":{\"key1\":78.9000015258789, \"key2\":\"key2Value\"}},{\"kind\":\"command\", \"entity\":\"testEntity\", \"parameters\":{\"key1\":78.9000015258789, \"key2\":\"key2Value\"}}]"; @BeforeClass public static void init() throws Exception{ Path platypusJsPath = ScriptedResource.lookupPlatypusJs(); Scripts.init(platypusJsPath, false); Scripts.setOnlySpace(Scripts.createSpace()); ScriptedResource.init(new Application(){ @Override public Application.Type getType() { return Application.Type.CLIENT; } @Override public QueriesProxy getQueries() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public ModulesProxy getModules() { return new ModulesProxy(){ @Override public ModuleStructure getModule(String string, Scripts.Space space, Consumer<ModuleStructure> cnsmr, Consumer<Exception> cnsmr1) throws Exception { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public File getResource(String string, Scripts.Space space, Consumer<File> cnsmr, Consumer<Exception> cnsmr1) throws Exception { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public Path getLocalPath() { return platypusJsPath; } @Override public File nameToFile(String string) throws Exception { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public String getDefaultModuleName(File file) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } }; } @Override public ServerModulesProxy getServerModules() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public ModelsDocuments getModels() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public FormsDocuments getForms() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public ReportsConfigs getReports() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public ScriptsConfigs getScriptsConfigs() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } }, platypusJsPath, false); Scripts.getSpace().initSpaceGlobal(); } @Test public void timeStampReadTest() throws ParseException { System.out.println("timeStampReadTest with millis"); SimpleDateFormat sdf = new SimpleDateFormat(RowsetJsonConstants.DATE_FORMAT); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); Date dt = sdf.parse("2012-03-05T23:45:02.305Z"); assertEquals(1330991102305L, dt.getTime()); } @Test public void changesJsonReadTest() throws Exception { System.out.println("changesJsonReadTest"); List<Change> changes = ChangesJSONReader.read(WRITTEN_CHANGES, Scripts.getSpace()); ChangeValue key1 = new ChangeValue("key1", 78.9000015258789D); ChangeValue key2 = new ChangeValue("key2", "key2Value"); ChangeValue[] keys = new ChangeValue[]{key1, key2}; Date date = new Date(1346067735514L); ChangeValue data1 = new ChangeValue("data\"\"1", 56); ChangeValue data2 = new ChangeValue("data2", "data2Value"); ChangeValue data3 = new ChangeValue("da\"ta3", true); ChangeValue data4 = new ChangeValue("data4", false); ChangeValue data5 = new ChangeValue("data5", date); ChangeValue[] data = new ChangeValue[]{data1, data2, data3, data4, data5}; assertNotNull(changes); assertEquals(4, changes.size()); assertTrue(changes.get(0) instanceof Insert); assertTrue(changes.get(1) instanceof Update); assertTrue(changes.get(2) instanceof Delete); assertTrue(changes.get(3) instanceof Command); Insert i = (Insert) changes.get(0); Update u = (Update) changes.get(1); Delete d = (Delete) changes.get(2); Command c = (Command) changes.get(3); assertEquals("testEntity", i.entityName); assertEquals("testEntity", u.entityName); assertEquals("testEntity", d.entityName); assertEquals("testEntity", c.entityName); assertNull(c.command); assertNotNull(i.getData()); assertEquals(5, i.getData().size()); assertNotNull(u.getData()); assertEquals(5, u.getData().size()); for (int j = 0; j < i.getData().size(); j++) { assertNotSame(i.getData().get(j), u.getData().get(j)); compareValues(i.getData().get(j), u.getData().get(j)); compareValues(i.getData().get(j), data[j]); } assertNotNull(u.getKeys()); assertEquals(2, u.getKeys().size()); assertNotNull(d.getKeys()); assertEquals(2, d.getKeys().size()); assertNotNull(c.getParameters()); assertEquals(2, c.getParameters().size()); for (int j = 0; j < u.getKeys().size(); j++) { assertNotSame(u.getKeys().get(j), d.getKeys().get(j)); compareValues(u.getKeys().get(j), d.getKeys().get(j)); assertNotSame(u.getKeys().get(j), c.getParameters().get(j)); compareValues(u.getKeys().get(j), c.getParameters().get(j)); compareValues(u.getKeys().get(j), keys[j]); } } protected static void compareValues(ChangeValue v1, ChangeValue v2) { assertEquals(v1.name, v2.name); if(v1.value != null && !v1.value.equals(v2.value)){ int h = 0; h++; } assertEquals(v1.value, v2.value); } }