diff --git a/packager/react-packager/src/DependencyResolver/Cache/__tests__/Cache-test.js b/packager/react-packager/src/DependencyResolver/Cache/__tests__/Cache-test.js index f4c0f4309..22d6825e9 100644 --- a/packager/react-packager/src/DependencyResolver/Cache/__tests__/Cache-test.js +++ b/packager/react-packager/src/DependencyResolver/Cache/__tests__/Cache-test.js @@ -275,4 +275,32 @@ describe('Cache', () => { expect(fs.writeFile).toBeCalled(); }); }); + + describe('check for cache presence', () => { + it('synchronously resolves cache presence', () => { + fs.stat.mockImpl((file, callback) => + callback(null, { + mtime: { + getTime: () => {}, + }, + }) + ); + + var cache = new Cache({ + cacheKey: 'cache', + }); + var loaderCb = jest.genMockFn().mockImpl(() => + Promise.resolve('banana') + ); + var file = '/rootDir/someFile'; + + return cache + .get(file, 'field', loaderCb) + .then(() => { + expect(cache.has(file)).toBe(true); + expect(cache.has(file, 'field')).toBe(true); + expect(cache.has(file, 'foo')).toBe(false); + }); + }); + }); }); diff --git a/packager/react-packager/src/DependencyResolver/Cache/index.js b/packager/react-packager/src/DependencyResolver/Cache/index.js index 02384a202..40f16c77b 100644 --- a/packager/react-packager/src/DependencyResolver/Cache/index.js +++ b/packager/react-packager/src/DependencyResolver/Cache/index.js @@ -51,7 +51,7 @@ class Cache { throw new Error('Use absolute paths'); } - var recordP = this._has(filepath, field) + var recordP = this.has(filepath, field) ? this._data[filepath].data[field] : this._set(filepath, field, loaderCb(filepath)); @@ -59,7 +59,7 @@ class Cache { } invalidate(filepath) { - if (this._has(filepath)) { + if (this.has(filepath)) { delete this._data[filepath]; } } @@ -68,7 +68,7 @@ class Cache { return this._persistCache(); } - _has(filepath, field) { + has(filepath, field) { return Object.prototype.hasOwnProperty.call(this._data, filepath) && (!field || Object.prototype.hasOwnProperty.call(this._data[filepath].data, field)); }