Skip to content

Commit

Permalink
Merge pull request #942 from dicksonlaw583/local_fake_jsonblob
Browse files Browse the repository at this point in the history
Added fake local JSONBlob endpoint.
  • Loading branch information
aeschylus committed Jun 15, 2016
2 parents cc7430d + e4f0386 commit b1d31b3
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 0 deletions.
36 changes: 36 additions & 0 deletions js/src/utils/localJsonBlobApi.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/* Local fake JsonBlob endpoint */

/* global Storage, Mirador */

(function($){
function generateUUID() {
var d = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = (d + Math.random()*16)%16 | 0;
d = Math.floor(d/16);
return (c==='x' ? r : (r&0x3|0x8)).toString(16);
});
return uuid;
}

$.LocalJSONBlobAPI = function(opts) {
this.options = {
storage: window.localStorage
};
jQuery.extend(this.options, opts);
};

$.LocalJSONBlobAPI.prototype = {
readSync: function(blobId) {
return JSON.parse(this.options.storage.getItem(blobId));
},
save: function(blob) {
var deferred = jQuery.Deferred(),
uuid = generateUUID();
this.options.storage.setItem("BM-" + uuid, JSON.stringify(blob));
deferred.resolve("BM-" + uuid);
return deferred.promise();
}
};
}(Mirador));

50 changes: 50 additions & 0 deletions spec/utils/localJsonBlobApi.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
describe('LocalJsonBlobApi', function () {
BogusStorage = function() {
this.data = {};
};
BogusStorage.prototype = {
setItem: function(k, v) {
this.data[k] = v;
},
getItem: function(k) {
return this.data[k];
}
};


var myWindow = {
"bogusStorage": new BogusStorage()
};

var dummyBlobs = {
a: {
"waahoo": 5
},
b: {
"woohah": "super foobar"
}
};

var localBlob;
beforeEach(function() {
localBlob = new Mirador.LocalJSONBlobAPI({
storage: myWindow.bogusStorage
});
});

it('readSync', function () {
myWindow.bogusStorage.setItem('ABC', JSON.stringify(dummyBlobs.a));
expect(localBlob.readSync('ABC')).toEqual(dummyBlobs.a);
});

it('save', function () {
var promise = null,
savedKey = "";
(promise = localBlob.save(dummyBlobs.b)).done(function(k) {
savedKey = k;
});
expect(typeof promise).toBe('object');
expect(savedKey).not.toEqual("");
expect(myWindow.bogusStorage.getItem(savedKey)).toEqual(JSON.stringify(dummyBlobs.b));
});
});

0 comments on commit b1d31b3

Please sign in to comment.