diff gwt-client/src/test/java/test/ModuleRunnerOutput.java @ 9567:86e522bc7f36

jUnit-Tests completed
author gernotbelger
date Mon, 05 Nov 2018 13:21:57 +0100
parents
children 531a60b7af95
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gwt-client/src/test/java/test/ModuleRunnerOutput.java	Mon Nov 05 13:21:57 2018 +0100
@@ -0,0 +1,155 @@
+/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
+ * Software engineering by
+ *  Björnsen Beratende Ingenieure GmbH
+ *  Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
+ *
+ * This file is Free Software under the GNU AGPL (>=v3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+package test;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.dive4elements.artifacts.common.utils.ClientProtocolUtils;
+import org.dive4elements.artifacts.httpclient.http.HttpClient;
+import org.dive4elements.river.client.server.ChartServiceHelper;
+import org.junit.Assert;
+import org.w3c.dom.Document;
+
+/**
+ * @author Domenico Nardi Tironi
+ *
+ */
+
+public class ModuleRunnerOutput {
+
+    private static final String IGNORE_ERSTELLDATUM = "# Datum der Erstellung";
+    private static final String IGNORE_FLYS_VERSION = "# FLYS-Version:";
+    private static final String IGNORE_BEARBEITER = "# Bearbeiter:";
+
+    private static final String LINE_SEPARATOR = System.getProperty("line.separator");
+
+    private static final String EXPORT_FILE_DIR = "D:" + File.separator;
+
+    final FilenameSupplier filename;
+    final String outputModeName;
+
+    // private final String collectionIdentifier;
+
+    private final Map<String, String> params;
+
+    public final String getOutputModename() {
+        return this.outputModeName;
+    }
+
+    public ModuleRunnerOutput(final FilenameSupplier filename, final String outputModeName, final String currentKm) {
+        this.filename = filename;
+        this.outputModeName = outputModeName;
+
+        this.params = getChartExportAttributeMap(currentKm, outputModeName);
+    }
+
+    protected final void assertAndWriteToFile(final HttpClient client, final String collectionId) throws IOException {
+
+        final String type = "csv";
+
+        final String enc = "UTF-8";// req.getParameter("encoding");
+
+        final URL expectedResource = getClass().getResource(this.filename.getFilename());
+        final Document attr = ChartServiceHelper.getChartAttributes(this.params);
+
+        final Document request = ClientProtocolUtils.newOutCollectionDocument(collectionId, this.outputModeName, type, attr);
+
+        final InputStream response = client.collectionOut(request, collectionId, this.outputModeName);
+
+        final String actual = deleteErstelldatum(IOUtils.toString(response, "UTF-8"));
+
+        final String expected = deleteErstelldatum(FileUtils.readFileToString(new File(expectedResource.getFile()), enc));
+
+        // if (!actual.equals(expected)) {
+        // if (this.writeToFile != null && this.writeToFile == true) {
+        doGetWriteToDisk(actual); // TODO: WENN der Test negativ ausfällt, Datei abspeichern -> Diskussion
+        // }
+
+        try {
+            Assert.assertEquals(expected, actual);
+        }
+        catch (final AssertionError e) {
+            // TODO write (both?) files
+
+            // doGetWriteToDisk(actual); // TODO: WENN der Test negativ ausfällt, Datei abspeichern -> Diskussion
+            throw e;
+        }
+    }
+
+    public final void doGetWriteToDisk(final String actual_text) throws FileNotFoundException, IOException {
+
+        // final String name = mode;
+        final String type = "csv";
+
+        final String fn = this.outputModeName + System.currentTimeMillis() + "." + type;
+        final String enc = "windows-1252";
+
+        final String filepath = EXPORT_FILE_DIR + fn;
+        // BOM
+        final byte[] BOM = new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF };
+        final String bomChar = new String(BOM, "UTF-8");
+        final String actualWithBom = new StringBuilder().append(BOM).append(actual_text).toString();
+
+        final InputStreamReader in = new InputStreamReader(new ByteArrayInputStream(Charset.forName(enc).encode(actualWithBom).array()), enc);
+
+        IOUtils.copy(in, new FileOutputStream(filepath), enc);
+    }
+
+    private final String deleteErstelldatum(final String input) {
+        String result = "";
+        final String[] lines = input.split(LINE_SEPARATOR);
+        for (final String line : lines) {
+            if (!line.contains(IGNORE_ERSTELLDATUM) && !line.contains(IGNORE_FLYS_VERSION) && !line.contains(IGNORE_BEARBEITER)) {
+                result = result + line + LINE_SEPARATOR;
+            }
+        }
+        return result;
+    }
+
+    private final Map<String, String> getChartExportAttributeMap(final String currentKm, final String outputmodeName) {
+
+        // From ChartOutputServiceImpl
+        final Map<String, String> attr = new HashMap<String, String>();
+
+        attr.put("width", "-1"); // req.getParameter("width"));
+        attr.put("height", "-1"); // req.getParameter("height"));
+        // attr.put("minx", null);// req.getParameter("minx"));
+        // attr.put("maxx", req.getParameter("maxx"));
+        // attr.put("miny", req.getParameter("miny"));
+        // attr.put("maxy", req.getParameter("maxy"));
+        attr.put("format", "csv"); // req.getParameter("format"));
+        attr.put("export", "true");// req.getParameter("export"));
+
+        if (currentKm != null)
+            attr.put("km", currentKm);// req.getParameter("currentKm"));
+        // encoding?
+
+        // Weiteres (nicht mehr von CHartOutputServiceImpl, sondern von URL-Parametern):
+        attr.put("type", outputmodeName);
+        attr.put("locale", "de");
+        attr.put("timestamp", String.valueOf(System.currentTimeMillis()));
+        attr.put("encoding", "windows-1252");
+
+        return attr;
+    }
+
+}
\ No newline at end of file

http://dive4elements.wald.intevation.org