Skip to content

Commit d504681

Browse files
committed
Improves Controller and Adapter relationship
- Controllers that have adapters are AdaptableControllers - AdaptableController is responsible to instantiate the proper adapter if needed (string, function or BaseAdapter) - BaseAdapter is the base class for adapters, allows skipping when passed directly to the controller
1 parent bd54878 commit d504681

11 files changed

+402
-318
lines changed

spec/AdaptableController.spec.js

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
2+
var AdaptableController = require("../src/Controllers/AdaptableController").AdaptableController;
3+
var FilesAdapter = require("../src/Adapters/Files/FilesAdapter").default;
4+
5+
describe("AdaptableController", ()=>{
6+
7+
it("should instantiate an adapter from string in object", (done) => {
8+
var adapterPath = require('path').resolve("./spec/MockAdapter");
9+
var controller = new AdaptableController({
10+
adapter: adapterPath,
11+
key: "value",
12+
foo: "bar"
13+
});
14+
15+
expect(controller.adapter instanceof Object).toBe(true);
16+
expect(controller.options.key).toBe("value");
17+
expect(controller.options.foo).toBe("bar");
18+
expect(controller.adapter.options.key).toBe("value");
19+
expect(controller.adapter.options.foo).toBe("bar");
20+
done();
21+
});
22+
23+
it("should instantiate an adapter from string", (done) => {
24+
var adapterPath = require('path').resolve("./spec/MockAdapter");
25+
var controller = new AdaptableController(adapterPath);
26+
27+
expect(controller.adapter instanceof Object).toBe(true);
28+
done();
29+
});
30+
31+
it("should instantiate an adapter from string that is module", (done) => {
32+
var adapterPath = require('path').resolve("./src/Adapters/Files/FilesAdapter");
33+
var controller = new AdaptableController({
34+
adapter: adapterPath
35+
});
36+
37+
expect(controller.adapter instanceof FilesAdapter).toBe(true);
38+
done();
39+
});
40+
41+
it("should instantiate an adapter from function/Class", (done) => {
42+
var controller = new AdaptableController({
43+
adapter: FilesAdapter
44+
});
45+
expect(controller.adapter instanceof FilesAdapter).toBe(true);
46+
done();
47+
});
48+
49+
it("should instantiate the default adapter from Class", (done) => {
50+
var controller = new AdaptableController(null, FilesAdapter);
51+
expect(controller.adapter instanceof FilesAdapter).toBe(true);
52+
done();
53+
});
54+
55+
it("should use the default adapter", (done) => {
56+
var adapter = new FilesAdapter();
57+
var controller = new AdaptableController(null, adapter);
58+
expect(controller.adapter).toBe(adapter);
59+
done();
60+
});
61+
62+
it("should use the provided adapter", (done) => {
63+
var adapter = new FilesAdapter();
64+
var controller = new AdaptableController(adapter);
65+
expect(controller.adapter).toBe(adapter);
66+
done();
67+
});
68+
});

spec/MockAdapter.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = function(options) {
2+
this.options = options;
3+
}

spec/OneSignalPushAdapter.spec.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,8 @@ describe('OneSignalPushAdapter', () => {
227227

228228
function makeDevice(deviceToken, appIdentifier) {
229229
return {
230-
deviceToken: deviceToken
230+
deviceToken: deviceToken,
231+
appIdentifier: appIdentifier
231232
};
232233
}
233234

0 commit comments

Comments
 (0)