private _adapter, ES6 setters and getters
This commit is contained in:
@@ -15,6 +15,11 @@ describe("AdaptableController", ()=>{
|
|||||||
var adapter = new FilesAdapter();
|
var adapter = new FilesAdapter();
|
||||||
var controller = new FilesController(adapter);
|
var controller = new FilesController(adapter);
|
||||||
expect(controller.adapter).toBe(adapter);
|
expect(controller.adapter).toBe(adapter);
|
||||||
|
// make sure _adapter is private
|
||||||
|
expect(controller._adapter).toBe(undefined);
|
||||||
|
// Override _adapter is not doing anything
|
||||||
|
controller._adapter = "Hello";
|
||||||
|
expect(controller.adapter).toBe(adapter);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -26,6 +31,17 @@ describe("AdaptableController", ()=>{
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should fail setting the wrong adapter to the controller", (done) => {
|
||||||
|
function WrongAdapter() {};
|
||||||
|
var adapter = new FilesAdapter();
|
||||||
|
var controller = new FilesController(adapter);
|
||||||
|
var otherAdapter = new WrongAdapter();
|
||||||
|
expect(() => {
|
||||||
|
controller.adapter = otherAdapter;
|
||||||
|
}).toThrow();
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
it("should fail to instantiate a controller with wrong adapter", (done) => {
|
it("should fail to instantiate a controller with wrong adapter", (done) => {
|
||||||
function WrongAdapter() {};
|
function WrongAdapter() {};
|
||||||
var adapter = new WrongAdapter();
|
var adapter = new WrongAdapter();
|
||||||
@@ -41,4 +57,31 @@ describe("AdaptableController", ()=>{
|
|||||||
}).toThrow();
|
}).toThrow();
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should accept an object adapter", (done) => {
|
||||||
|
var adapter = {
|
||||||
|
createFile: function(config, filename, data) { },
|
||||||
|
deleteFile: function(config, filename) { },
|
||||||
|
getFileData: function(config, filename) { },
|
||||||
|
getFileLocation: function(config, filename) { },
|
||||||
|
}
|
||||||
|
expect(() => {
|
||||||
|
new FilesController(adapter);
|
||||||
|
}).not.toThrow();
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should accept an object adapter", (done) => {
|
||||||
|
function AGoodAdapter() {};
|
||||||
|
AGoodAdapter.prototype.createFile = function(config, filename, data) { };
|
||||||
|
AGoodAdapter.prototype.deleteFile = function(config, filename) { };
|
||||||
|
AGoodAdapter.prototype.getFileData = function(config, filename) { };
|
||||||
|
AGoodAdapter.prototype.getFileLocation = function(config, filename) { };
|
||||||
|
|
||||||
|
var adapter = new AGoodAdapter();
|
||||||
|
expect(() => {
|
||||||
|
new FilesController(adapter);
|
||||||
|
}).not.toThrow();
|
||||||
|
done();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
@@ -8,26 +8,22 @@ based on the parameters passed
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// _adapter is private, use Symbol
|
||||||
|
var _adapter = Symbol();
|
||||||
|
|
||||||
export class AdaptableController {
|
export class AdaptableController {
|
||||||
/**
|
|
||||||
* Check whether the api call has master key or not.
|
constructor(adapter) {
|
||||||
* @param {options} the adapter options
|
this.adapter = adapter;
|
||||||
* @param {defaultAdapter} the default adapter class or object to use
|
|
||||||
* @discussion
|
|
||||||
* Supported options types:
|
|
||||||
* - string: the options will be loaded with required, when loaded, if default
|
|
||||||
* is set on the returned object, we'll use that one to support modules
|
|
||||||
* - object: a plain javascript object (options.constructor === Object), if options.adapter is set, we'll try to load it with the same mechanics.
|
|
||||||
* - function: we'll create a new instance from that function, and pass the options object
|
|
||||||
*/
|
|
||||||
constructor(adapter, options) {
|
|
||||||
this.setAdapter(adapter, options);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setAdapter(adapter, options) {
|
set adapter(adapter) {
|
||||||
this.validateAdapter(adapter);
|
this.validateAdapter(adapter);
|
||||||
this.adapter = adapter;
|
this[_adapter] = adapter;
|
||||||
this.options = options;
|
}
|
||||||
|
|
||||||
|
get adapter() {
|
||||||
|
return this[_adapter];
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedAdapterType() {
|
expectedAdapterType() {
|
||||||
|
|||||||
Reference in New Issue
Block a user