UNPKG

falcor

Version:

A JavaScript library for efficient data fetching.

101 lines (92 loc) 3.9 kB
var falcor = require("./../../lib/"); var Model = falcor.Model; var Cache = require("../data/Cache"); var ReducedCache = require("../data/ReducedCache"); var Expected = require("../data/expected"); var LocalDataSource = require("../data/LocalDataSource"); var Rx = require("rx"); var testRunner = require("../testRunner"); var References = Expected.References; var Complex = Expected.Complex; var Values = Expected.Values; var Bound = Expected.Bound; var noOp = function() {}; var _ = require('lodash'); var toObservable = require('../toObs'); var __ref = require("./../../lib/internal/ref"); var __context = require("./../../lib/internal/context"); var __ref_index = require("./../../lib/internal/ref-index"); var __refs_length = require("./../../lib/internal/refs-length"); describe('Adding', function() { var getPath = ['genreList', 0, 0, 'summary']; var setPath = {path: ['genreList', 0, 'length'], value: 4}; var setJSON = {json: {genreList: {0: {length: 4}}}}; describe('getPaths', function() { it('should perform a hard-link with back references _toJSONG.', function(done) { getTest(getPath, '_toJSONG'). subscribe(noOp, done, done); }); it('should perform a hard-link with back references toJSON.', function(done) { getTest(getPath, 'toJSON'). subscribe(noOp, done, done); }); }); describe('setPaths', function() { it('should perform a hard-link with back references _toJSONG.', function(done) { setTest(setPath, '_toJSONG'). subscribe(noOp, done, done); }); it('should perform a hard-link with back references toJSON.', function(done) { setTest(setPath, 'toJSON'). subscribe(noOp, done, done); }); it('should perform a hard-link with back references toPathValues.', function(done) { setTest(setPath, 'toPathValues'). subscribe(noOp, done, done); }); }); describe('setJSON', function() { it('should perform a hard-link with back references _toJSONG.', function(done) { setTest(setJSON, '_toJSONG'). subscribe(noOp, done, done); }); it('should perform a hard-link with back references toJSON.', function(done) { setTest(setJSON, 'toJSON'). subscribe(noOp, done, done); }); it('should perform a hard-link with back references toPathValues.', function(done) { setTest(setJSON, 'toPathValues'). subscribe(noOp, done, done); }); }); }); function getTest(query, output) { var model = new Model({cache: Cache()}); var lhs = model._root.cache.genreList[0]; var rhs = model._root.cache.lists.abcd; expect(lhs[__ref_index]).toBeUndefined(); expect(rhs[__refs_length]).toBeUndefined(); expect(lhs[__context]).toBeUndefined(); return toObservable(testRunner.get(model, _.cloneDeep(query), output)). do(noOp, noOp, function() { expect(lhs[__ref_index]).toBe(0); expect(rhs[__refs_length]).toBe(1); expect(rhs[__ref + lhs[__ref_index]]).toBe(lhs); expect(lhs[__context]).toBe(rhs); }); } function setTest(query, output) { var model = new Model({cache: Cache()}); var lhs = model._root.cache.genreList[0]; var rhs = model._root.cache.lists.abcd; expect(lhs[__ref_index]).toBeUndefined(); expect(rhs[__refs_length]).toBeUndefined(); expect(lhs[__context]).toBeUndefined(); return toObservable(testRunner.set(model, _.cloneDeep(query), output)). do(noOp, noOp, function() { expect(lhs[__ref_index]).toBe(0); expect(rhs[__refs_length]).toBe(1); expect(rhs[__ref + lhs[__ref_index]]).toBe(lhs); expect(lhs[__context]).toBe(rhs); }); }