Hello,

Attached are two patches. The first one contains some unit tests for
the first half of opensrf.js. These make use of the DOH (Dojo
Objective Harness) framework that Dan Scott had put into place in this
commit: http://svn.open-ils.org/trac/OpenSRF/changeset/2217/

The second patch contains a fix for a bug I found in opensrf.js while
writing the unit tests. There were references to arguments that
weren't declared in several of the function declarations. Natually,
many of the unit tests will not pass until this fix is put into place.

Kevin Beswick
Index: src/javascript/opensrf.js
===================================================================
--- src/javascript/opensrf.js (revision 2228)
+++ src/javascript/opensrf.js (working copy)
@@ -90,12 +90,12 @@ function osrfMethod(hash) {
     this.hash = hash;
     this._encodehash = true;
 }
-osrfMethod.prototype.method = function() {
+osrfMethod.prototype.method = function(d) {
     if(arguments.length == 1) 
         this.hash.method = d; 
     return this.hash.method; 
 };
-osrfMethod.prototype.params = function() {
+osrfMethod.prototype.params = function(d) {
     if(arguments.length == 1) 
         this.hash.params = d; 
     return this.hash.params; 
@@ -114,12 +114,12 @@ function osrfMethodException(hash) {
     this.hash = hash;
     this._encodehash = true;
 }
-osrfMethodException.prototype.status = function() {
+osrfMethodException.prototype.status = function(d) {
     if(arguments.length == 1) 
         this.hash.status = d; 
     return this.hash.status; 
 };
-osrfMethodException.prototype.statusCode = function() {
+osrfMethodException.prototype.statusCode = function(d) {
     if(arguments.length == 1) 
         this.hash.statusCode = d; 
     return this.hash.statusCode; 
@@ -128,12 +128,12 @@ function osrfConnectStatus(hash) {
     this.hash = hash;
     this._encodehash = true;
 }
-osrfConnectStatus.prototype.status = function() {
+osrfConnectStatus.prototype.status = function(d) {
     if(arguments.length == 1) 
         this.hash.status = d; 
     return this.hash.status; 
 };
-osrfConnectStatus.prototype.statusCode = function() {
+osrfConnectStatus.prototype.statusCode = function(d) {
     if(arguments.length == 1) 
         this.hash.statusCode = d; 
     return this.hash.statusCode; 
@@ -142,17 +142,17 @@ function osrfResult(hash) {
     this.hash = hash;
     this._encodehash = true;
 }
-osrfResult.prototype.status = function() {
+osrfResult.prototype.status = function(d) {
     if(arguments.length == 1) 
         this.hash.status = d; 
     return this.hash.status; 
 };
-osrfResult.prototype.statusCode = function() {
+osrfResult.prototype.statusCode = function(d) {
     if(arguments.length == 1) 
         this.hash.statusCode = d; 
     return this.hash.statusCode; 
 };
-osrfResult.prototype.content = function() {
+osrfResult.prototype.content = function(d) {
     if(arguments.length == 1) 
         this.hash.content = d; 
     return this.hash.content; 
@@ -161,12 +161,12 @@ function osrfServerError(hash) {
     this.hash = hash;
     this._encodehash = true;
 }
-osrfServerError.prototype.status = function() {
+osrfServerError.prototype.status = function(d) {
     if(arguments.length == 1) 
         this.hash.status = d; 
     return this.hash.status; 
 };
-osrfServerError.prototype.statusCode = function() {
+osrfServerError.prototype.statusCode = function(d) {
     if(arguments.length == 1) 
         this.hash.statusCode = d; 
     return this.hash.statusCode; 
@@ -175,12 +175,12 @@ function osrfContinueStatus(hash) {
     this.hash = hash;
     this._encodehash = true;
 }
-osrfContinueStatus.prototype.status = function() {
+osrfContinueStatus.prototype.status = function(d) {
     if(arguments.length == 1) 
         this.hash.status = d; 
     return this.hash.status; 
 };
-osrfContinueStatus.prototype.statusCode = function() {
+osrfContinueStatus.prototype.statusCode = function(d) {
     if(arguments.length == 1) 
         this.hash.statusCode = d; 
     return this.hash.statusCode; 
Index: src/javascript/tests/module.js
===================================================================
--- src/javascript/tests/module.js (revision 2228)
+++ src/javascript/tests/module.js (working copy)
@@ -3,6 +3,14 @@ dojo.require("DojoSRF");
 
 try{
 	dojo.require("opensrf.tests.testJSON_v1");
+	dojo.require("opensrf.tests.testosrfMessage");
+	dojo.require("opensrf.tests.testosrfMethod");
+	dojo.require("opensrf.tests.testosrfMethodException");
+	dojo.require("opensrf.tests.testosrfConnectStatus");
+	dojo.require("opensrf.tests.testosrfResult");
+	dojo.require("opensrf.tests.testosrfServerError");
+	dojo.require("opensrf.tests.testosrfContinueStatus");
+
 }catch(e){
 	doh.debug(e);
 }
Index: src/javascript/tests/testosrfConnectStatus.js
new file mode 100644
===================================================================
---src/javascript/tests/testosrfConnectStatus.js (revision 0)
+++src/javascript/tests/testosrfConnectStatus.js (revision 0)
@@ -0,0 +1,45 @@
+dojo.provide('opensrf.tests.testosrfConnectStatus');
+
+dojo.require('opensrf.opensrf', true);
+
+var setupFunc = (function() {
+    var h = { status: "status", statusCode: 1 };
+    this.osrfconnstatus = new osrfConnectStatus(h);
+});
+
+doh.register("osrfConnectStatusTests", [
+//Begin Tests
+{
+  name: "osrfConnectStatusCreateTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfconnstatus);
+    doh.assertTrue(this.osrfconnstatus.hash);
+    doh.assertTrue(this.osrfconnstatus.hash.status === "status");
+    doh.assertTrue(this.osrfconnstatus.hash.statusCode === 1);
+    doh.assertTrue(this.osrfconnstatus._encodehash);
+  }
+},
+
+{
+  name: "osrfConnectStatus_statusTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfconnstatus.status("newStatus") === "newStatus");
+    doh.assertTrue(this.osrfconnstatus.hash.status === "newStatus");
+    doh.assertTrue(this.osrfconnstatus.status("multi", "args") === "newStatus");
+  }
+},
+
+{
+  name: "osrfConnectStatus_statusCodeTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfconnstatus.statusCode(2) === 2);
+    doh.assertTrue(this.osrfconnstatus.hash.statusCode === 2);
+    doh.assertTrue(this.osrfconnstatus.statusCode(3, "args") === 2);
+  }
+}
+
+//End Tests
+]);
Index: src/javascript/tests/testosrfContinueStatus.js
new file mode 100644
===================================================================
---src/javascript/tests/testosrfContinueStatus.js (revision 0)
+++src/javascript/tests/testosrfContinueStatus.js (revision 0)
@@ -0,0 +1,45 @@
+dojo.provide('opensrf.tests.testosrfContinueStatus');
+
+dojo.require('opensrf.opensrf', true);
+
+var setupFunc = (function() {
+    var h = { status: "status", statusCode: 1 };
+    this.osrfcontinuestatus = new osrfContinueStatus(h);
+});
+
+doh.register("osrfContinueStatusTests", [
+//Begin Tests
+{
+  name: "osrfContinueStatusCreateTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfcontinuestatus);
+    doh.assertTrue(this.osrfcontinuestatus.hash);
+    doh.assertTrue(this.osrfcontinuestatus.hash.status === "status");
+    doh.assertTrue(this.osrfcontinuestatus.hash.statusCode === 1);
+    doh.assertTrue(this.osrfcontinuestatus._encodehash);
+  }
+},
+
+{
+  name: "osrfContinueStatus_statusTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfcontinuestatus.status("newStatus") === "newStatus");
+    doh.assertTrue(this.osrfcontinuestatus.hash.status === "newStatus");
+    doh.assertTrue(this.osrfcontinuestatus.status("multi", "args") === "newStatus");
+  }
+},
+
+{
+  name: "osrfContinueStatus_statusCodeTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfcontinuestatus.statusCode(2) === 2);
+    doh.assertTrue(this.osrfcontinuestatus.hash.statusCode === 2);
+    doh.assertTrue(this.osrfcontinuestatus.statusCode(3, "args") === 2);
+  }
+}
+
+//End Tests
+]);
Index: src/javascript/tests/testosrfMessage.js
new file mode 100644
===================================================================
---src/javascript/tests/testosrfMessage.js (revision 0)
+++src/javascript/tests/testosrfMessage.js (revision 0)
@@ -0,0 +1,89 @@
+dojo.provide('opensrf.tests.testosrfMessage');
+
+dojo.require('opensrf.opensrf', true);
+
+var setupFunc = (function() {
+  var h = { locale: "" };
+  this.osrfmsg = new osrfMessage(h);
+});
+
+doh.register("osrfMessageTests", [
+//Begin Tests
+{
+  name: "osrfMessageCreateTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfmsg.hash.locale === 'en-US');
+    doh.assertTrue(this.osrfmsg._encodehash);
+  }
+},
+
+{
+  name: "osrfMessage_threadTraceTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfmsg.threadTrace() == undefined);
+    doh.assertTrue(this.osrfmsg.threadTrace("abc") === "abc");
+    doh.assertTrue(this.osrfmsg.threadTrace("123", "456") === "abc");
+    doh.assertTrue(this.osrfmsg.hash.threadTrace === "abc");
+  }
+},
+
+{
+  name: "osrfMessage_typeTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfmsg.type() == undefined);
+    doh.assertTrue(this.osrfmsg.type("type") === "type");
+    doh.assertTrue(this.osrfmsg.type("multi", "argument") === "type");
+    doh.assertTrue(this.osrfmsg.hash.type === "type");
+  }
+},
+
+{
+  name: "osrfMessage_payloadTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfmsg.payload() == undefined);
+    doh.assertTrue(this.osrfmsg.payload("pay") === "pay");
+    doh.assertTrue(this.osrfmsg.payload("multi", "argument") === "pay");
+    doh.assertTrue(this.osrfmsg.hash.payload === "pay");
+  }
+},
+
+{
+  name: "osrfMessage_localeTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfmsg.locale() == "en-US");
+    doh.assertTrue(this.osrfmsg.locale("fr-CA") === "fr-CA");
+    doh.assertTrue(this.osrfmsg.locale("multi", "argument") === "fr-CA");
+    doh.assertTrue(this.osrfmsg.hash.locale === "fr-CA");
+  }
+},
+
+{
+  name: "osrfMessage_typeTest",
+  setUp: function() {
+    var h = { locale: "" };
+    this.osrfmsg = new osrfMessage(h);
+
+    this.res = {
+      "__c": "osrfMessage",
+      "__p": {
+        "threadTrace" : null,
+        "type" : null,
+        "payload" : "null",
+        "locale" : "en-US"
+      }
+    };
+  },
+  runTest: function() {
+    //XXX there is probably a better way of comparing two js objects
+    doh.assertTrue(js2JSON(this.osrfmsg.serialize()) === js2JSON(this.res));
+    //TODO test when there is a payload
+  }
+}
+
+//End Tests
+]);
Index: src/javascript/tests/testosrfMethod.js
new file mode 100644
===================================================================
---src/javascript/tests/testosrfMethod.js (revision 0)
+++src/javascript/tests/testosrfMethod.js (revision 0)
@@ -0,0 +1,64 @@
+dojo.provide('opensrf.tests.testosrfMethod');
+
+dojo.require('opensrf.opensrf', true);
+
+var setupFunc = (function() {
+    var h = { method: "someMethod" };
+    this.osrfmethod = new osrfMethod(h);
+});
+
+doh.register("osrfMethodTests", [
+//Begin Tests
+{
+  name: "osrfMethodCreateTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfmethod);
+    doh.assertTrue(this.osrfmethod.hash);
+    doh.assertTrue(this.osrfmethod._encodehash);
+    doh.assertTrue(this.osrfmethod.hash.method === "someMethod");
+  }
+},
+
+{
+  name: "osrfMethod_methodTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfmethod.method("otherMethod") === "otherMethod");
+    doh.assertTrue(this.osrfmethod.hash.method === "otherMethod");
+    doh.assertTrue(this.osrfmethod.method("multi", "args") === "otherMethod");
+  }
+},
+
+{
+  name: "osrfMethod_paramsTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfmethod.params("param1") === "param1");
+    doh.assertTrue(this.osrfmethod.hash.params === "param1");
+    doh.assertTrue(this.osrfmethod.params("multi", "args") === "param1");
+  }
+},
+
+{
+  name: "osrfMethod_serializeTest",
+  setUp: function() {
+    var h = { method: "someMethod", params: "param1" };
+    this.osrfmethod = new osrfMethod(h);
+    this.res = {
+      "__c" : "osrfMethod",
+      "__p" : {
+        "method" : "someMethod",
+        "params" : "param1"
+      }
+    };
+  },
+  runTest: function() {
+    doh.assertTrue(js2JSON(this.osrfmethod.serialize()) === js2JSON(this.res));
+  }
+}
+
+
+
+//End Tests
+]);
Index: src/javascript/tests/testosrfMethodException.js
new file mode 100644
===================================================================
---src/javascript/tests/testosrfMethodException.js (revision 0)
+++src/javascript/tests/testosrfMethodException.js (revision 0)
@@ -0,0 +1,45 @@
+dojo.provide('opensrf.tests.testosrfMethodException');
+
+dojo.require('opensrf.opensrf', true);
+
+var setupFunc = (function() {
+    var h = { status: "status", statusCode: 1 };
+    this.osrfmethodex = new osrfMethodException(h);
+});
+
+doh.register("osrfMethodExceptionTests", [
+//Begin Tests
+{
+  name: "osrfMethodExceptionCreateTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfmethodex);
+    doh.assertTrue(this.osrfmethodex.hash);
+    doh.assertTrue(this.osrfmethodex.hash.status === "status");
+    doh.assertTrue(this.osrfmethodex.hash.statusCode === 1);
+    doh.assertTrue(this.osrfmethodex._encodehash);
+  }
+},
+
+{
+  name: "osrfMethodException_statusTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfmethodex.status("newStatus") === "newStatus");
+    doh.assertTrue(this.osrfmethodex.hash.status === "newStatus");
+    doh.assertTrue(this.osrfmethodex.status("multi", "args") === "newStatus");
+  }
+},
+
+{
+  name: "osrfMethodException_statusCodeTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfmethodex.statusCode(2) === 2);
+    doh.assertTrue(this.osrfmethodex.hash.statusCode === 2);
+    doh.assertTrue(this.osrfmethodex.statusCode(3, "args") === 2);
+  }
+}
+
+//End Tests
+]);
Index: src/javascript/tests/testosrfResult.js
new file mode 100644
===================================================================
---src/javascript/tests/testosrfResult.js (revision 0)
+++src/javascript/tests/testosrfResult.js (revision 0)
@@ -0,0 +1,56 @@
+dojo.provide('opensrf.tests.testosrfResult');
+
+dojo.require('opensrf.opensrf', true);
+
+var setupFunc = (function() {
+    var h = { status: "status", statusCode: 1, content: "content" };
+    this.osrfresult = new osrfResult(h);
+});
+
+doh.register("osrfResultTests", [
+//Begin Tests
+{
+  name: "osrfResultCreateTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfresult);
+    doh.assertTrue(this.osrfresult.hash);
+    doh.assertTrue(this.osrfresult.hash.status === "status");
+    doh.assertTrue(this.osrfresult.hash.statusCode === 1);
+    doh.assertTrue(this.osrfresult.hash.content === "content");
+    doh.assertTrue(this.osrfresult._encodehash);
+  }
+},
+
+{
+  name: "osrfResult_statusTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfresult.status("newStatus") === "newStatus");
+    doh.assertTrue(this.osrfresult.hash.status === "newStatus");
+    doh.assertTrue(this.osrfresult.status("multi", "args") === "newStatus");
+  }
+},
+
+{
+  name: "osrfResult_statusCodeTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfresult.statusCode(2) === 2);
+    doh.assertTrue(this.osrfresult.hash.statusCode === 2);
+    doh.assertTrue(this.osrfresult.statusCode(3, "args") === 2);
+  }
+},
+
+{
+  name: "osrfResult_contentTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfresult.content("stuff") === "stuff");
+    doh.assertTrue(this.osrfresult.hash.content === "stuff");
+    doh.assertTrue(this.osrfresult.content("multi", "args") === "stuff");
+  }
+}
+
+//End Tests
+]);
Index: src/javascript/tests/testosrfServerError.js
new file mode 100644
===================================================================
---src/javascript/tests/testosrfServerError.js (revision 0)
+++src/javascript/tests/testosrfServerError.js (revision 0)
@@ -0,0 +1,45 @@
+dojo.provide('opensrf.tests.testosrfServerError');
+
+dojo.require('opensrf.opensrf', true);
+
+var setupFunc = (function() {
+    var h = { status: "status", statusCode: 1 };
+    this.osrfservererror = new osrfServerError(h);
+});
+
+doh.register("osrfServerErrorTests", [
+//Begin Tests
+{
+  name: "osrfServerErrorCreateTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfservererror);
+    doh.assertTrue(this.osrfservererror.hash);
+    doh.assertTrue(this.osrfservererror.hash.status === "status");
+    doh.assertTrue(this.osrfservererror.hash.statusCode === 1);
+    doh.assertTrue(this.osrfservererror._encodehash);
+  }
+},
+
+{
+  name: "osrfServerError_statusTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfservererror.status("newStatus") === "newStatus");
+    doh.assertTrue(this.osrfservererror.hash.status === "newStatus");
+    doh.assertTrue(this.osrfservererror.status("multi", "args") === "newStatus");
+  }
+},
+
+{
+  name: "osrfServerError_statusCodeTest",
+  setUp: setupFunc,
+  runTest: function() {
+    doh.assertTrue(this.osrfservererror.statusCode(2) === 2);
+    doh.assertTrue(this.osrfservererror.hash.statusCode === 2);
+    doh.assertTrue(this.osrfservererror.statusCode(3, "args") === 2);
+  }
+}
+
+//End Tests
+]);

Reply via email to