not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

289 lines
9.4 KiB

// Unit testing on datastore
describe('Datastore', function() {
before(function() {
initSugarizer();
});
var objectIds = [];
describe('#create()', function() {
it('should create one entry', function(done) {
var results = datastore.create({name: "entry", activity: "test"}, function(err, oid) {
objectIds.push(oid);
chai.assert.equal(null, err);
chai.assert.notEqual(null, oid);
chai.assert.equal(36, oid.length);
}, {value: "100"});
var results = datastore.find();
chai.assert.equal(1, results.length);
chai.assert.equal("entry", results[0].metadata.name);
chai.assert.equal("test", results[0].metadata.activity);
chai.assert.isNotNull(results[0].text);
var results = datastore.find("test");
chai.assert.equal(1, results.length);
chai.assert.equal("entry", results[0].metadata.name);
chai.assert.equal("test", results[0].metadata.activity);
chai.assert.isNotNull(results[0].text);
var entry = new datastore.DatastoreObject(objectIds[0]);
entry.loadAsText(function(err, metadata, text) {
chai.assert.equal("100", text.value);
done();
});
});
it('should set text to null if undefined', function() {
var results = datastore.create({name: "entry2", activity: "test2"}, function(err, oid) {
objectIds.push(oid);
chai.assert.equal(null, err);
chai.assert.notEqual(null, oid);
chai.assert.equal(36, oid.length);
});
var results = datastore.find("test2");
chai.assert.equal(1, results.length);
chai.assert.equal("entry2", results[0].metadata.name);
chai.assert.equal("test2", results[0].metadata.activity);
chai.assert.isNull(results[0].text);
});
});
describe('#find()', function() {
it('should return all object created', function() {
var results = datastore.find();
chai.assert.equal(objectIds.length, results.length);
});
it('should allow find specific activity', function() {
var results = datastore.find("test");
chai.assert.equal(1, results.length);
});
it('should return empty on inexisting activity', function() {
var results = datastore.find("xxxx");
chai.assert.equal(0, results.length);
});
});
describe('#getMetadata()', function() {
it('should get entry', function(done) {
var entry = new datastore.DatastoreObject(objectIds[0]);
entry.getMetadata(function(err, metadata) {
chai.assert.equal("entry", metadata.name);
chai.assert.equal("test", metadata.activity);
done();
});
});
it('should get empty element on inexisting entry', function(done) {
var entry = new datastore.DatastoreObject("ffffffff-ffff-ffff-ffff-ffffffffffff");
entry.getMetadata(function() {
chai.assert.fail();
});
chai.assert.equal("ffffffff-ffff-ffff-ffff-ffffffffffff", entry.objectId);
chai.assert.deepEqual({}, entry.newMetadata);
done();
});
it('should get empty element on undefined id', function(done) {
var entry = new datastore.DatastoreObject();
entry.getMetadata(function() {
chai.assert.fail();
});
chai.assert.equal(undefined, entry.objectId);
chai.assert.deepEqual({}, entry.newMetadata);
chai.assert.isNull(entry.newDataAsText);
done();
});
});
describe('#save()', function() {
it('should update metadata on existing object', function(done) {
var entry = new datastore.DatastoreObject(objectIds[0]);
entry.getMetadata(function(err, metadata) {
chai.assert.equal(objectIds[0], entry.objectId);
chai.assert.equal("entry", metadata.name);
chai.assert.equal("test", metadata.activity);
var timeBefore = new Date().getTime();
entry.save(function(err, metasaved) {
var timeAfter = new Date().getTime();
chai.assert.equal("entry", metasaved.name);
chai.assert.equal("test", metasaved.activity);
chai.assert.ok(metasaved.timestamp >= timeBefore);
chai.assert.ok(metasaved.timestamp <= timeAfter);
chai.assert.deepEqual({ stroke: '#AC32FF', fill: '#FF8F00' }, metasaved.buddy_color);
chai.assert.equal("Mocha", metasaved.buddy_name);
done();
});
});
});
it('should update text on existing object', function(done) {
var entry = new datastore.DatastoreObject(objectIds[0]);
entry.loadAsText(function(err, metadata, text) {
chai.assert.equal(objectIds[0], entry.objectId);
chai.assert.equal("entry", metadata.name);
chai.assert.equal("test", metadata.activity);
chai.assert.equal("100", text.value);
entry.setDataAsText({value: "200"});
var timeBefore = new Date().getTime();
entry.save(function(err, metasaved, textsaved) {
var timeAfter = new Date().getTime();
chai.assert.equal("entry", metasaved.name);
chai.assert.equal("test", metasaved.activity);
chai.assert.ok(metasaved.timestamp >= timeBefore);
chai.assert.ok(metasaved.timestamp <= timeAfter);
chai.assert.deepEqual({ stroke: '#AC32FF', fill: '#FF8F00' }, metasaved.buddy_color);
chai.assert.equal("Mocha", metasaved.buddy_name);
chai.assert.equal("200", textsaved.value);
done();
});
});
});
it('should create metadata for new object', function(done) {
var entry = new datastore.DatastoreObject();
var timeBefore = new Date().getTime();
entry.save(function(err, metadata, text) {
var timeAfter = new Date().getTime();
chai.assert.isNotNull(entry.objectId);
chai.assert.equal(36, entry.objectId.length);
chai.assert.ok(metadata.timestamp >= timeBefore);
chai.assert.ok(metadata.timestamp <= timeAfter);
chai.assert.ok(metadata.creation_time >= timeBefore);
chai.assert.ok(metadata.creation_time <= timeAfter);
chai.assert.deepEqual({ stroke: '#AC32FF', fill: '#FF8F00' }, metadata.buddy_color);
chai.assert.equal("Mocha", metadata.buddy_name);
chai.assert.equal("0", metadata.file_size);
chai.assert.isNull(text);
objectIds.push(entry.objectId);
done();
});
});
});
describe('#loadAsText()', function() {
it('should get text entry', function(done) {
var entry = new datastore.DatastoreObject(objectIds[0]);
entry.loadAsText(function(err, metadata, text) {
chai.assert.equal("200", text.value);
done();
});
});
it('should get null on free text entry', function(done) {
var entry = new datastore.DatastoreObject(objectIds[1]);
entry.loadAsText(function(err, metadata, text) {
chai.assert.equal(objectIds[1], entry.objectId);
chai.assert.isNull(text);
done();
});
});
it('should do nothing on undefined id', function(done) {
var entry = new datastore.DatastoreObject();
entry.loadAsText(function() {
chai.assert.fail();
});
chai.assert.equal(undefined, entry.objectId);
chai.assert.deepEqual({}, entry.newMetadata);
chai.assert.isNull(entry.newDataAsText);
done();
});
});
describe('#setMetadata()', function() {
it('should not change data when nothing change', function(done) {
var entry = new datastore.DatastoreObject(objectIds[0]);
entry.getMetadata(function() {
entry.setMetadata();
entry.save(function(err, metadata, text) {
chai.assert.equal(objectIds[0], entry.objectId);
chai.assert.equal("entry", metadata.name);
chai.assert.equal("test", metadata.activity);
done();
});
});
});
it('should change/update metadata', function(done) {
var entry = new datastore.DatastoreObject(objectIds[0]);
entry.getMetadata(function() {
entry.setMetadata({
name: "updatedentry",
width: "100px"
});
entry.save(function(err, metadata) {
chai.assert.equal(objectIds[0], entry.objectId);
chai.assert.equal("updatedentry", metadata.name);
chai.assert.equal("test", metadata.activity);
chai.assert.equal("100px", metadata.width);
done();
});
});
});
it('should update entry - double check', function(done) {
var entry = new datastore.DatastoreObject(objectIds[0]);
entry.getMetadata(function(err, metadata) {
chai.assert.equal("updatedentry", metadata.name);
chai.assert.equal("test", metadata.activity);
chai.assert.equal("100px", metadata.width);
done();
});
});
});
describe('#setDataAsText()', function() {
it('should remove text when undefined', function(done) {
var entry = new datastore.DatastoreObject(objectIds[0]);
entry.loadAsText(function() {
entry.setDataAsText();
entry.save(function(err, metadata, text) {
chai.assert.equal(objectIds[0], entry.objectId);
chai.assert.equal(undefined, text);
done();
});
});
});
it('should update text', function(done) {
var entry = new datastore.DatastoreObject(objectIds[0]);
entry.loadAsText(function() {
entry.setDataAsText({newvalue: "200"});
entry.save(function(err, metadata, text) {
chai.assert.equal(objectIds[0], entry.objectId);
chai.assert.equal("200",text.newvalue);
done();
});
});
});
it('should update entry - double check', function(done) {
var entry = new datastore.DatastoreObject(objectIds[0]);
entry.loadAsText(function(err, metadata, text) {
chai.assert.equal("200", text.newvalue);
done();
});
});
});
describe('#remove()', function() {
it('should do nothing on inexisting entry', function() {
datastore.remove("ffffffff-ffff-ffff-ffff-ffffffffffff");
var results = datastore.find();
chai.assert.equal(objectIds.length, results.length);
});
it('should remove entry', function() {
for (var i = 0 ; i < objectIds.length ; i++)
datastore.remove(objectIds[i]);
var results = datastore.find();
chai.assert.equal(0, results.length);
});
});
});