From fc9dc925a05a3fe524dbee1a1516f9af94d6ef06 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 26 Aug 2019 18:50:07 +0200
Subject: [PATCH] when uploading data overlay without specified type set
 default GENERIC

---
 .../src/main/js/gui/AddOverlayDialog.js       | 29 +++++++++++++--
 .../src/test/js/gui/AddOverlayDialog-test.js  | 37 +++++++++++++++++++
 2 files changed, 63 insertions(+), 3 deletions(-)

diff --git a/frontend-js/src/main/js/gui/AddOverlayDialog.js b/frontend-js/src/main/js/gui/AddOverlayDialog.js
index 96d4490165..1c3859e2f8 100644
--- a/frontend-js/src/main/js/gui/AddOverlayDialog.js
+++ b/frontend-js/src/main/js/gui/AddOverlayDialog.js
@@ -146,7 +146,6 @@ AddOverlayDialog.prototype.processFile = function (file) {
           var overlay = overlayParser.parse(evt.target.result);
           var nameInput = $("[name='overlay-name']", self.getElement())[0];
           var descriptionInput = $("[name='overlay-description']", self.getElement())[0];
-          var typeSelect = $("[name='overlay-type']", self.getElement());
           if (overlay.getName() !== undefined) {
             nameInput.value = overlay.getName();
           } else {
@@ -163,9 +162,13 @@ AddOverlayDialog.prototype.processFile = function (file) {
           if (overlay.getDescription() !== undefined) {
             descriptionInput.value = overlay.getDescription();
           }
+
           if (overlay.getType() !== undefined) {
-            typeSelect.val(overlay.getType());
+            self.setType(overlay.getType());
+          } else {
+            self.setType("GENERIC");
           }
+
           if (overlayParser.containsMixedNewLineCharacters(evt.target.result)) {
             GuiConnector.warn("Selected file contains new line characters from different operating systems " +
               "(MAC/Windows/Linux). This might cause confusion when reading the file in the editor later on.")
@@ -187,7 +190,7 @@ AddOverlayDialog.prototype.processFile = function (file) {
 
 /**
  *
- * @param {string} fileContent
+ * @param {?null|string} fileContent
  */
 AddOverlayDialog.prototype.setFileContent = function (fileContent) {
   if (typeof fileContent === 'string' || fileContent instanceof String) {
@@ -324,4 +327,24 @@ AddOverlayDialog.prototype.open = function () {
   $(div).dialog("open");
 };
 
+/**
+ *
+ * @param {string} type
+ */
+AddOverlayDialog.prototype.setType = function (type) {
+  var self = this;
+  if (type !== undefined) {
+    var typeSelect = $("[name='overlay-type']", self.getElement());
+    typeSelect.val(type);
+  }
+};
+
+/**
+ *
+ * @return {string}
+ */
+AddOverlayDialog.prototype.getType = function () {
+  var self = this;
+  return $("[name='overlay-type']", self.getElement()).val();
+};
 module.exports = AddOverlayDialog;
diff --git a/frontend-js/src/test/js/gui/AddOverlayDialog-test.js b/frontend-js/src/test/js/gui/AddOverlayDialog-test.js
index acc37f9345..748d668431 100644
--- a/frontend-js/src/test/js/gui/AddOverlayDialog-test.js
+++ b/frontend-js/src/test/js/gui/AddOverlayDialog-test.js
@@ -1,5 +1,8 @@
 "use strict";
 
+var Readable = require('stream').Readable;
+var toBlob = require('stream-to-blob');
+
 require("../mocha-config");
 var $ = require('jquery');
 
@@ -10,6 +13,7 @@ var chai = require('chai');
 var assert = chai.assert;
 var logger = require('../logger');
 
+
 describe('AddOverlayDialog', function () {
 
   it('addOverlay', function () {
@@ -57,4 +61,37 @@ describe('AddOverlayDialog', function () {
     });
   });
 
+  describe('processFile', function () {
+    it('set default type', function () {
+      var dialog;
+      var file;
+      return ServerConnector.getProject().then(function (project) {
+        dialog = createDialog(project);
+        return dialog.init();
+      }).then(function () {
+
+        dialog.setType("GENETIC_VARIANT");
+        assert.equal("GENETIC_VARIANT", dialog.getType());
+
+        var stream = new Readable;
+        stream.push("s1\n");
+        stream.push(null);
+
+        return new Promise(function (resolve, reject) {
+          toBlob(stream, function (err, blob) {
+            if (err) return reject(err.message);
+            file = blob;
+            file.name = "test.txt";
+            resolve(blob);
+          })
+        });
+      }).then(function () {
+        return dialog.processFile(file);
+      }).then(function () {
+        assert.equal("GENERIC", dialog.getType());
+      });
+    });
+  });
+
+
 });
-- 
GitLab