@graphistry/falcor
Version:
A JavaScript library for efficient data fetching.
64 lines (57 loc) • 2.43 kB
JavaScript
var falcor = require('./../../../falcor.js');
var InvalidModelError = require('./../../../lib/errors/InvalidModelError');
var InvalidDerefInputError = require('./../../../lib/errors/InvalidDerefInputError');
var Model = falcor.Model;
var sinon = require('sinon');
var expect = require('chai').expect;
var cacheGenerator = require('./../../CacheGenerator');
var noOp = function() {};
var isAssertionError = require('./../../isAssertionError');
describe('Error cases', function() {
it('should error on a shorted deref path.', function(done) {
var model = new Model({
cache: cacheGenerator(0, 1)
});
var onNext = sinon.spy();
model.
get(['lolomo', 0, 0, 'item', 'title']).
subscribe(onNext, noOp, function() {
expect(onNext.calledOnce).to.be.ok;
var json = onNext.getCall(0).args[0].json;
var lolomoModel = model.deref(json.lolomo);
model.
set({
json: {
lolomos: 'ohh no'
}
}).
subscribe();
toObservable(lolomoModel.
get([0, 0, 'item', 'title'])).
doAction(onNext, function(e) {
expect(InvalidModelError.is(e), 'expected InvalidModelError').to.equal(true);
}).
subscribe(
done.bind(null, new Error('onNext shouldnt be called')),
function(err) {
if (isAssertionError(err)) {
return done(err);
}
done();
},
done.bind(null, new Error('onCompleted shouldnt be called')));
});
});
it('should return null on invalid input.', function() {
expect(new Model().deref('testing'), 'invalid deref should return null').to.equal(null);
});
// it('should throw on invalid input.', function(done) {
// try {
// new Model().deref('testing');
// } catch (e) {
// expect(InvalidDerefInputError.is(e), 'expected InvalidDerefInputError').to.equal(true);
// return done();
// }
// done(new Error('should of thrown an error.'));
// });
});