Browse Source

Setup remote storage manager tests

no-jquery
Artur Arseniev 9 years ago
parent
commit
7a272a8f1d
  1. 3
      package.json
  2. 8
      src/storage_manager/model/RemoteStorage.js
  3. 1
      test/helper.js
  4. 48
      test/specs/storage_manager/model/Models.js

3
package.json

@ -40,7 +40,8 @@
"sinon": "^3.2.1",
"string-replace-loader": "^1.3.0",
"webpack": "^3.5.5",
"webpack-dev-server": "^2.7.1"
"webpack-dev-server": "^2.7.1",
"whatwg-fetch": "^2.0.3"
},
"keywords": [
"wte",

8
src/storage_manager/model/RemoteStorage.js

@ -3,6 +3,8 @@ import { isUndefined } from 'underscore';
module.exports = require('backbone').Model.extend({
fetch,
defaults: {
urlStore: '',
urlLoad: '',
@ -86,14 +88,14 @@ module.exports = require('backbone').Model.extend({
*/
request(url, opts = {}, clb = null) {
const typeJson = this.get('contentTypeJson');
const headers = this.get('headers');
const headers = this.get('headers') || {};
const params = this.get('params');
const reqHead = 'X-Requested-With';
const typeHead = 'Content-Type';
const body = opts.body;
for (let param in params) {
body.append(param, params[param]);
body && body.append(param, params[param]);
}
if (isUndefined(headers[reqHead])) {
@ -106,7 +108,7 @@ module.exports = require('backbone').Model.extend({
}
this.onStart();
fetch(url, {
this.fetch(url, {
method: opts.method || 'post',
credentials: 'include',
headers,

1
test/helper.js

@ -30,6 +30,7 @@ var localStorage = {
global.window = window;
global.document = window.document;
global.FormData = window.FormData;
global._ = _;
global.expect = expect;
global.sinon = sinon;

48
test/specs/storage_manager/model/Models.js

@ -1,3 +1,5 @@
import 'whatwg-fetch';
const LocalStorage = require('storage_manager/model/LocalStorage');
const RemoteStorage = require('storage_manager/model/RemoteStorage');
@ -57,6 +59,12 @@ module.exports = {
var params = { test: 'testValue' };
var storageOptions;
var data;
var mockResponse = (body = {}) => {
return new window.Response(JSON.stringify(body), {
status: 200,
headers: { 'Content-type': 'application/json' }
});
}
beforeEach(() => {
data = {
@ -69,44 +77,28 @@ module.exports = {
params,
};
obj = new RemoteStorage(storageOptions);
sinon.stub(obj, 'fetch').returns(
Promise.resolve(mockResponse({data: 1}))
);
});
afterEach(() => {
$.ajax.restore();
obj.fetch.restore();
obj = null;
});
// Stubbing will not return the original object so
// .always will not work
it.skip('Store data', () => {
sinon.stub($, "ajax");
for(var k in params)
data[k] = params[k];
it('Store data', () => {
obj.store(data);
$.ajax.calledWithMatch({
url: endpointStore,
data,
}).should.equal(true);
const callResult = obj.fetch;
expect(callResult.called).toEqual(true);
expect(callResult.firstCall.args[0]).toEqual(endpointStore);
});
it('Load data', () => {
sinon.stub($, "ajax").returns({
done() {}
});
var dt = {};
var keys = ['item1', 'item2'];
obj.load(keys);
dt.keys = keys;
for(var k in params)
dt[k] = params[k];
expect($.ajax.calledWithMatch({
url: endpointLoad,
data: dt
})).toEqual(true);
obj.load(['item1', 'item2']);
const callResult = obj.fetch;
expect(callResult.called).toEqual(true);
expect(callResult.firstCall.args[0]).toEqual(endpointLoad);
});
});

Loading…
Cancel
Save