Add test for when x.y.naturalKeyOfY is needed.
authorBen Thompson <ben@xtuple.com>
Fri, 6 Jun 2014 14:38:25 +0000 (10:38 -0400)
committerBen Thompson <ben@xtuple.com>
Fri, 6 Jun 2014 14:38:25 +0000 (10:38 -0400)
test/database/joins.js

index b2099f7..29b865d 100644 (file)
@@ -137,6 +137,19 @@ var _ = require("underscore"),
       });
     });
 
+    it('should execute a query with an x.y join path when x.y.naturalKeyOfY is needed', function (done) {
+      var sql = 'select xt.js_init(true);xt.post($${"nameSpace":"XM","type":"ItemSiteListItem","dispatch":{"functionName":"fetch","parameters":{"orderBy":[{"attribute":"item.number"}],"rowOffset":0,"rowLimit":50,"parameters":[{"attribute":"isActive","operator":"=","value":true},{"attribute":"item.classCode","operator":"","isCharacteristic":false,"value":"TOYS-CARS"}]}},"encoding":"rjson","username":"admin","encryptionKey":"foo"}$$);';
+
+      datasource.query(sql, creds, function (err, res) {
+        var results;
+        assert.isNull(err);
+        assert.equal(1, res.rowCount, JSON.stringify(res.rows));
+        results = JSON.parse(res.rows[1].get);
+        assert.isNumber(results.length);
+        done();
+      });
+    });
+
     it('should execute a query with ambiguous column filters', function (done) {
       var sql = 'select xt.js_init(true);select xt.get($${"nameSpace":"XM","type":"ToDoListItem","query":{"orderBy":[{"attribute":"priorityOrder"},{"attribute":"dueDate"},{"attribute":"name"}],"parameters":[{"attribute":"isActive","operator":"=","value":true},{"attribute":["owner.username","assignedTo.username"],"operator":"","isCharacteristic":false,"value":"admin"},{"attribute":"uuid","operator":"=","value":"23eef809-2f7c-4289-9eab-a72d621a6adb"}],"rowOffset":0,"rowLimit":50},"username":"admin","encryptionKey":"this is any content"}$$);';