Skip to content

Commit

Permalink
Try to retrieve schema from all schemas cache if not found in individ…
Browse files Browse the repository at this point in the history
…ual cache (#2912)

* Try to get schema from main schema if not found in single schema

* Add newline

* Add missing return

* Add missing done to tests
  • Loading branch information
steven-supersolid authored and flovilmart committed Oct 23, 2016
1 parent af55cd1 commit 151bea2
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
37 changes: 37 additions & 0 deletions spec/SchemaCache.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
var CacheController = require('../src/Controllers/CacheController.js').default;
var InMemoryCacheAdapter = require('../src/Adapters/Cache/InMemoryCacheAdapter').default;
var SchemaCache = require('../src/Controllers/SchemaCache').default;

describe('SchemaCache', () => {
var schemaCache;

beforeEach(() => {
var cacheAdapter = new InMemoryCacheAdapter({});
var cacheController = new CacheController(cacheAdapter, 'appId');
schemaCache = new SchemaCache(cacheController);
});

it('can retrieve a single schema after all schemas stored', (done) => {
var allSchemas = [{
className: 'Class1'
}, {
className: 'Class2'
}];
schemaCache.setAllClasses(allSchemas);
schemaCache.getOneSchema('Class2').then((schema) => {
expect(schema).not.toBeNull();
done();
});
});

it('does not return all schemas after a single schema is stored', (done) => {
var schema = {
className: 'Class1'
};
schemaCache.setOneSchema('Class1', schema);
schemaCache.getAllClasses().then((allSchemas) => {
expect(allSchemas).toBeNull();
done();
});
});
});
16 changes: 15 additions & 1 deletion src/Controllers/SchemaCache.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,21 @@ export default class SchemaCache {
if (!this.ttl) {
return Promise.resolve(null);
}
return this.cache.get(this.prefix+className);
return this.cache.get(this.prefix+className).then((schema) => {
if (schema) {
return Promise.resolve(schema);
}
return this.cache.get(this.prefix+MAIN_SCHEMA).then((cachedSchemas) => {
cachedSchemas = cachedSchemas || [];
schema = cachedSchemas.find((cachedSchema) => {
return cachedSchema.className === className;
});
if (schema) {
return Promise.resolve(schema);
}
return Promise.resolve(null);
});
});
}

clear() {
Expand Down

0 comments on commit 151bea2

Please sign in to comment.