UNPKG

falcor

Version:

A JavaScript library for efficient data fetching.

78 lines (73 loc) 2.64 kB
var falcor = require("./../../../lib/"); var Model = falcor.Model; var noOp = function() {}; var LocalDataSource = require('../../data/LocalDataSource'); var cacheGenerator = require('./../../CacheGenerator'); var strip = require('./../../cleanData').stripDerefAndVersionKeys; var toObservable = require('../../toObs'); function Cache() { return cacheGenerator(0, 50); } function M() { return cacheGenerator(0, 1); } describe('DataSource and Deref', function() { it('should get a value from from dataSource when bound.', function(done) { var model = new Model({cache: M(), source: new LocalDataSource(Cache())}); model._root.unsafeMode = true; var onNext = jest.fn(); toObservable(model. get(['lolomo', 0, 0, 'item', 'title'])). flatMap(function(x) { return model. deref(x.json.lolomo[0]). get([1, 'item', 'title']); }). doAction(onNext). doAction(noOp, noOp, function() { expect(onNext).toHaveBeenCalledTimes(1); expect(strip(onNext.mock.calls[0][0])).toEqual({ json: { 1: { item: { title: 'Video 1' } } } }); }). subscribe(noOp, done, done); }); it('should get a value from from dataSource after cache purge.', function(done) { var model = new Model({cache: M(), source: new LocalDataSource(Cache())}); model._root.unsafeMode = true; var onNext = jest.fn(); toObservable(model. get(['lolomo', 0, 0, 'item', 'title'])). map(function(x) { return model. deref(x.json.lolomo[0]); }). doAction(function() { model.setCache({}); }). flatMap(function(rowModel) { return rowModel. get([1, 'item', 'title']); }). doAction(onNext). doAction(noOp, noOp, function() { expect(onNext).toHaveBeenCalledTimes(1); expect(strip(onNext.mock.calls[0][0])).toEqual({ json: { 1: { item: { title: 'Video 1' } } } }); }). subscribe(noOp, done, done); }); });