[#51,backend/memory][s]: simple createDataset method to create in-memory dataset from raw array of hashes (and optional other info).

This commit is contained in:
Rufus Pollock 2012-03-27 17:02:13 +01:00
parent 995a053400
commit cb81fe87af
2 changed files with 48 additions and 0 deletions

View File

@ -2,6 +2,43 @@ this.recline = this.recline || {};
this.recline.Backend = this.recline.Backend || {};
(function($, my) {
// ## createDataset
//
// Convenience function to create a simple 'in-memory' dataset in one step.
//
// @param data: list of hashes for each document/row in the data ({key:
// value, key: value})
// @param fields: (optional) list of field hashes (each hash defining a hash
// as per recline.Model.Field). If fields not specified they will be taken
// from the data.
// @param metadata: (optional) dataset metadata - see recline.Model.Dataset.
// If not defined (or id not provided) id will be autogenerated.
my.createDataset = function(data, fields, metadata) {
if (!metadata) {
var metadata = {};
}
if (!metadata.id) {
metadata.id = String(Math.floor(Math.random() * 100000000) + 1);
}
var backend = recline.Model.backends['memory'];
var datasetInfo = {
documents: data,
metadata: metadata
};
if (fields) {
datasetInfo.fields = fields;
} else {
if (data) {
datasetInfo.fields = _.keys(data[0]);
}
}
backend.addDataset(datasetInfo);
var dataset = new recline.Model.Dataset({id: metadata.id}, 'memory');
dataset.fetch();
return dataset;
};
// ## Memory Backend - uses in-memory data
//
// To use it you should provide in your constructor data:

View File

@ -25,6 +25,17 @@ function makeBackendDataset() {
return dataset;
}
test('Memory Backend: createDataset', function () {
var dataset = recline.Backend.createDataset(memoryData.documents, memoryData.fields, memoryData.metadata);
equal(memoryData.metadata.id, dataset.id);
});
test('Memory Backend: createDataset 2', function () {
var dataset = recline.Backend.createDataset(memoryData.documents);
dataset.query();
equal(memoryData.documents.length, dataset.currentDocuments.length);
});
test('Memory Backend: basics', function () {
var dataset = makeBackendDataset();
expect(3);