Skip to content

Refactors Controllers to split Controllers and Routers #534

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Feb 20, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions spec/FilesController.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
var FilesController = require('../src/Controllers/FilesController').FilesController;
var Config = require("../src/Config");

// Small additional tests to improve overall coverage
describe("FilesController",()=>{

it("should properly expand objects", (done) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we testing the fact that the controller doesn't expand non-necessary objects?
Can we have a reverse test? Say - expand a file with just a name, so it has the full url?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is already covered by the integration tests that are run through Parse.File.save

var config = new Config(Parse.applicationId);
var filesController = new FilesController();
var result = filesController.expandFilesInObject(config, function(){});

expect(result).toBeUndefined();

var fullFile = {
type: '__type',
url: "http://an.url"
}

var anObject = {
aFile: fullFile
}
filesController.expandFilesInObject(config, anObject);
expect(anObject.aFile.url).toEqual("http://an.url");

done();
})
})
86 changes: 59 additions & 27 deletions spec/LoggerController.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,53 +2,85 @@ var LoggerController = require('../src/Controllers/LoggerController').LoggerCont
var FileLoggerAdapter = require('../src/Adapters/Logger/FileLoggerAdapter').FileLoggerAdapter;

describe('LoggerController', () => {
it('can check valid master key of request', (done) => {
it('can check process a query witout throwing', (done) => {
// Make mock request
var request = {
auth: {
isMaster: true
},
query: {}
};
var query = {};

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

expect(() => {
loggerController.handleGET(request);
loggerController.getLogs(query).then(function(res) {
expect(res.length).toBe(0);
done();
})
}).not.toThrow();
});

it('properly validates dateTimes', (done) => {
expect(LoggerController.validDateTime()).toBe(null);
expect(LoggerController.validDateTime("String")).toBe(null);
expect(LoggerController.validDateTime(123456).getTime()).toBe(123456);
expect(LoggerController.validDateTime("2016-01-01Z00:00:00").getTime()).toBe(1451606400000);
done();
});

it('can check invalid construction of controller', (done) => {

it('can set the proper default values', (done) => {
// Make mock request
var result = LoggerController.parseOptions();
expect(result.size).toEqual(10);
expect(result.order).toEqual('desc');
expect(result.level).toEqual('info');

done();
});

it('can process a query witout throwing', (done) => {
// Make mock request
var request = {
auth: {
isMaster: true
},
query: {}
var query = {
from: "2016-01-01Z00:00:00",
until: "2016-01-01Z00:00:00",
size: 5,
order: 'asc',
level: 'error'
};

var loggerController = new LoggerController();
var result = LoggerController.parseOptions(query);

expect(() => {
loggerController.handleGET(request);
}).toThrow();
expect(result.from.getTime()).toEqual(1451606400000);
expect(result.until.getTime()).toEqual(1451606400000);
expect(result.size).toEqual(5);
expect(result.order).toEqual('asc');
expect(result.level).toEqual('error');

done();
});

it('can check invalid master key of request', (done) => {
it('can check process a query witout throwing', (done) => {
// Make mock request
var request = {
auth: {
isMaster: false
},
query: {}
var query = {
from: "2015-01-01",
until: "2016-01-01",
size: 5,
order: 'desc',
level: 'error'
};

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

expect(() => {
loggerController.handleGET(request);
loggerController.getLogs(query).then(function(res) {
expect(res.length).toBe(0);
done();
})
}).not.toThrow();
});

it('should throw without an adapter', (done) => {

var loggerController = new LoggerController();

expect(() => {
loggerController.getLogs();
}).toThrow();
done();
});
Expand Down
67 changes: 67 additions & 0 deletions spec/LogsRouter.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
var LogsRouter = require('../src/Routers/LogsRouter').LogsRouter;
var LoggerController = require('../src/Controllers/LoggerController').LoggerController;
var FileLoggerAdapter = require('../src/Adapters/Logger/FileLoggerAdapter').FileLoggerAdapter;

const loggerController = new LoggerController(new FileLoggerAdapter());

describe('LogsRouter', () => {
it('can check valid master key of request', (done) => {
// Make mock request
var request = {
auth: {
isMaster: true
},
query: {},
config: {
loggerController: loggerController
}
};

var router = new LogsRouter();

expect(() => {
router.handleGET(request);
}).not.toThrow();
done();
});

it('can check invalid construction of controller', (done) => {
// Make mock request
var request = {
auth: {
isMaster: true
},
query: {},
config: {
loggerController: undefined // missing controller
}
};

var router = new LogsRouter();

expect(() => {
router.handleGET(request);
}).toThrow();
done();
});

it('can check invalid master key of request', (done) => {
// Make mock request
var request = {
auth: {
isMaster: false
},
query: {},
config: {
loggerController: loggerController
}
};

var router = new LogsRouter();

expect(() => {
router.handleGET(request);
}).toThrow();
done();
});
});
112 changes: 16 additions & 96 deletions spec/PushController.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,103 +3,28 @@ var PushController = require('../src/Controllers/PushController').PushController
describe('PushController', () => {
it('can check valid master key of request', (done) => {
// Make mock request
var request = {
info: {
masterKey: 'masterKey'
},
config: {
masterKey: 'masterKey'
}
var auth = {
isMaster: true
}

expect(() => {
PushController.validateMasterKey(request);
PushController.validateMasterKey(auth);
}).not.toThrow();
done();
});

it('can check invalid master key of request', (done) => {
// Make mock request
var request = {
info: {
masterKey: 'masterKey'
},
config: {
masterKey: 'masterKeyAgain'
}
var auth = {
isMaster: false
}

expect(() => {
PushController.validateMasterKey(request);
PushController.validateMasterKey(auth);
}).toThrow();
done();
});

it('can get query condition when channels is set', (done) => {
// Make mock request
var request = {
body: {
channels: ['Giants', 'Mets']
}
}

var where = PushController.getQueryCondition(request);
expect(where).toEqual({
'channels': {
'$in': ['Giants', 'Mets']
}
});
done();
});

it('can get query condition when where is set', (done) => {
// Make mock request
var request = {
body: {
'where': {
'injuryReports': true
}
}
}

var where = PushController.getQueryCondition(request);
expect(where).toEqual({
'injuryReports': true
});
done();
});

it('can get query condition when nothing is set', (done) => {
// Make mock request
var request = {
body: {
}
}

expect(function() {
PushController.getQueryCondition(request);
}).toThrow();
done();
});

it('can throw on getQueryCondition when channels and where are set', (done) => {
// Make mock request
var request = {
body: {
'channels': {
'$in': ['Giants', 'Mets']
},
'where': {
'injuryReports': true
}
}
}

expect(function() {
PushController.getQueryCondition(request);
}).toThrow();
done();
});

it('can validate device type when no device type is set', (done) => {
// Make query condition
Expand Down Expand Up @@ -170,42 +95,37 @@ describe('PushController', () => {
it('can get expiration time in string format', (done) => {
// Make mock request
var timeStr = '2015-03-19T22:05:08Z';
var request = {
body: {
var body = {
'expiration_time': timeStr
}
}
}

var time = PushController.getExpirationTime(request);
var time = PushController.getExpirationTime(body);
expect(time).toEqual(new Date(timeStr).valueOf());
done();
});

it('can get expiration time in number format', (done) => {
// Make mock request
var timeNumber = 1426802708;
var request = {
body: {
'expiration_time': timeNumber
}
var body = {
'expiration_time': timeNumber
}

var time = PushController.getExpirationTime(request);
var time = PushController.getExpirationTime(body);
expect(time).toEqual(timeNumber * 1000);
done();
});

it('can throw on getExpirationTime in invalid format', (done) => {
// Make mock request
var request = {
body: {
'expiration_time': 'abcd'
}
var body = {
'expiration_time': 'abcd'
}

expect(function(){
PushController.getExpirationTime(request);
PushController.getExpirationTime(body);
}).toThrow();
done();
});

});
Loading