diff --git a/spec/SchemaCache.spec.js b/spec/SchemaCache.spec.js index 5a4a5173..e62ac8ab 100644 --- a/spec/SchemaCache.spec.js +++ b/spec/SchemaCache.spec.js @@ -72,4 +72,33 @@ describe('SchemaCache', () => { const schemaCache = new SchemaCache(cacheController, ttl); expect(schemaCache.ttl).toBe(5000); }); + + it('should use the SchemaCache ttl', async () => { + const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); + + const anotherCacheAdapter = new InMemoryCacheAdapter({ ttl: 2000 }); + const anotherCacheController = new CacheController(anotherCacheAdapter, 'appId'); + + const schemaCacheTTL = 5000; + const schemaCache = new SchemaCache(anotherCacheController, schemaCacheTTL, true); + const schema = { + className: 'Class1', + }; + await schemaCache.setAllClasses([schema]); + await sleep(4000); + expect(await schemaCache.getOneSchema(schema.className)).not.toBeNull(); + }); + + it('should be expired', async () => { + const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); + + const schemaCacheTTL = 2000; + const schemaCache = new SchemaCache(cacheController, schemaCacheTTL, true); + const schema = { + className: 'Class1', + }; + await schemaCache.setAllClasses([schema]); + await sleep(3000); + expect(await schemaCache.getOneSchema(schema.className)).toBeNull(); + }); }); diff --git a/src/Controllers/SchemaCache.js b/src/Controllers/SchemaCache.js index 9fe79daa..48f1f77f 100644 --- a/src/Controllers/SchemaCache.js +++ b/src/Controllers/SchemaCache.js @@ -30,7 +30,7 @@ export default class SchemaCache { if (!this.ttl) { return Promise.resolve(null); } - return this.cache.put(this.prefix + MAIN_SCHEMA, schema); + return this.cache.put(this.prefix + MAIN_SCHEMA, schema, this.ttl); } getOneSchema(className) {