UNPKG

rethinkdbdash

Version:

A Node.js driver for RethinkDB with promises and a connection pool

252 lines (231 loc) 5.63 kB
var config = require(__dirname+'/config.js'); var r = require(__dirname+'/../lib')(config); var util = require(__dirname+'/util/common.js'); var assert = require('assert'); var uuid = util.uuid; var It = util.It; var uuid = util.uuid; var dbName, tableName, result; It("All raws datum shoul be defined", function* (done) { try { var result = yield r.expr(1).run(); assert.equal(result, 1); result = yield r.expr(null).run(); assert.equal(result, null); result = yield r.expr(false).run(); assert.equal(result, false); result = yield r.expr(true).run(); assert.equal(result, true); result = yield r.expr("Hello").run(); assert.equal(result, "Hello"); result = yield r.expr([0, 1, 2]).run(); assert.deepEqual(result, [0, 1, 2]); result = yield r.expr({a: 0, b: 1}).run(); assert.deepEqual(result, {a: 0, b: 1}); done(); } catch(e) { done(e); } }) It("`expr` is not defined after a term", function* (done) { try { result = yield r.expr(1).expr("foo").run(); } catch(e) { if (e.message === "`expr` is not defined after:\nr.expr(1)") { done() } else { done(e) } } }) It("`r.expr` should take a nestingLevel value and throw if the nesting level is reached", function* (done) { try { r.expr({a :{b: {c: {d: 1}}}}, 2) } catch(e) { if (e.message === "Nesting depth limit exceeded.\nYou probably have a circular reference somewhere.") { done() } else { done(e); } } }) It("`r.expr` should throw when setNestingLevel is too small", function* (done) { try { r.setNestingLevel(2); var result = yield r.expr({a :{b: {c: {d: 1}}}}).run(); } catch(e) { if (e.message === "Nesting depth limit exceeded.\nYou probably have a circular reference somewhere.") { done() } else { done(e); } } }) It("`r.expr` should work when setNestingLevel set back the value to 100", function* (done) { try { r.setNestingLevel(100); var result = yield r.expr({a :{b: {c: {d: 1}}}}).run(); assert.deepEqual(result, {a :{b: {c: {d: 1}}}}) done(); } catch(e) { done(e); } }) It("`r.expr` should throw when ArrayLimit is too small", function* (done) { try { var result = yield r.expr([0,1,2,3,4,5,6,8,9]).run({arrayLimit: 2}); done(new Error("Was expecting an error")) } catch(e) { if (e.message.match(/^Array over size limit `2` in/)) { done() } else { done(e); } } }) It("`r.expr` should throw when ArrayLimit is too small - options in run take precedence", function* (done) { try { r.setArrayLimit(100); var result = yield r.expr([0,1,2,3,4,5,6,8,9]).run({arrayLimit: 2}); done(new Error("Was expecting an error")) } catch(e) { if (e.message.match(/^Array over size limit `2` in/)) { done() } else { done(e); } } }) It("`r.expr` should throw when setArrayLimit is too small", function* (done) { try { r.setArrayLimit(2); var result = yield r.expr([0,1,2,3,4,5,6,8,9]).run(); done(new Error("Was expecting an error")) } catch(e) { if (e.message.match(/^Array over size limit `2` in/)) { done() } else { done(e); } } }) It("`r.expr` should work when setArrayLimit set back the value to 100000", function* (done) { try { r.setArrayLimit(100000); var result = yield r.expr([0,1,2,3,4,5,6,8,9]).run(); assert.deepEqual(result, [0,1,2,3,4,5,6,8,9]) done(); } catch(e) { console.log(e); done(e); } }) It("`r.expr` should fail with NaN", function* (done) { try { var result = yield r.expr(NaN).run(); done(new Error("NaN should throw an error")); } catch(e) { if (e.message.match(/^Cannot convert `NaN` to JSON/)) { done(); } else { console.log(e.message); done(e); } } }) It("`r.expr` should not NaN if not run", function* (done) { try { r.expr(NaN); done(); } catch(e) { done(e); } }) It("`r.expr` should fail with Infinity", function* (done) { try { var result = yield r.expr(Infinity).run(); done(new Error("Infinity should throw an error")); } catch(e) { if (e.message.match(/^Cannot convert `Infinity` to JSON/)) { done(); } else { console.log(e.message); done(e); } } }) It("`r.expr` should not Infinity if not run", function* (done) { try { r.expr(Infinity); done(); } catch(e) { done(e); } }) It("`r.expr` should work with high unicode char", function* (done) { try { var result = yield r.expr('“').run(); assert.equal(result, '“') done(); } catch(e) { done(e); } }) It("`r.binary` should work - with a buffer", function* (done) { try { var result = yield r.binary(new Buffer([1,2,3,4,5,6])).run(); assert(result instanceof Buffer); assert.deepEqual(result.toJSON().data, [1,2,3,4,5,6]); done(); } catch(e) { console.log(e); done(e); } }) It("`r.binary` should work - with a ReQL term", function* (done) { try { var result = yield r.binary(r.expr("foo")).run(); assert(result instanceof Buffer); result = yield r.expr(result).coerceTo("STRING").run(); assert.equal(result, "foo"); done(); } catch(e) { done(e); } }) It("`r.expr` should work with binaries", function* (done) { try { var result = yield r.expr(new Buffer([1,2,3,4,5,6])).run(); assert(result instanceof Buffer); assert.deepEqual(result.toJSON().data, [1,2,3,4,5,6]); done(); } catch(e) { console.log(e); done(e); } })