UNPKG

@graphistry/falcor

Version:
64 lines (57 loc) 2.43 kB
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.')); // }); });