Files
kami-parse-server/spec/SchemaCache.spec.js
Florent Vilmart ae1a8226d5 Removes need to use babel-register (#4865)
* Removes need to use babel-register

- Adds watch to watch changes when running the test to regenerate
- Tests are now pure node 8

* Adds timing to helper.js

* Update contribution guide

* Adds inline sourcemaps generation to restore coverage

* nits
2018-07-02 23:30:14 -04:00

69 lines
2.2 KiB
JavaScript

const CacheController = require('../lib/Controllers/CacheController.js').default;
const InMemoryCacheAdapter = require('../lib/Adapters/Cache/InMemoryCacheAdapter').default;
const SchemaCache = require('../lib/Controllers/SchemaCache').default;
describe('SchemaCache', () => {
let cacheController;
beforeEach(() => {
const cacheAdapter = new InMemoryCacheAdapter({});
cacheController = new CacheController(cacheAdapter, 'appId');
});
it('can retrieve a single schema after all schemas stored', (done) => {
const schemaCache = new SchemaCache(cacheController);
const allSchemas = [{
className: 'Class1'
}, {
className: 'Class2'
}];
schemaCache.setAllClasses(allSchemas).then(() => {
return schemaCache.getOneSchema('Class2');
}).then((schema) => {
expect(schema).not.toBeNull();
done();
});
});
it('does not return all schemas after a single schema is stored', (done) => {
const schemaCache = new SchemaCache(cacheController);
const schema = {
className: 'Class1'
};
schemaCache.setOneSchema(schema.className, schema).then(() => {
return schemaCache.getAllClasses();
}).then((allSchemas) => {
expect(allSchemas).toBeNull();
done();
});
});
it('doesn\'t persist cached data by default', (done) => {
const schemaCache = new SchemaCache(cacheController);
const schema = {
className: 'Class1'
};
schemaCache.setOneSchema(schema.className, schema).then(() => {
const anotherSchemaCache = new SchemaCache(cacheController);
return anotherSchemaCache.getOneSchema(schema.className).then((schema) => {
expect(schema).toBeNull();
done();
});
});
});
it('can persist cached data', (done) => {
const schemaCache = new SchemaCache(cacheController, 5000, true);
const schema = {
className: 'Class1'
};
schemaCache.setOneSchema(schema.className, schema).then(() => {
const anotherSchemaCache = new SchemaCache(cacheController, 5000, true);
return anotherSchemaCache.getOneSchema(schema.className).then((schema) => {
expect(schema).not.toBeNull();
done();
});
});
});
});