backbone-skull
Version:
Skull sits on top of Backbone and protects your application's brains.
64 lines (55 loc) • 1.94 kB
JavaScript
/* eslint-env mocha, browser, jquery */
/* global mocha, chai, Skull */
(function (mocha, assert, Skull) {
'use strict';
var Syncer = Skull.Syncer;
var Observable = Skull.Observable;
var registry = new Skull.ResourceRegistry();
var passReg = {registry: registry};
var MockModel = Observable.extend({
url: '/syncerTest',
toJSON: function () {
return {answer: 42};
}
});
var model = new MockModel();
suite('.Syncer', function () {
teardown(function () {
$.mockjax.clear();
});
test('Correctly handles authorization', function (done) {
var syncer = new Syncer(passReg);
$.mockjax({
contentType: 'text/json',
status: 200,
responseText: {
answer: 42
},
url: model.url,
response: function () {
assert.notProperty(this.headers, syncer.params.authHeaderName, 'No auth headers present');
done();
}
});
syncer.sync('update', model);
});
test('Correctly handles authorization', function (done) {
var tokenStr = 'Raxacoricofallapatorius';
registry.register('getToken', function () {
return tokenStr;
});
var syncer = new Syncer(passReg);
$.mockjax(function (requestSettings) {
if (requestSettings.url === model.url) {
return {
response: function () {
assert.equal(requestSettings.headers[syncer.params.authHeaderName], tokenStr);
done();
}
};
}
});
syncer.sync('read', model);
});
});
})(mocha, chai.assert, Skull);