describe("Kojac.CanCache Specs", function() { beforeEach(function () { this.cache = new Kojac.CanCache({}); var factory = new Kojac.CanObjectFactory({}); this.kojac = new Kojac.Core({ cache: this.cache, remoteProvider: new Kojac.RemoteProvider({useMockFileValues: true,mockFilePath: 'mockjson/'}), objectFactory: factory, apiVersion: 1 }); }); var testValues = { astring: 'some string', anumber: 12345, aboolean: true, adate: Date.now(), aobject: {name: 'A little object'}, aarray: [1,2,3,4,5] }; it("should return the same type as was stored", function() { var cache = this.cache; _.each(['astring','anumber','aboolean','adate'],function(p) { cache.attr(p,testValues[p]); expect(cache.attr(p)).toEqual(testValues[p]); }); var p = 'aobject'; cache.attr(p,testValues[p]); var cacheValue = cache.attr(p); expect(cacheValue.attr()).toEqual(testValues.aobject); expect(cacheValue.name).toEqual(testValues.aobject.name); p = 'aarray'; cache.attr(p,testValues[p]); cacheValue = cache.attr(p); expect(cacheValue.attr()).toEqual(testValues[p]); for (var i=0;i<testValues[p].length;i++) expect(cacheValue[i]).toEqual(testValues[p][i]); }); it("Expose bug in can.Observe when setting attribute with another can.Observe", function() { var cache = new Kojac.CanCache({}); var cs1 = new Kojac.CanCache({}); var cont1 = {cur_super_43: cs1}; var cs2 = new can.Observe({}); var cont2 = {cur_super_43: cs2}; cache.attr(cont1); expect(cache.attr('cur_super_43')).toEqual(cs1); cache.attr(cont2); expect(cache.attr('cur_super_43')).toEqual(cs2); }); // keys = [...] // kojac.cacheHasKeys(keys) // kojac.cacheHasKeys(keys) // kojac.cacheValues(keys) it("Kojac.Utils.interpretKeys", function() { expect(Kojac.Utils.interpretKeys(undefined)).toEqual([]); expect(Kojac.Utils.interpretKeys(null)).toEqual([]); expect(Kojac.Utils.interpretKeys('a')).toEqual(['a']); expect(Kojac.Utils.interpretKeys('a,b,c')).toEqual(['a','b','c']); expect(Kojac.Utils.interpretKeys(['a','b','c'])).toEqual(['a','b','c']); }); // it("kojac.cacheHasKeys", function() { // expect(this.kojac.cacheHasKeys(['a','b','c'])).toBe(false); // this.cache.a = 1; // expect(this.kojac.cacheHasKeys(['a'])).toBe(true); // expect(this.kojac.cacheHasKeys(['a','b','c'])).toBe(false); // this.cache.b = null; // this.cache.c = 'hello'; // expect(this.kojac.cacheHasKeys(['a','b','c'])).toBe(true); // }); // // it("kojac.cacheValues", function() { // expect(this.kojac.cacheValues(['a','b','c'])).toEqual([undefined,undefined,undefined]); // this.cache.a = 1; // this.cache.b = null; // this.cache.c = 'hello'; // expect(this.kojac.cacheValues(['a','b','c'])).toEqual([1,null,'hello']); // }); });