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.
 
 
 
 
 

253 lines
7.6 KiB

define(["sugar-web/bus", "sugar-web/env", "sugar-web/datastore"], function (bus, env, datastore) {
'use strict';
var defaultTimeoutInterval = jasmine.getEnv().defaultTimeoutInterval;
describe("datastore object", function () {
beforeEach(function () {
// FIXME: due to db initialization,
// the very first save() call may take a while
jasmine.getEnv().defaultTimeoutInterval = 10000;
spyOn(env, 'isStandalone').andReturn(false);
bus.listen();
});
afterEach(function () {
jasmine.getEnv().defaultTimeoutInterval = defaultTimeoutInterval;
bus.close();
});
it("should be able to set and get metadata", function () {
var saved;
var gotMetadata;
var datastoreObject;
var objectId;
var testTitle = "hello";
runs(function () {
saved = false;
datastoreObject = new datastore.DatastoreObject();
datastoreObject.setMetadata({
title: testTitle
});
datastoreObject.save(function () {
saved = true;
objectId = datastoreObject.objectId;
});
});
waitsFor(function () {
return saved;
}, "should have saved the object");
runs(function () {
gotMetadata = false;
datastoreObject = new datastore.DatastoreObject(objectId);
datastoreObject.getMetadata(function (error, metadata) {
expect(metadata.title).toEqual(testTitle);
gotMetadata = true;
});
});
waitsFor(function () {
return gotMetadata;
}, "should have got the object metadata");
});
it("should be able to save and load text", function () {
var saved;
var gotMetadata;
var datastoreObject;
var objectId;
var testText = "hello";
runs(function () {
saved = false;
datastoreObject = new datastore.DatastoreObject();
datastoreObject.setDataAsText(testText);
datastoreObject.save(function () {
saved = true;
objectId = datastoreObject.objectId;
});
});
waitsFor(function () {
return saved;
}, "should have saved the object");
runs(function () {
gotMetadata = false;
function onLoaded(error, metadata, text) {
expect(text).toEqual(testText);
gotMetadata = true;
}
datastoreObject = new datastore.DatastoreObject(objectId);
datastoreObject.loadAsText(onLoaded);
});
waitsFor(function () {
return gotMetadata;
}, "should have got the object metadata");
});
});
describe("datastore", function () {
beforeEach(function () {
// FIXME: due to db initialization,
// the very first save() call may take a while
jasmine.getEnv().defaultTimeoutInterval = 10000;
spyOn(env, 'isStandalone').andReturn(false);
bus.listen();
});
afterEach(function () {
jasmine.getEnv().defaultTimeoutInterval = defaultTimeoutInterval;
bus.close();
});
it("should be able to create an object", function () {
var wasCreated;
runs(function () {
wasCreated = false;
function onCreated(error, objectId) {
expect(objectId).toEqual(jasmine.any(String));
wasCreated = true;
}
datastore.create({}, onCreated);
});
waitsFor(function () {
return wasCreated;
}, "the object should be created");
});
it("should be able to set object metadata", function () {
var metadataSet;
var gotMetadata;
var objectId;
var testTitle = "hello";
runs(function () {
function onMetadataSet(error) {
expect(error).toBeNull();
metadataSet = true;
}
function onCreated(error, createdObjectId) {
objectId = createdObjectId;
var metadata = {
title: testTitle
};
datastore.setMetadata(objectId, metadata, onMetadataSet);
}
metadataSet = false;
datastore.create({}, onCreated);
});
waitsFor(function () {
return metadataSet;
}, "metadata should be set");
runs(function () {
function onGotMetadata(error, metadata) {
expect(metadata.title).toEqual(testTitle);
gotMetadata = true;
}
gotMetadata = false;
datastore.getMetadata(objectId, onGotMetadata);
});
waitsFor(function () {
return gotMetadata;
}, "should have got object metadata");
});
it("should be able to get object metadata", function () {
var gotMetadata = false;
var testTitle = "hello";
runs(function () {
function onGotMetadata(error, metadata) {
expect(metadata.title).toEqual(testTitle);
gotMetadata = true;
}
function onCreated(error, objectId) {
datastore.getMetadata(objectId, onGotMetadata);
}
datastore.create({
title: testTitle
}, onCreated);
});
waitsFor(function () {
return gotMetadata;
}, "should have got object metadata");
});
it("should be able to load an object", function () {
var wasLoaded = false;
var objectId = null;
var inputStream = null;
var objectData = null;
var testData = new Uint8Array([1, 2, 3, 4]);
runs(function () {
function onStreamClose(error) {
expect(objectData).toEqual(testData.buffer);
wasLoaded = true;
}
function onStreamRead(error, data) {
objectData = data;
}
function onLoaded(error, metadata, loadedInputStream) {
inputStream = loadedInputStream;
inputStream.read(8192, onStreamRead);
inputStream.close(onStreamClose);
}
function onClosed(error) {
datastore.load(objectId, onLoaded);
}
function onSaved(error, outputStream) {
outputStream.write(testData);
outputStream.close(onClosed);
}
function onCreated(error, createdObjectId) {
objectId = createdObjectId;
datastore.save(objectId, {}, onSaved);
}
datastore.create({}, onCreated);
});
waitsFor(function () {
return wasLoaded;
}, "the object should be loaded");
});
});
});