linagora-rse
Version:
110 lines (87 loc) • 3.28 kB
JavaScript
;
var expect = require('chai').expect,
request = require('supertest');
describe('The companies routes', function() {
before(function() {
this.helpers.requireBackend('core/db/mongo/models/domain');
this.helpers.requireBackend('core/db/mongo/models/user');
});
beforeEach(function(done) {
this.mongoose = require('mongoose');
this.testEnv.initCore(done);
});
afterEach(function(done) {
this.helpers.mongo.dropDatabase(done);
});
describe('HEAD /api/companies', function() {
var webserver = null;
var Domain;
var User, emails;
beforeEach(function() {
Domain = this.mongoose.model('Domain');
User = this.mongoose.model('User');
emails = ['foo@linagora.com', 'bar@linagora.com'];
webserver = this.helpers.requireBackend('webserver').webserver;
});
it('should return a JSON with 404 result when company does not exist', function(done) {
request(webserver.application).head('/api/companies').query({name: 'Corporate'}).expect(404).end(function(err) {
expect(err).to.be.null;
done();
});
});
it('should return a JSON with 200 result when company exists', function(done) {
var u = new User({ firstname: 'foo', lastname: 'bar', emails: emails});
var json = {name: 'Marketing', company_name: 'Corporate',
administrators: [{ user_id: u }]
};
var domain = new Domain(json);
domain.save(function(err, domain) {
if (err) { return done(err); }
request(webserver.application).head('/api/companies').query({name: 'Corporate'}).expect(200).end(function(err) {
expect(err).to.be.null;
domain.remove(function() { done(); });
});
});
});
});
describe('GET /api/companies', function() {
var webserver = null;
var Domain;
var User, emails;
beforeEach(function() {
Domain = this.mongoose.model('Domain');
User = this.mongoose.model('User');
emails = ['foo@linagora.com', 'bar@linagora.com'];
webserver = this.helpers.requireBackend('webserver').webserver;
});
it('should return a JSON with 404 result when company does not exist', function(done) {
request(webserver.application).get('/api/companies').query({name: 'Corporate'}).expect(404).end(function(err) {
expect(err).to.be.null;
done();
});
});
it('should return a JSON with 200 result when company exists', function(done) {
var u = new User({ firstname: 'foo', lastname: 'bar', emails: emails});
var json = {
name: 'Marketing',
company_name: 'Corporate',
administrators: [{ user_id: u }]
};
var domain = new Domain(json);
domain.save(function(err, domain) {
if (err) { return done(err); }
request(webserver.application).get('/api/companies').query({name: 'Corporate'})
.expect(200)
.expect(function(res) {
expect(res.body).to.be.an.array;
expect(res.body).to.have.length(1);
expect(res.body[0]).to.deep.equal({name: 'Corporate'});
})
.end(function(err) {
expect(err).to.be.null;
domain.remove(function() { done(); });
});
});
});
});
});