cloudboost-tv
Version:
Database Service that does Storage, Search, Real-time and a whole lot more.
398 lines (347 loc) • 12.2 kB
JavaScript
describe("Cloud Table", function(){
before(function(){
CB.appKey = CB.masterKey;
});
var tableName = util.makeString();
it("should create a table",function(done){
this.timeout(80000);
var obj = new CB.CloudTable(tableName);
obj.save().then(function(table){
if(table.id){
done();
}else{
done("Table cannot be created");
}
},function(){
throw "Should Create a table";
});
});
it("should first create a table and then delete that table",function(done){
this.timeout(100000);
var tableName = util.makeString();
var obj = new CB.CloudTable(tableName);
obj.save().then(function(){
obj.delete().then(function(){
done();
},function(){
throw("should have delete the table");
});
},function(){
throw("should have create the table");
});
});
it("should get a table information",function(done){
this.timeout(40000);
var obj = new CB.CloudTable('Address');
CB.CloudTable.get(obj).then(function(res){
done();
},function(){
throw("should fetch the table");
});
});
it("should get all tables from an app",function(done){
this.timeout(40000);
CB.CloudTable.getAll().then(function(res){
if(res)
done();
else
throw "Unable to Get table Data";
},function(){
throw("should get the all table");
});
});
it("should update new column into the table",function(done){
this.timeout(80000);
var tableName1 = util.makeString();
var tableName2 = util.makeString();
var obj = new CB.CloudTable(tableName1);
var obj1 = new CB.CloudTable(tableName2);
obj.save().then(function () {
obj1.save().then(function(){
CB.CloudTable.get(obj, {
success: function(table){
var column1 = new CB.Column('Name11', 'Relation', true, false);
column1.relatedTo = tableName2;
table.addColumn(column1);
table.save().then(function(newTable){
var column2 = new CB.Column('Name11');
newTable.deleteColumn(column2);
newTable.save().then(function(){
done();
},function(){
throw("should save the table");
});
},function(){
throw("should save the table");
});
},
error: function(err){
throw("should fetch the table");
}
});
},function(){
throw "Should Save Table";
})
},function(){
throw "Should Save Table";
});
});
it("should first create a table and then delete that table",function(done){
this.timeout(80000);
var tableName = util.makeString();
var obj = new CB.CloudTable(tableName);
obj.save().then(function(newTable){
newTable.delete().then(function(){
done();
},function(){
done("should have delete the table");
});
},function(){
done("should have create the table");
});
});
it("should add a column to an existing table",function(done){
this.timeout(90000);
var obj = new CB.CloudTable(tableName);
CB.CloudTable.get(obj).then(function(table){
var column1 = new CB.Column('city', 'Text', true, false);
table.addColumn(column1);
table.save().then(function(table){
done();
},function(){
throw "Unable to add column to existing table"
});
},function(){
done("should fetch the table");
});
});
it("should add a column to the table after save.",function(done){
this.timeout(80000);
var tableName = util.makeString();
var table = new CB.CloudTable(tableName);
table.save().then(function(table){
var column1 = new CB.Column('Name1', 'Text', true, false);
table.addColumn(column1);
table.save().then(function(newTable){
done();
newTable.delete();
});
});
});
it("should get a table information",function(done){
this.timeout(40000);
var obj = new CB.CloudTable(tableName);
CB.CloudTable.get(obj).then(function(){
done();
},function(){
done("should fetch the table");
});
});
it("should get all tables from an app",function(done){
this.timeout(40000);
CB.CloudTable.getAll().then(function(table){
done();
},function(){
done("should get the all table");
});
});
it("should not rename a table",function(done){
this.timeout(80000);
var obj = new CB.CloudTable(tableName);
CB.CloudTable.get(obj).then(function(table){
table.document.name = "sadjhkasj";
table.save().then(function(res){
if(res.id !== table.id){
done();
}else{
done("Table renamed");
}
},function(){
done();
});
},function(){
done("should fetch the table");
});
});
it("should not change type of table",function(done){
this.timeout(80000);
var obj = new CB.CloudTable(tableName);
CB.CloudTable.get(obj).then(function(table){
table.document.type = "NewType";
table.save().then(function(newTable){
CB.CloudTable.get(obj).then(function(table){
if(table.document.type === "NewType"){
done("Error. Cnanged the type of the table "+table.name);
}else{
done();
}
}, function(error){
done("Cannot get the table");
});
},function(){
done();
});
},function(){
done("should fetch the table");
});
});
it("should not rename a column",function(done){
this.timeout(80000);
var obj = new CB.CloudTable(tableName);
CB.CloudTable.get(obj).then(function(table){
table.document.columns[0].name = "abcd";
table.save().then(function(){
done("should not update the column name");
},function(){
done();
});
},function(){
done("should fetch the table");
});
});
it("should not change data type of a column",function(done){
this.timeout(80000);
var obj = new CB.CloudTable(tableName);
CB.CloudTable.get(obj).then(function(table){
table.document.columns[0].dataType = "abcd";
table.save().then(function(){
done("should not update the column dataType");
},function(){
done();
});
},function(){
done("should fetch the table");
});
});
it("should not change unique property of a default column",function(done){
this.timeout(80000);
var obj = new CB.CloudTable(tableName);
CB.CloudTable.get(obj).then(function(table){
table.document.columns[0].unique = false;
table.save().then(function(){
done("should not change unique property of a default column");
},function(){
done();
});
},function(){
done("should fetch the table");
});
});
it("should not change required property of a default column",function(done){
this.timeout(80000);
var obj = new CB.CloudTable(tableName);
CB.CloudTable.get(obj).then(function(table){
table.document.columns[0].required = false;
table.save().then(function(){
done("should not change required property of a default column");
},function(){
done();
});
},function(){
done("should fetch the table");
});
});
it("should not change unique property of a pre defined column",function(done){
this.timeout(80000);
var obj = new CB.CloudTable(tableName);
CB.CloudTable.get(obj).then(function(table){
if(table.document.columns[0].unique)
table.document.columns[0].unique = false;
else
table.document.columns[0].unique = true;
table.save().then(function(newTable){
if(newTable.document.columns[0].unique !== table.columns[0].unique)
done();
else
done("shouldChange unique property of a user defined column");
},function(){
done();
});
},function(){
done("should fetch the table");
});
});
it("should change required property of a user defined column",function(done){
this.timeout(80000);
var obj = new CB.CloudTable(util.makeString());
var name = new CB.Column("abc");
name.required = true;
obj.addColumn(name);
obj.save().then(function(table){
if(table.columns[5].required)
table.columns[5].required = false;
else
table.columns[5].required = true;
table.save().then(function(newTable){
if(newTable.columns[5].required === table.columns[5].required)
done();
else
done("should change required property of a user defined column");
},function(){
done("should change required property of a user defined column");
});
},function(){
done("should fetch the table");
});
});
it("should not delete a default column of a table",function(done){
this.timeout(80000);
var obj = new CB.CloudTable(tableName);
CB.CloudTable.get(obj).then(function(table){
table.deleteColumn('id');
table.save().then(function(newTable){
if(newTable.columns) {
if (newTable.columns[0].name === "id")
done();
else
done("Should not change the behaviour of predefined columns");
}else
done();
},function(){
done();
});
});
});
it("should get column from a table",function(done){
this.timeout(50000);
var obj = new CB.CloudTable('abcd');
var column = obj.getColumn('ACL');
if(column){
done();
}else{
throw "Get Column is Not Working";
}
});
it("should update column in a table",function(done){
this.timeout(50000);
var obj = new CB.CloudTable('abcd');
var column = new CB.Column('name');
column.required = true;
obj.addColumn(column);
var col2 = obj.getColumn('name');
col2.required = false;
obj.updateColumn(col2);
column = obj.getColumn('name');
if(column.required === false){
done();
}else{
throw "Unable to Update Column";
}
});
it("should not pass string in update column",function(done){
this.timeout(50000);
var obj = new CB.CloudTable('abcd');
var column = new CB.Column('name');
column.required = true;
obj.addColumn(column);
try {
obj.updateColumn("abcd");
throw "Update Column should not take string";
}catch(e){
done();
}
});
after(function() {
CB.appKey = CB.jsKey;
});
});