From 9bb02a19545b201e99859b6ffbcd581ba153a2df Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Tue, 8 Dec 2015 10:48:11 +0000
Subject: [PATCH] SSDM-2788 : Refactoring to have a single data flow

SVN: 35244
---
 .../html/test/test-jsVSjava.js                | 76 ++++++++-----------
 1 file changed, 32 insertions(+), 44 deletions(-)

diff --git a/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-jsVSjava.js b/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-jsVSjava.js
index aa34ba2a33c..03184e8bd4c 100644
--- a/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-jsVSjava.js
+++ b/js-test/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-jsVSjava.js
@@ -6,49 +6,34 @@ define([ 'jquery', 'underscore', 'openbis', 'test/common' ], function($, _, open
 		QUnit.module("JS VS JAVA API");
 		
 		//
-		// Java Level Handlers to mainly ignore classes
+		// Ignore specific Java classes giving a custom message
 		//
 		var getSimpleClassName = function(fullyQualifiedClassName) {
 			var idx = fullyQualifiedClassName.lastIndexOf("."); 
 			return fullyQualifiedClassName.substring(idx+1, fullyQualifiedClassName.length);
 		};
 		
-		
-		var toBeImplementedHandler = function(testsResults, javaClassReport, callback) {
-			var warningResult = "Java class not implemented in JS: " + javaClassReport.name;
-			testsResults.warning.push(warningResult);
-			console.info(warningResult);
-			callback();
-		}
-		
-		var ignoredHandler = function(testsResults, javaClassReport, callback) {
-			var warningResult = "Java class ignored: " + javaClassReport.name;
-			testsResults.warning.push(warningResult);
-			console.info(warningResult);
-			callback();
-		}
-		
-		var javaLevelHandlers = {
-				"AbstractCollectionView" : ignoredHandler,
-				"ListView" : ignoredHandler,
-				"SetView" : ignoredHandler,
-				"NotFetchedException" : ignoredHandler,
-				"ObjectNotFoundException" : ignoredHandler,
-				"UnauthorizedObjectAccessException" : ignoredHandler,
-				"UnsupportedObjectIdException" : ignoredHandler,
-				"IApplicationServerApi" : ignoredHandler,
-				"DataSetFileDownloadInputStream" : ignoredHandler,
-				"IDataStoreServerApi" : ignoredHandler,
-				"DataSetCreation" : ignoredHandler,
-				"LinkedDataCreation" : ignoredHandler,
-				"PhysicalDataCreation" : ignoredHandler,
-				"DataSetFileDownload" : toBeImplementedHandler,
-				"DataSetFileDownloadOptions" : toBeImplementedHandler,
-				"DataSetFileDownloadReader" : toBeImplementedHandler,
-				"DataSetFileSearchCriteria" : toBeImplementedHandler,
-				"DataSetFile" : toBeImplementedHandler,
-				"DataSetFilePermId" : toBeImplementedHandler,
-				"IDataSetFileId" : toBeImplementedHandler
+		var ignoreMessages = {
+				"AbstractCollectionView" : "Java class ignored: ",
+				"ListView" : "Java class ignored: ",
+				"SetView" : "Java class ignored: ",
+				"NotFetchedException" : "Java class ignored: ",
+				"ObjectNotFoundException" : "Java class ignored: ",
+				"UnauthorizedObjectAccessException" : "Java class ignored: ",
+				"UnsupportedObjectIdException" : "Java class ignored: ",
+				"IApplicationServerApi" : "Java class ignored: ",
+				"DataSetFileDownloadInputStream" : "Java class ignored: ",
+				"IDataStoreServerApi" : "Java class ignored: ",
+				"DataSetCreation" : "Java class ignored: ",
+				"LinkedDataCreation" : "Java class ignored: ",
+				"PhysicalDataCreation" : "Java class ignored: ",
+				"DataSetFileDownload" : "Java class not implemented in JS: ",
+				"DataSetFileDownloadOptions" : "Java class not implemented in JS: ",
+				"DataSetFileDownloadReader" : "Java class not implemented in JS: ",
+				"DataSetFileSearchCriteria" : "Java class not implemented in JS: ",
+				"DataSetFile" : "Java class not implemented in JS: ",
+				"DataSetFilePermId" : "Java class not implemented in JS: ",
+				"IDataSetFileId" : "Java class not implemented in JS: "
 		}
 		
 		//
@@ -66,7 +51,7 @@ define([ 'jquery', 'underscore', 'openbis', 'test/common' ], function($, _, open
 		//
 		// JS Level Handlers for deep verification
 		//
-		var defaultHandler = function(testsResults, javaClassReport, jsObject) {
+		var defaultHandler = function(testsResults, javaClassReport, jsObject, circularDependencyConfig) {
 			//Check object returned
 			if(!jsObject) {
 				var errorResult = "JS class missing instance: " + javaClassReport.jsonObjAnnotation;
@@ -76,7 +61,7 @@ define([ 'jquery', 'underscore', 'openbis', 'test/common' ], function($, _, open
 			}
 			
 			//Check prototype available
-			if(!jsObject.prototype && !jsObject.__proto__) {
+			if(!jsObject.prototype && !circularDependencyConfig) {
 				var errorResult = "JS class missing prototype: " + javaClassReport.jsonObjAnnotation;
 				testsResults.error.push(errorResult);
 				console.info(errorResult);
@@ -84,7 +69,7 @@ define([ 'jquery', 'underscore', 'openbis', 'test/common' ], function($, _, open
 			}
 			
 			var jsPrototype = null;
-			if(jsObject.__proto__) {
+			if(circularDependencyConfig) {
 				jsPrototype = jsObject.__proto__;
 			}
 			
@@ -137,11 +122,14 @@ define([ 'jquery', 'underscore', 'openbis', 'test/common' ], function($, _, open
 					return function () {
 						var javaClassName = javaClassReport.name;
 						var javaSimpleClassName = getSimpleClassName(javaClassName);
-						var javaLevelHandler = javaLevelHandlers[javaSimpleClassName];
+						var ignoreMessage = ignoreMessages[javaSimpleClassName];
 						var circularDependencyConfig = circularDependencies[javaSimpleClassName];
 						
-						if(javaLevelHandler) {
-							javaLevelHandler(testsResults, javaClassReport, doNext);
+						if(ignoreMessage) {
+							var warningResult = ignoreMessage + javaClassReport.name;
+							testsResults.warning.push(warningResult);
+							console.info(warningResult);
+							doNext();
 						} else {
 							var jsClassName = null;
 							if(circularDependencyConfig) {
@@ -171,7 +159,7 @@ define([ 'jquery', 'underscore', 'openbis', 'test/common' ], function($, _, open
 												jsObject = containedJsObject;
 											}
 											
-											defaultHandler(testsResults, javaClassReport, jsObject);
+											defaultHandler(testsResults, javaClassReport, jsObject, circularDependencyConfig);
 											testsResults.info.push("Java class matching JS: " + javaClassReport.name);
 											doNext();
 										};
-- 
GitLab