[jboss-svn-commits] JBL Code SVN: r6020 - in labs/jbosslabs/trunk/portal-extensions/portal-dnd: dndRenderer.war/js/connection test

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 30 10:45:32 EDT 2006


Author: szimano
Date: 2006-08-30 10:45:30 -0400 (Wed, 30 Aug 2006)
New Revision: 6020

Modified:
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/connection/connection.js
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/ajaxAsserts.js
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/testPortletDrop.html
Log:
ajax tests JBLAB-728

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/connection/connection.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/connection/connection.js	2006-08-30 14:19:01 UTC (rev 6019)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/connection/connection.js	2006-08-30 14:45:30 UTC (rev 6020)
@@ -270,6 +270,64 @@
 	},
 
   /**
+   * Method for initiating an synchronous request via the XHR object.
+   * @public
+   * @param {string} method HTTP transaction method
+   * @param {string} uri Fully qualified path of resource
+   * @param callback User-defined callback function or object
+   * @param {string} postData POST body
+   * @return {object} Returns the connection object
+   */
+	syncRequest:function(method, uri, callback, postData)
+	{
+		var o = this.getConnectionObject();
+
+		if(!o){
+			return null;
+		}
+		else{
+			if(this._isFormSubmit){
+				if(this._isFileUpload){
+					this.uploadFile(o.tId, callback, uri);
+					this.releaseObject(o);
+					return;
+				}
+
+				//If the specified HTTP method is GET, setForm() will return an
+				//encoded string that is concatenated to the uri to
+				//create a querystring.
+				if(method == 'GET'){
+					uri += "?" +  this._sFormData;
+				}
+				else if(method == 'POST'){
+					postData =  this._sFormData;
+				}
+				this._sFormData = '';
+			}
+
+			o.conn.open(method, uri, false);
+
+			if(this._isFormSubmit || (postData && this._default_post_header)){
+				this.initHeader('Content-Type','application/x-www-form-urlencoded');
+				if(this._isFormSubmit){
+					this._isFormSubmit = false;
+				}
+			}
+
+			//Verify whether the transaction has any user-defined HTTP headers
+			//and set them.
+			if(this._has_http_headers){
+				this.setHeader(o);
+			}
+
+			this.handleReadyState(o, callback);
+			postData?o.conn.send(postData):o.conn.send(null);
+
+			return o;
+		}
+	},
+	
+  /**
    * This method serves as a timer that polls the XHR object's readyState
    * property during a transaction, instead of binding a callback to the
    * onreadystatechange event.  Upon readyState 4, handleTransactionResponse

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/ajaxAsserts.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/ajaxAsserts.js	2006-08-30 14:19:01 UTC (rev 6019)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/ajaxAsserts.js	2006-08-30 14:45:30 UTC (rev 6020)
@@ -2,19 +2,7 @@
 var ajaxFailComment;
 var ajaxFailed = false;
 
-var ajaxProcessed = false;
-
-function ajaxStart() {
-	ajaxProcessed = false;
-}
-
-function ajaxEnd() {
-	ajaxProcessed = true;
-	inform("Ending ajax");	
-}
-
 function invokeTestAjax(postData, handleSuccess, handleFailure) {
-	ajaxStart();
 	
 	var callback = 
 	{ 
@@ -23,41 +11,20 @@
 	  argument: [] 
 	}; 
 
-	var request = YAHOO.util.Connect.asyncRequest('POST', host+ajaxURI, callback, postData);
+	var request = YAHOO.util.Connect.syncRequest('POST', host+ajaxURI, callback, postData);
 	
-	
-	while (!isAjaxProcessed()) {
-		// wait till call is processed
-		//waitForAjax();
-		inform(isAjaxProcessed());
-	}
-	
 	handleAjaxError();
 }
 
-function waitForAjax()
-{
-	//wait half second
-	var millis = 500;
-	
-	date = new Date();
-	var curDate = null;
-	
-	do { var curDate = new Date(); }
-	while(curDate - date < millis);
-	
-} 
-
 function isAjaxProcessed() {
 	return ajaxProcessed;
 }
 
 function handleAjaxError() {
-	inform("handle error "+ajaxFailed);
 	
 	if(ajaxFailed) {
 		ajaxFailed = false;
-		throw new JSUnitException(ajaxFailComment,ajaxFailMsg);
+		_assert(ajaxFailComment, false, ajaxFailMsg);
 	}
 }
 		
@@ -69,74 +36,183 @@
 	}
 }
 
-function _trueTypeOfAjax(something) {
-    var result = typeof something;
-    try {
-        switch (result) {
-            case 'string':
-            case 'boolean':
-            case 'number':
+function failAjax(failureMessage) {
+    _assertAjax("Call fail()", false, failureMessage);
+}
+
+
+function assertAjax() {
+    _validateArguments(1, arguments);
+    var booleanValue = nonCommentArg(1, 1, arguments);
+
+    if (typeof(booleanValue) != 'boolean')
+        error('Bad argument to assert(boolean)');
+
+    _assertAjax(commentArg(1, arguments), booleanValue === true, 'Call to assert(boolean) with false');
+}
+
+function assertTrueAjax() {
+    _validateArguments(1, arguments);
+    var booleanValue = nonCommentArg(1, 1, arguments);
+
+    if (typeof(booleanValue) != 'boolean')
+        error('Bad argument to assertTrue(boolean)');
+
+    _assertAjax(commentArg(1, arguments), booleanValue === true, 'Call to assertTrue(boolean) with false');
+}
+
+function assertFalseAjax() {
+    _validateArguments(1, arguments);
+    var booleanValue = nonCommentArg(1, 1, arguments);
+
+    if (typeof(booleanValue) != 'boolean')
+        error('Bad argument to assertFalse(boolean)');
+
+    _assertAjax(commentArg(1, arguments), booleanValue === false, 'Call to assertFalse(boolean) with true');
+}
+
+function assertEqualsAjax() {
+    _validateArguments(2, arguments);
+    var var1 = nonCommentArg(1, 2, arguments);
+    var var2 = nonCommentArg(2, 2, arguments);
+    _assertAjax(commentArg(2, arguments), var1 === var2, 'Expected ' + _displayStringForValue(var1) + ' but was ' + _displayStringForValue(var2));
+}
+
+function assertNotEqualsAjax() {
+    _validateArguments(2, arguments);
+    var var1 = nonCommentArg(1, 2, arguments);
+    var var2 = nonCommentArg(2, 2, arguments);
+    _assertAjax(commentArg(2, arguments), var1 !== var2, 'Expected not to be ' + _displayStringForValue(var2));
+}
+
+function assertNullAjax() {
+    _validateArguments(1, arguments);
+    var aVar = nonCommentArg(1, 1, arguments);
+    _assertAjax(commentArg(1, arguments), aVar === null, 'Expected ' + _displayStringForValue(null) + ' but was ' + _displayStringForValue(aVar));
+}
+
+function assertNotNullAjax() {
+    _validateArguments(1, arguments);
+    var aVar = nonCommentArg(1, 1, arguments);
+    _assertAjax(commentArg(1, arguments), aVar !== null, 'Expected not to be ' + _displayStringForValue(null));
+}
+
+function assertUndefinedAjax() {
+    _validateArguments(1, arguments);
+    var aVar = nonCommentArg(1, 1, arguments);
+    _assertAjax(commentArg(1, arguments), aVar === top.JSUNIT_UNDEFINED_VALUE, 'Expected ' + _displayStringForValue(top.JSUNIT_UNDEFINED_VALUE) + ' but was ' + _displayStringForValue(aVar));
+}
+
+function assertNotUndefinedAjax() {
+    _validateArguments(1, arguments);
+    var aVar = nonCommentArg(1, 1, arguments);
+    _assertAjax(commentArg(1, arguments), aVar !== top.JSUNIT_UNDEFINED_VALUE, 'Expected not to be ' + _displayStringForValue(top.JSUNIT_UNDEFINED_VALUE));
+}
+
+function assertNaNAjax() {
+    _validateArguments(1, arguments);
+    var aVar = nonCommentArg(1, 1, arguments);
+    _assertAjax(commentArg(1, arguments), isNaN(aVar), 'Expected NaN');
+}
+
+function assertNotNaNAjax() {
+    _validateArguments(1, arguments);
+    var aVar = nonCommentArg(1, 1, arguments);
+    _assertAjax(commentArg(1, arguments), !isNaN(aVar), 'Expected not NaN');
+}
+
+function assertObjectEqualsAjax() {
+    _validateArguments(2, arguments);
+    var var1 = nonCommentArg(1, 2, arguments);
+    var var2 = nonCommentArg(2, 2, arguments);
+    var type;
+    var msg = commentArg(2, arguments)?commentArg(2, arguments):'';
+    var isSame = (var1 === var2);
+    //shortpath for references to same object
+    var isEqual = ( (type = _trueTypeOf(var1)) == _trueTypeOf(var2) );
+    if (isEqual && !isSame) {
+        switch (type) {
+            case 'String':
+            case 'Number':
+                isEqual = (var1 == var2);
                 break;
-            case 'object':
-            case 'function':
-                switch (something.constructor)
-                        {
-                    case String:
-                        result = 'String';
-                        break;
-                    case Boolean:
-                        result = 'Boolean';
-                        break;
-                    case Number:
-                        result = 'Number';
-                        break;
-                    case Array:
-                        result = 'Array';
-                        break;
-                    case RegExp:
-                        result = 'RegExp';
-                        break;
-                    case Function:
-                        result = 'Function';
-                        break;
-                    default:
-                        var m = something.constructor.toString().match(/function\s*([^( ]+)\(/);
-                        if (m)
-                            result = m[1];
-                        else
-                            break;
-                }
+            case 'Boolean':
+            case 'Date':
+                isEqual = (var1 === var2);
                 break;
+            case 'RegExp':
+            case 'Function':
+                isEqual = (var1.toString() === var2.toString());
+                break;
+            default: //Object | Array
+                var i;
+                if (isEqual = (var1.length === var2.length))
+                    for (i in var1)
+                        assertObjectEqualsAjax(msg + ' found nested ' + type + '@' + i + '\n', var1[i], var2[i]);
         }
+        _assertAjax(msg, isEqual, 'Expected ' + _displayStringForValue(var1) + ' but was ' + _displayStringForValue(var2));
     }
-    finally {
-        result = result.substr(0, 1).toUpperCase() + result.substr(1);
-        return result;
-    }
 }
 
-function _displayStringForValueAjax(aVar) {
-    var result = '<' + aVar + '>';
-    if (!(aVar === null || aVar === top.JSUNIT_UNDEFINED_VALUE)) {
-        result += ' (' + _trueTypeOfAjax(aVar) + ')';
-    }
-    return result;
+assertArrayEquals = assertObjectEquals;
+
+function assertEvaluatesToTrueAjax() {
+    _validateArguments(1, arguments);
+    var value = nonCommentArg(1, 1, arguments);
+    if (!value)
+        failAjax(commentArg(1, arguments));
 }
 
-function _validateArgumentsAjax(expectedNumberOfNonCommentArgs, args) {
-    if (!( args.length == expectedNumberOfNonCommentArgs ||
-           (args.length == expectedNumberOfNonCommentArgs + 1 && typeof(args[0]) == 'string') ))
-        error('Incorrect arguments passed to assert function');
+function assertEvaluatesToFalseAjax() {
+    _validateArguments(1, arguments);
+    var value = nonCommentArg(1, 1, arguments);
+    if (value)
+        failAjax(commentArg(1, arguments));
 }
 
-function assertEqualsAjax() {
-    _validateArgumentsAjax(2, arguments);
+function assertHTMLEqualsAjax() {
+    _validateArguments(2, arguments);
     var var1 = nonCommentArg(1, 2, arguments);
     var var2 = nonCommentArg(2, 2, arguments);
-    inform("assert " + (var1 === var2));
-    _assertAjax(commentArg(2, arguments), var1 === var2, 'Expected ' + _displayStringForValueAjax(var1) + ' but was ' + _displayStringForValueAjax(var2));
+    var var1Standardized = standardizeHTML(var1);
+    var var2Standardized = standardizeHTML(var2);
+
+    _assertAjax(commentArg(2, arguments), var1Standardized === var2Standardized, 'Expected ' + _displayStringForValue(var1Standardized) + ' but was ' + _displayStringForValue(var2Standardized));
 }
 
-function failAjax(failureMessage) {
-    _assertAjax("Call fail()", false, failureMessage);
-}
\ No newline at end of file
+function assertHashEqualsAjax() {
+    _validateArguments(2, arguments);
+    var var1 = nonCommentArg(1, 2, arguments);
+    var var2 = nonCommentArg(2, 2, arguments);
+    for (var key in var1) {
+        assertNotUndefinedAjax("Expected hash had key " + key + " that was not found", var2[key]);
+        assertEqualsAjax(
+                "Value for key " + key + " mismatch - expected = " + var1[key] + ", actual = " + var2[key],
+                var1[key], var2[key]
+                );
+    }
+    for (var key in var2) {
+        assertNotUndefinedAjax("Actual hash had key " + key + " that was not expected", var1[key]);
+    }
+}
+
+function assertRoughlyEqualsAjax() {
+    _validateArguments(3, arguments);
+    var expected = nonCommentArg(1, 3, arguments);
+    var actual = nonCommentArg(2, 3, arguments);
+    var tolerance = nonCommentArg(3, 3, arguments);
+    assertTrueAjax(
+            "Expected " + expected + ", but got " + actual + " which was more than " + tolerance + " away",
+            Math.abs(expected - actual) < tolerance
+            );
+}
+
+function assertContainsAjax() {
+    _validateArguments(2, arguments);
+    var contained = nonCommentArg(1, 2, arguments);
+    var container = nonCommentArg(2, 2, arguments);
+    assertTrueAjax(
+            "Expected '" + container + "' to contain '" + contained + "'",
+            container.indexOf(contained) != -1
+            );
+}

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/testPortletDrop.html
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/testPortletDrop.html	2006-08-30 14:19:01 UTC (rev 6019)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/testPortletDrop.html	2006-08-30 14:45:30 UTC (rev 6020)
@@ -86,14 +86,10 @@
 			var postdata = "action=TEST_MODE&mode=true";
 			
 			var handle = function(o) {
-				inform("bim");
-				assertEqualsAjax("Wrong response", o.responseText, "Test mode ONs");
-				ajaxEnd();
+				assertEqualsAjax("Wrong response", o.responseText, "Test mode ON");
 			}
 			var error = function(o) {
-				inform("bom");
 				failAjax("Ajax call failed");
-				ajaxEnd();
 			}
 			
 			invokeTestAjax(postdata, handle, error);
@@ -101,18 +97,29 @@
 			var postdata2 = "action=TEST_MODE&mode=false";
 			
 			var handle2 = function(o) {
-				assertEqualsAjax("Wrong response", o.responseText, "Test mode OFFs");
-				ajaxEnd()
+				assertEqualsAjax("Wrong response", o.responseText, "Test mode OFF");
 			}
 			var error2 = function(o) {
 				failAjax("Ajax call failed");
-				ajaxEnd()
 			}
-			
+
 			invokeTestAjax(postdata2, handle2, error2);
 		}
 		
 		
+		function testAjaxWrongParamsTestMode() {
+			var postdata = "action=TEST_MODE&mod=true";
+			
+			var handle = function(o) {
+				failAjax("TEST MODE should return error");
+			}
+			var error = function(o) {
+				// do nothing - params are wrong - weverything is ok
+			}
+			
+			invokeTestAjax(postdata, handle, error);
+		}
+		
     </script>
     
 </head>




More information about the jboss-svn-commits mailing list