VisionFTF / express-admin / node_modules / xsql / test / instance.js
instance.js
Raw
var xsql = require('../lib/instance');


describe('instance', function () {
	describe('throw', function () {
		it('throw on missing dialect name', function () {
			(function () {
				var x = new xsql();
			}).should.throw('xsql: Missing dialect name');
		});
		it('throw on unsupported dialect', function () {
			(function () {
				var x = new xsql({dialect:'mongodb'});
			}).should.throw('xsql: Not supported dialect');
		});
	});
	
	describe('dialect', function () {
		it('dialects', function () {
			['mysql', 'sqlite', 'pg'].forEach(function (dialect) {
				var x = new xsql({dialect:dialect});
				x.dialect.should.equal(dialect);
			});
		});
		it('aliases', function () {
			var x = new xsql({dialect:'mariadb'});
			x.dialect.should.equal('mysql');
			x = new xsql({dialect:'maria'});
			x.dialect.should.equal('mysql');
			x = new xsql({dialect:'postgres'});
			x.dialect.should.equal('pg');
			x = new xsql({dialect:'postgresql'});
			x.dialect.should.equal('pg');
		});
		it('escape symbols', function () {
			var x = new xsql({dialect:'mysql'});
			x.quote.should.equal('`');
			x = new xsql({dialect:'sqlite'});
			x.quote.should.equal('"');
			x = new xsql({dialect:'pg'});
			x.quote.should.equal('"');
		});
		it.skip('set escape symbol', function () {
			x = new xsql({dialect:'sqlite'});
			x.quote.should.equal('[]');
		});
	});
	
	describe('pg', function () {
		it('use public schema by default', function () {
			var x = new xsql({dialect:'pg'});
			x._schema.should.equal('public');
		});
		it('set schema name', function () {
			var x = new xsql({dialect:'pg', schema:'schema'});
			x._schema.should.equal('schema');
		});
	});

	describe('typecheck', function () {
		it('enable typecheck by default', function () {
			var x = new xsql({dialect:'pg'});
			(function () {
				x.join();
			}).should.throw('xsql.join: First argument should be String');
		});
		it('disable typecheck', function () {
			var x = new xsql({dialect:'pg', typecheck:false});
			(function () {
				x.join();
			}).should.throw("Cannot call method 'join' of undefined");
		});
	});

	describe('instances', function () {
		it('multiple', function () {
			var mysql = new xsql({dialect:'mysql'}),
				pg = new xsql({dialect:'pg'});
			// instance
			mysql.dialect.should.equal('mysql');
			pg.dialect.should.equal('pg');
			// escape
			mysql.quotes('column').should.equal('`column`');
			pg.quotes('column').should.equal('"column"');
			// primitive
			mysql.name('column','table').should.equal('`table`.`column`');
			pg.name('column','table').should.equal('"table"."column"');
		});
	});
});