Splits Adapter loading from AdaptableController
- Adds dynamic prototype conformance check upon setting adapter - Throws when adapter is undefined, invalid in controller
This commit is contained in:
@@ -1,70 +1,44 @@
|
||||
|
||||
var AdaptableController = require("../src/Controllers/AdaptableController").AdaptableController;
|
||||
var FilesAdapter = require("../src/Adapters/Files/FilesAdapter").default;
|
||||
var FilesController = require("../src/Controllers/FilesController").FilesController;
|
||||
|
||||
var MockController = function(options) {
|
||||
AdaptableController.call(this, options);
|
||||
}
|
||||
MockController.prototype = Object.create(AdaptableController.prototype);
|
||||
MockController.prototype.constructor = AdaptableController;
|
||||
|
||||
describe("AdaptableController", ()=>{
|
||||
|
||||
it("should instantiate an adapter from string in object", (done) => {
|
||||
var adapterPath = require('path').resolve("./spec/MockAdapter");
|
||||
var controller = new AdaptableController({
|
||||
adapter: adapterPath,
|
||||
key: "value",
|
||||
foo: "bar"
|
||||
});
|
||||
|
||||
expect(controller.adapter instanceof Object).toBe(true);
|
||||
expect(controller.options.key).toBe("value");
|
||||
expect(controller.options.foo).toBe("bar");
|
||||
expect(controller.adapter.options.key).toBe("value");
|
||||
expect(controller.adapter.options.foo).toBe("bar");
|
||||
done();
|
||||
});
|
||||
|
||||
it("should instantiate an adapter from string", (done) => {
|
||||
var adapterPath = require('path').resolve("./spec/MockAdapter");
|
||||
var controller = new AdaptableController(adapterPath);
|
||||
|
||||
expect(controller.adapter instanceof Object).toBe(true);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should instantiate an adapter from string that is module", (done) => {
|
||||
var adapterPath = require('path').resolve("./src/Adapters/Files/FilesAdapter");
|
||||
var controller = new AdaptableController({
|
||||
adapter: adapterPath
|
||||
});
|
||||
|
||||
expect(controller.adapter instanceof FilesAdapter).toBe(true);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should instantiate an adapter from function/Class", (done) => {
|
||||
var controller = new AdaptableController({
|
||||
adapter: FilesAdapter
|
||||
});
|
||||
expect(controller.adapter instanceof FilesAdapter).toBe(true);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should instantiate the default adapter from Class", (done) => {
|
||||
AdaptableController.setDefaultAdapter(FilesAdapter);
|
||||
var controller = new AdaptableController();
|
||||
expect(controller.adapter instanceof FilesAdapter).toBe(true);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should use the default adapter", (done) => {
|
||||
var adapter = new FilesAdapter();
|
||||
AdaptableController.setDefaultAdapter(adapter);
|
||||
var controller = new AdaptableController();
|
||||
expect(controller.adapter).toBe(adapter);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should use the provided adapter", (done) => {
|
||||
var adapter = new FilesAdapter();
|
||||
var controller = new AdaptableController(adapter);
|
||||
var controller = new FilesController(adapter);
|
||||
expect(controller.adapter).toBe(adapter);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should throw when creating a new mock controller", (done) => {
|
||||
var adapter = new FilesAdapter();
|
||||
expect(() => {
|
||||
new MockController(adapter);
|
||||
}).toThrow();
|
||||
done();
|
||||
});
|
||||
|
||||
it("should fail to instantiate a controller with wrong adapter", (done) => {
|
||||
function WrongAdapter() {};
|
||||
var adapter = new WrongAdapter();
|
||||
expect(() => {
|
||||
new FilesController(adapter);
|
||||
}).toThrow();
|
||||
done();
|
||||
});
|
||||
|
||||
it("should fail to instantiate a controller without an adapter", (done) => {
|
||||
expect(() => {
|
||||
new FilesController();
|
||||
}).toThrow();
|
||||
done();
|
||||
});
|
||||
});
|
||||
68
spec/AdapterLoader.spec.js
Normal file
68
spec/AdapterLoader.spec.js
Normal file
@@ -0,0 +1,68 @@
|
||||
|
||||
var AdapterLoader = require("../src/Adapters/AdapterLoader").AdapterLoader;
|
||||
var FilesAdapter = require("../src/Adapters/Files/FilesAdapter").default;
|
||||
|
||||
describe("AdaptableController", ()=>{
|
||||
|
||||
it("should instantiate an adapter from string in object", (done) => {
|
||||
var adapterPath = require('path').resolve("./spec/MockAdapter");
|
||||
|
||||
var adapter = AdapterLoader.load({
|
||||
adapter: adapterPath,
|
||||
key: "value",
|
||||
foo: "bar"
|
||||
});
|
||||
|
||||
expect(adapter instanceof Object).toBe(true);
|
||||
expect(adapter.options.key).toBe("value");
|
||||
expect(adapter.options.foo).toBe("bar");
|
||||
done();
|
||||
});
|
||||
|
||||
it("should instantiate an adapter from string", (done) => {
|
||||
var adapterPath = require('path').resolve("./spec/MockAdapter");
|
||||
var adapter = AdapterLoader.load(adapterPath);
|
||||
|
||||
expect(adapter instanceof Object).toBe(true);
|
||||
expect(adapter.options).toBe(adapterPath);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should instantiate an adapter from string that is module", (done) => {
|
||||
var adapterPath = require('path').resolve("./src/Adapters/Files/FilesAdapter");
|
||||
var adapter = AdapterLoader.load({
|
||||
adapter: adapterPath
|
||||
});
|
||||
|
||||
expect(adapter instanceof FilesAdapter).toBe(true);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should instantiate an adapter from function/Class", (done) => {
|
||||
var adapter = AdapterLoader.load({
|
||||
adapter: FilesAdapter
|
||||
});
|
||||
expect(adapter instanceof FilesAdapter).toBe(true);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should instantiate the default adapter from Class", (done) => {
|
||||
var adapter = AdapterLoader.load(null, FilesAdapter);
|
||||
expect(adapter instanceof FilesAdapter).toBe(true);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should use the default adapter", (done) => {
|
||||
var defaultAdapter = new FilesAdapter();
|
||||
var adapter = AdapterLoader.load(null, defaultAdapter);
|
||||
expect(adapter instanceof FilesAdapter).toBe(true);
|
||||
done();
|
||||
});
|
||||
|
||||
it("should use the provided adapter", (done) => {
|
||||
var originalAdapter = new FilesAdapter();
|
||||
var adapter = AdapterLoader.load(originalAdapter);
|
||||
expect(adapter).toBe(originalAdapter);
|
||||
done();
|
||||
});
|
||||
});
|
||||
@@ -1,4 +1,5 @@
|
||||
var FilesController = require('../src/Controllers/FilesController').FilesController;
|
||||
var GridStoreAdapter = require("../src/Adapters/Files/GridStoreAdapter").GridStoreAdapter;
|
||||
var Config = require("../src/Config");
|
||||
|
||||
// Small additional tests to improve overall coverage
|
||||
@@ -6,7 +7,8 @@ describe("FilesController",()=>{
|
||||
|
||||
it("should properly expand objects", (done) => {
|
||||
var config = new Config(Parse.applicationId);
|
||||
var filesController = new FilesController();
|
||||
var adapter = new GridStoreAdapter();
|
||||
var filesController = new FilesController(adapter);
|
||||
var result = filesController.expandFilesInObject(config, function(){});
|
||||
|
||||
expect(result).toBeUndefined();
|
||||
|
||||
@@ -76,13 +76,11 @@ describe('LoggerController', () => {
|
||||
});
|
||||
|
||||
it('should throw without an adapter', (done) => {
|
||||
LoggerController.setDefaultAdapter(undefined);
|
||||
var loggerController = new LoggerController();
|
||||
|
||||
|
||||
expect(() => {
|
||||
loggerController.getLogs();
|
||||
var loggerController = new LoggerController();
|
||||
}).toThrow();
|
||||
LoggerController.setDefaultAdapter(FileLoggerAdapter);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user