UNPKG

falcor

Version:

A JavaScript library for efficient data fetching.

65 lines (52 loc) 1.9 kB
var cacheGenerator = require('./../CacheGenerator'); var falcor = require("./../../lib/"); var isInternalKey = require("./../../lib/support/isInternalKey"); var clean = require('./../cleanData').clean; var Model = falcor.Model; var atom = Model.atom; function deepExpectations(o, expectExpression) { for (var k in o) { expectExpression(k); if (typeof o[k] === 'object') { deepExpectations(o[k], expectExpression); } } } describe('getCache', function() { it("should serialize the cache", function() { var model = new Model({ cache: cacheGenerator(0, 1) }); var cache = model.getCache(); clean(cache); expect(cache).toEqual(cacheGenerator(0, 1)); }); it("should serialize part of the cache", function() { var model = new Model({ cache: cacheGenerator(0, 10) }); var cache = model.getCache(['lolomo', 0, 3, 'item', 'title']); clean(cache); expect(cache).toEqual(cacheGenerator(3, 1)); }); it("serialized cache should not contain internal keys (including $size, on boxedValues)", function(done) { var model = new Model({ cache: cacheGenerator(0, 1) }); model.get(['lolomo', 0, 0, 'item', 'title']).subscribe(function() {}, done, function() { var cache = model.getCache(); deepExpectations(cache, function(key) { expect(isInternalKey(key)).toBe(false); }); done(); }); }); it('should serialize a cache with undefined values.', function() { var model = new Model({ cache: { test: 'foo' } }); // mimicking cache clean-up model._root.cache.testing = undefined; var cache = model.getCache(); clean(cache); expect(cache).toEqual({ test: 'foo' }); }); });