alasql
Version:
AlaSQL.js - JavaScript SQL database library for relational and graph data manipulation with support of localStorage, IndexedDB, and Excel
136 lines (115 loc) • 4.01 kB
JavaScript
if(typeof exports === 'object') {
var assert = require("assert");
var alasql = require('..');
} else {
__dirname = '.';
};
describe('Test 325 IDENTITY', function() {
it('1. CREATE DATABASE',function(done){
alasql('CREATE DATABASE test325; USE test325');
done();
});
it('2. CREATE TABLE with multiple constraints',function(done){
alasql(function(){/*
IF OBJECT_ID('dbo.Messages') IS NOT NULL DROP TABLE dbo.Messages;
CREATE TABLE dbo.Messages
(
msgid INT NOT NULL IDENTITY ,
msgts DATETIME NOT NULL DEFAULT(CURRENT_TIMESTAMP),
msg VARCHAR(MAX) NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT('new')
CHECK(status IN('new', 'open')),
CONSTRAINT PK_Messages
PRIMARY KEY NONCLUSTERED(msgid),
CONSTRAINT UNQ_Messages_status_msgid
UNIQUE CLUSTERED(status, msg),
CONSTRAINT CHK_Messages_status
CHECK (status IN('new', 'open', 'done'))
);
*/});
done();
});
it('3. INSERT INTO',function(done){
var res = alasql('INSERT INTO dbo.Messages (msgts, msg, status) \
VALUES("2015.01.01","I love you!","new")');
assert(res == 1);
// console.log(41,alasql.tables.Messages.data);
done();
});
it('4. INSERT INTO with NOT NULL violation',function(done){
assert.throws(function(){
var res = alasql('INSERT INTO dbo.Messages (msgts, msg, status) \
VALUES("2015.01.01","I do not love you!","not new")');
},Error);
// console.log(49,alasql.tables.Messages.data);
done();
});
it('5. INSERT INTO with CHECK violation',function(done){
assert.throws(function(){
var res = alasql('INSERT INTO dbo.Messages (msgts, msg, status) \
VALUES("2015.01.01","I do not love you!","not new")');
},Error);
// console.log(58,alasql.tables.Messages.uniqs);
done();
});
it('6. INSERT INTO with UNIQUE violation',function(done){
assert.throws(function(){
var res = alasql('INSERT INTO dbo.Messages (msgts, msg, status) \
VALUES("2015.01.01","I love you!","new")');
},Error);
// console.log(68,alasql.tables.Messages.uniqs);
done();
});
it('7. INSERT INTO with IDENTITY',function(done){
// console.log(69,alasql.tables.Messages.identities);
// console.log(69,alasql.tables.Messages.uniqs);
// console.log(69,alasql.tables.Messages.pk);
// console.log(69,alasql.tables.Messages.uk);
var res = alasql('SELECT COLUMN msgid FROM dbo.Messages');
// console.log(res);
done();
});
it('8. INSERT INTO with IDENTITY',function(done){
var res = alasql('INSERT INTO dbo.Messages (msg, status) \
VALUES("I hate you!","new")');
assert(res == 1);
done();
});
it('9. INSERT INTO with IDENTITY',function(done){
var res = alasql('INSERT INTO dbo.Messages (msg, status) \
VALUES("I hate you to much!","new")');
assert(res == 1);
done();
});
it('10. INSERT INTO with IDENTITY',function(done){
var res = alasql('SELECT COLUMN msgid FROM dbo.Messages');
assert.deepEqual(res,[1,2,3]);
// console.log(res);
done();
});
it('11. CHECK CONSTRAINT on column',function(done){
assert.throws(function(){
var res = alasql('INSERT INTO dbo.Messages (msg, status) \
VALUES("It is not so bad","done")');
},Error);
done();
});
it('12. DEFAULT()',function(done){
var res = alasql('INSERT INTO dbo.Messages (msg) \
VALUES("It lucky rainbow!")');
assert(res == 1);
done();
});
it('13. SELECT with REMOVE COLUMNS',function(done){
var res = alasql('SELECT COLUMN msgid FROM dbo.Messages');
assert.deepEqual(res,[1,2,3,4]);
var res = alasql('SELECT * REMOVE COLUMN msgts FROM dbo.Messages WHERE msgid = 4');
// console.log(res);
assert.deepEqual(res,[ { msgid: 4, msg: 'It lucky rainbow!', status: 'new' } ]);
done();
});
it('99. DROP DATABASE',function(done){
alasql('DROP DATABASE test325');
done();
});
});