Skip to content

Commit 6f4a7a6

Browse files
committed
Merge pull request #534 from flovilmart/refactor-to-routers
Refactors Controllers to split Controllers and Routers
2 parents d9b94c7 + fbb5e44 commit 6f4a7a6

15 files changed

+702
-441
lines changed

spec/FilesController.spec.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
var FilesController = require('../src/Controllers/FilesController').FilesController;
2+
var Config = require("../src/Config");
3+
4+
// Small additional tests to improve overall coverage
5+
describe("FilesController",()=>{
6+
7+
it("should properly expand objects", (done) => {
8+
var config = new Config(Parse.applicationId);
9+
var filesController = new FilesController();
10+
var result = filesController.expandFilesInObject(config, function(){});
11+
12+
expect(result).toBeUndefined();
13+
14+
var fullFile = {
15+
type: '__type',
16+
url: "http://an.url"
17+
}
18+
19+
var anObject = {
20+
aFile: fullFile
21+
}
22+
filesController.expandFilesInObject(config, anObject);
23+
expect(anObject.aFile.url).toEqual("http://an.url");
24+
25+
done();
26+
})
27+
})

spec/LoggerController.spec.js

Lines changed: 59 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,53 +2,85 @@ var LoggerController = require('../src/Controllers/LoggerController').LoggerCont
22
var FileLoggerAdapter = require('../src/Adapters/Logger/FileLoggerAdapter').FileLoggerAdapter;
33

44
describe('LoggerController', () => {
5-
it('can check valid master key of request', (done) => {
5+
it('can check process a query witout throwing', (done) => {
66
// Make mock request
7-
var request = {
8-
auth: {
9-
isMaster: true
10-
},
11-
query: {}
12-
};
7+
var query = {};
138

149
var loggerController = new LoggerController(new FileLoggerAdapter());
1510

1611
expect(() => {
17-
loggerController.handleGET(request);
12+
loggerController.getLogs(query).then(function(res) {
13+
expect(res.length).toBe(0);
14+
done();
15+
})
1816
}).not.toThrow();
17+
});
18+
19+
it('properly validates dateTimes', (done) => {
20+
expect(LoggerController.validDateTime()).toBe(null);
21+
expect(LoggerController.validDateTime("String")).toBe(null);
22+
expect(LoggerController.validDateTime(123456).getTime()).toBe(123456);
23+
expect(LoggerController.validDateTime("2016-01-01Z00:00:00").getTime()).toBe(1451606400000);
1924
done();
2025
});
21-
22-
it('can check invalid construction of controller', (done) => {
26+
27+
it('can set the proper default values', (done) => {
28+
// Make mock request
29+
var result = LoggerController.parseOptions();
30+
expect(result.size).toEqual(10);
31+
expect(result.order).toEqual('desc');
32+
expect(result.level).toEqual('info');
33+
34+
done();
35+
});
36+
37+
it('can process a query witout throwing', (done) => {
2338
// Make mock request
24-
var request = {
25-
auth: {
26-
isMaster: true
27-
},
28-
query: {}
39+
var query = {
40+
from: "2016-01-01Z00:00:00",
41+
until: "2016-01-01Z00:00:00",
42+
size: 5,
43+
order: 'asc',
44+
level: 'error'
2945
};
3046

31-
var loggerController = new LoggerController();
47+
var result = LoggerController.parseOptions(query);
3248

33-
expect(() => {
34-
loggerController.handleGET(request);
35-
}).toThrow();
49+
expect(result.from.getTime()).toEqual(1451606400000);
50+
expect(result.until.getTime()).toEqual(1451606400000);
51+
expect(result.size).toEqual(5);
52+
expect(result.order).toEqual('asc');
53+
expect(result.level).toEqual('error');
54+
3655
done();
3756
});
38-
39-
it('can check invalid master key of request', (done) => {
57+
58+
it('can check process a query witout throwing', (done) => {
4059
// Make mock request
41-
var request = {
42-
auth: {
43-
isMaster: false
44-
},
45-
query: {}
60+
var query = {
61+
from: "2015-01-01",
62+
until: "2016-01-01",
63+
size: 5,
64+
order: 'desc',
65+
level: 'error'
4666
};
4767

4868
var loggerController = new LoggerController(new FileLoggerAdapter());
4969

5070
expect(() => {
51-
loggerController.handleGET(request);
71+
loggerController.getLogs(query).then(function(res) {
72+
expect(res.length).toBe(0);
73+
done();
74+
})
75+
}).not.toThrow();
76+
});
77+
78+
it('should throw without an adapter', (done) => {
79+
80+
var loggerController = new LoggerController();
81+
82+
expect(() => {
83+
loggerController.getLogs();
5284
}).toThrow();
5385
done();
5486
});

spec/LogsRouter.spec.js

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
var LogsRouter = require('../src/Routers/LogsRouter').LogsRouter;
2+
var LoggerController = require('../src/Controllers/LoggerController').LoggerController;
3+
var FileLoggerAdapter = require('../src/Adapters/Logger/FileLoggerAdapter').FileLoggerAdapter;
4+
5+
const loggerController = new LoggerController(new FileLoggerAdapter());
6+
7+
describe('LogsRouter', () => {
8+
it('can check valid master key of request', (done) => {
9+
// Make mock request
10+
var request = {
11+
auth: {
12+
isMaster: true
13+
},
14+
query: {},
15+
config: {
16+
loggerController: loggerController
17+
}
18+
};
19+
20+
var router = new LogsRouter();
21+
22+
expect(() => {
23+
router.handleGET(request);
24+
}).not.toThrow();
25+
done();
26+
});
27+
28+
it('can check invalid construction of controller', (done) => {
29+
// Make mock request
30+
var request = {
31+
auth: {
32+
isMaster: true
33+
},
34+
query: {},
35+
config: {
36+
loggerController: undefined // missing controller
37+
}
38+
};
39+
40+
var router = new LogsRouter();
41+
42+
expect(() => {
43+
router.handleGET(request);
44+
}).toThrow();
45+
done();
46+
});
47+
48+
it('can check invalid master key of request', (done) => {
49+
// Make mock request
50+
var request = {
51+
auth: {
52+
isMaster: false
53+
},
54+
query: {},
55+
config: {
56+
loggerController: loggerController
57+
}
58+
};
59+
60+
var router = new LogsRouter();
61+
62+
expect(() => {
63+
router.handleGET(request);
64+
}).toThrow();
65+
done();
66+
});
67+
});

spec/PushController.spec.js

Lines changed: 16 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -3,103 +3,28 @@ var PushController = require('../src/Controllers/PushController').PushController
33
describe('PushController', () => {
44
it('can check valid master key of request', (done) => {
55
// Make mock request
6-
var request = {
7-
info: {
8-
masterKey: 'masterKey'
9-
},
10-
config: {
11-
masterKey: 'masterKey'
12-
}
6+
var auth = {
7+
isMaster: true
138
}
149

1510
expect(() => {
16-
PushController.validateMasterKey(request);
11+
PushController.validateMasterKey(auth);
1712
}).not.toThrow();
1813
done();
1914
});
2015

2116
it('can check invalid master key of request', (done) => {
2217
// Make mock request
23-
var request = {
24-
info: {
25-
masterKey: 'masterKey'
26-
},
27-
config: {
28-
masterKey: 'masterKeyAgain'
29-
}
18+
var auth = {
19+
isMaster: false
3020
}
3121

3222
expect(() => {
33-
PushController.validateMasterKey(request);
23+
PushController.validateMasterKey(auth);
3424
}).toThrow();
3525
done();
3626
});
3727

38-
it('can get query condition when channels is set', (done) => {
39-
// Make mock request
40-
var request = {
41-
body: {
42-
channels: ['Giants', 'Mets']
43-
}
44-
}
45-
46-
var where = PushController.getQueryCondition(request);
47-
expect(where).toEqual({
48-
'channels': {
49-
'$in': ['Giants', 'Mets']
50-
}
51-
});
52-
done();
53-
});
54-
55-
it('can get query condition when where is set', (done) => {
56-
// Make mock request
57-
var request = {
58-
body: {
59-
'where': {
60-
'injuryReports': true
61-
}
62-
}
63-
}
64-
65-
var where = PushController.getQueryCondition(request);
66-
expect(where).toEqual({
67-
'injuryReports': true
68-
});
69-
done();
70-
});
71-
72-
it('can get query condition when nothing is set', (done) => {
73-
// Make mock request
74-
var request = {
75-
body: {
76-
}
77-
}
78-
79-
expect(function() {
80-
PushController.getQueryCondition(request);
81-
}).toThrow();
82-
done();
83-
});
84-
85-
it('can throw on getQueryCondition when channels and where are set', (done) => {
86-
// Make mock request
87-
var request = {
88-
body: {
89-
'channels': {
90-
'$in': ['Giants', 'Mets']
91-
},
92-
'where': {
93-
'injuryReports': true
94-
}
95-
}
96-
}
97-
98-
expect(function() {
99-
PushController.getQueryCondition(request);
100-
}).toThrow();
101-
done();
102-
});
10328

10429
it('can validate device type when no device type is set', (done) => {
10530
// Make query condition
@@ -170,42 +95,37 @@ describe('PushController', () => {
17095
it('can get expiration time in string format', (done) => {
17196
// Make mock request
17297
var timeStr = '2015-03-19T22:05:08Z';
173-
var request = {
174-
body: {
98+
var body = {
17599
'expiration_time': timeStr
176-
}
177-
}
100+
}
178101

179-
var time = PushController.getExpirationTime(request);
102+
var time = PushController.getExpirationTime(body);
180103
expect(time).toEqual(new Date(timeStr).valueOf());
181104
done();
182105
});
183106

184107
it('can get expiration time in number format', (done) => {
185108
// Make mock request
186109
var timeNumber = 1426802708;
187-
var request = {
188-
body: {
189-
'expiration_time': timeNumber
190-
}
110+
var body = {
111+
'expiration_time': timeNumber
191112
}
192113

193-
var time = PushController.getExpirationTime(request);
114+
var time = PushController.getExpirationTime(body);
194115
expect(time).toEqual(timeNumber * 1000);
195116
done();
196117
});
197118

198119
it('can throw on getExpirationTime in invalid format', (done) => {
199120
// Make mock request
200-
var request = {
201-
body: {
202-
'expiration_time': 'abcd'
203-
}
121+
var body = {
122+
'expiration_time': 'abcd'
204123
}
205124

206125
expect(function(){
207-
PushController.getExpirationTime(request);
126+
PushController.getExpirationTime(body);
208127
}).toThrow();
209128
done();
210129
});
130+
211131
});

0 commit comments

Comments
 (0)