@tiledesk/tiledesk-server
Version:
The Tiledesk server module
1,185 lines (860 loc) • 70.1 kB
JavaScript
//During the test the env variable is set to test
process.env.NODE_ENV = 'test';
var projectService = require('../services/projectService');
var requestService = require('../services/requestService');
var userService = require('../services/userService');
var leadService = require('../services/leadService');
var faqService = require('../services/faqService');
var Department = require('../models/department');
var winston = require('../config/winston');
//Require the dev-dependencies
let chai = require('chai');
let chaiHttp = require('chai-http');
let server = require('../app');
let should = chai.should();
var expect = chai.expect;
var assert = chai.assert;
// require('../services/mongoose-cache-fn')(mongoose);
// chai.config.includeStack = true;
let log = false;
chai.use(chaiHttp);
describe('RequestRoute', () => {
// mocha test/requestRoute.js --grep 'createSimple'
it('createSimple', function (done) {
// this.timeout(10000);
var email = "test-request-create-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.create("request-create", savedUser._id, { email: { template: { assignedRequest: "123" } } }).then(function (savedProject) {
chai.request(server)
.post('/' + savedProject._id + '/requests/')
.auth(email, pwd)
.set('content-type', 'application/json')
.send({ "first_text": "first_text" })
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.snapshot.agents.length).to.equal(1);
// res.body.should.have.property('request_id').eql('request_id');
// res.body.should.have.property('requester_id').eql('requester_id');
res.body.should.have.property('first_text').eql('first_text');
res.body.should.have.property('id_project').eql(savedProject._id.toString());
res.body.should.have.property('createdBy').eql(savedUser._id.toString());
// res.body.should.have.property('messages_count').gt(0);
res.body.should.have.property('status').eql(200);
// res.body.should.have.property('agents').eql(savedUser._id);
expect(res.body.snapshot.agents.length).to.equal(1);
expect(res.body.participants.length).to.equal(1);
expect(res.body.participantsAgents.length).to.equal(1);
expect(res.body.participantsBots).to.have.lengthOf(0);
expect(res.body.hasBot).to.equal(false);
res.body.should.have.property('department').not.eql(null);
// res.body.should.have.property('lead').eql(undefined);
done();
});
});
});
});
// mocha test/requestRoute.js --grep 'create-simple-new-note'
it('create-simple-new-note', function (done) {
// this.timeout(10000);
var email = "test-request-create-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.create("request-create", savedUser._id, { email: { template: { assignedRequest: "123" } } }).then(function (savedProject) {
chai.request(server)
.post('/' + savedProject._id + '/requests/')
.auth(email, pwd)
.set('content-type', 'application/json')
.send({ "first_text": "first_text" })
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
let request_id = res.body.request_id;
chai.request(server)
.post('/' + savedProject._id + '/requests/' + request_id + "/notes")
.auth(email, pwd)
.send({ text: "test note 1"})
.end((err, res) => {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.notes.length).to.equal(1);
expect(res.body.notes[0].text).to.equal("test note 1");
expect(res.body.notes[0].createdBy).to.equal(savedUser._id.toString());
done();
// Project_user.findOneAndUpdate({id_project: savedProject._id, id_user: savedUser._id }, { role: RoleConstants.AGENT }, function(err, savedProject_user){
// done();
// })
})
});
});
});
});
// mocha test/requestRoute.js --grep 'createSimpleAndCloseForDuration'
it('createSimpleAndCloseForDuration', function (done) {
// this.timeout(10000);
var email = "test-request-create-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.create("request-create", savedUser._id, { email: { template: { assignedRequest: "123" } } }).then(function (savedProject) {
chai.request(server)
.post('/' + savedProject._id + '/requests/')
.auth(email, pwd)
.set('content-type', 'application/json')
.send({ "first_text": "first_text" })
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
setTimeout(() => {
chai.request(server)
.put('/' + savedProject._id + '/requests/' + res.body.request_id + '/close')
.auth(email, pwd)
.send()
.end((err, res) => {
if (err) { console.error("err: ", err); }
if (log) {
console.log("res.body", res.body);
console.log("request duration: ", res.body.duration)
}
res.body.should.have.property('duration');
res.body.duration.should.be.above(2000);
done();
})
}, 2000)
});
});
});
}).timeout(5000);
// mocha test/requestRoute.js --grep 'createUpperCaseEmail'
it('createUpperCaseEmail', function (done) {
// this.timeout(10000);
var now = Date.now();
var email = "test-REQUEST-create-" + now + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.create("request-create", savedUser._id).then(function (savedProject) {
chai.request(server)
.post('/' + savedProject._id + '/requests/')
.auth("test-request-create-" + now + "@email.com", pwd)
.set('content-type', 'application/json')
.send({ "first_text": "first_text" })
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.snapshot.agents.length).to.equal(1);
// res.body.should.have.property('request_id').eql('request_id');
// res.body.should.have.property('requester_id').eql('requester_id');
res.body.should.have.property('first_text').eql('first_text');
res.body.should.have.property('id_project').eql(savedProject._id.toString());
res.body.should.have.property('createdBy').eql(savedUser._id.toString());
// res.body.should.have.property('messages_count').gt(0);
res.body.should.have.property('status').eql(200);
// res.body.should.have.property('agents').eql(savedUser._id);
expect(res.body.snapshot.agents.length).to.equal(1);
expect(res.body.participants.length).to.equal(1);
expect(res.body.participantsAgents.length).to.equal(1);
expect(res.body.participantsBots).to.have.lengthOf(0);
expect(res.body.hasBot).to.equal(false);
res.body.should.have.property('department').not.eql(null);
// res.body.should.have.property('lead').eql(undefined);
done();
});
});
});
});
// mocha test/requestRoute.js --grep 'getbyid'
it('getbyid', function (done) {
// this.timeout(10000);
var email = "test-signup-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.createAndReturnProjectAndProjectUser("createWithId", savedUser._id).then(function (savedProjectAndPU) {
var savedProject = savedProjectAndPU.project;
var now = Date.now();
// leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function(createdLead) {
// createWithId(request_id, requester_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status) {
// requestService.createWithId("request_id1", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
requestService.createWithIdAndRequester("request_requestroute-getbyid-" + now, savedProjectAndPU.project_user._id, null, savedProject._id, "first_text").then(function (savedRequest) {
winston.debug("resolve", savedRequest.toObject());
chai.request(server)
.get('/' + savedProject._id + '/requests/' + savedRequest.request_id)
.auth(email, pwd)
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
res.body.should.have.property('department').not.eql(null);
// res.body.should.have.property('lead').eql(null);
res.body.should.have.property('request_id').eql("request_requestroute-getbyid-" + now);
res.body.should.have.property('requester').not.eql(null);
expect(res.body.participantsAgents.length).to.equal(1);
expect(res.body.participantsBots).to.have.lengthOf(0);
expect(res.body.hasBot).to.equal(false);
expect(res.body.participatingAgents.length).to.equal(1);
expect(res.body.participatingBots.length).to.equal(0);
expect(res.body.participatingAgents.length).to.equal(1);
expect(res.body.participatingBots).to.have.lengthOf(0);
expect(res.body.requester._id).to.not.equal(savedProjectAndPU.project_user._id);
expect(res.body.requester.isAuthenticated).to.equal(true);
expect(res.body.snapshot.agents).to.equal(undefined);
done();
});
// .catch(function(err) {
// console.log("test reject", err);
// assert.isNotOk(err,'Promise error');
// done();
// });
// });
});
});
});
});
// mocha test/requestRoute.js --grep 'getbyidWithPartecipatingBots'
it('getbyidWithPartecipatingBots', function (done) {
// this.timeout(10000);
var email = "test-signup-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.createAndReturnProjectAndProjectUser("createWithId", savedUser._id).then(function (savedProjectAndPU) {
var savedProject = savedProjectAndPU.project;
faqService.create(savedProject._id, savedUser._id, { name: "testbot", type: "internal" }).then(function (savedBot) {
Department.findOneAndUpdate({ id_project: savedProject._id, default: true }, { id_bot: savedBot._id }, { new: true, upsert: false }, function (err, updatedDepartment) {
winston.error("err", err);
winston.info("updatedDepartment", updatedDepartment.toObject());
var now = Date.now();
// leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function(createdLead) {
// createWithId(request_id, requester_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status) {
// requestService.createWithId("request_id1", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
requestService.createWithIdAndRequester("request_requestroute-getbyidWithPartecipatingBots-" + now, savedProjectAndPU.project_user._id, null, savedProject._id, "first_text").then(function (savedRequest) {
winston.debug("resolve", savedRequest.toObject());
chai.request(server)
.get('/' + savedProject._id + '/requests/' + savedRequest.request_id)
.auth(email, pwd)
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
res.body.should.have.property('department').not.eql(null);
// res.body.should.have.property('lead').eql(null);
res.body.should.have.property('request_id').eql("request_requestroute-getbyidWithPartecipatingBots-" + now);
res.body.should.have.property('requester').not.eql(null);
expect(res.body.requester._id).to.not.equal(savedProjectAndPU.project_user._id);
expect(res.body.participatingAgents.length).to.equal(0);
expect(res.body.participatingBots.length).to.equal(1);
expect(res.body.participantsAgents.length).to.equal(0);
expect(res.body.participantsBots).to.have.lengthOf(1);
expect(res.body.hasBot).to.equal(true);
expect(res.body.snapshot.agents).to.equal(undefined);
expect(res.body.department.hasBot).to.equal(true);
done();
});
// .catch(function(err) {
// console.log("test reject", err);
// assert.isNotOk(err,'Promise error');
// done();
// });
// });
});
});
});
});
});
});
// mocha test/requestRoute.js --grep 'getallSimple'
it('getallSimple', function (done) {
// this.timeout(10000);
var email = "test-getallsimple-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
if (log) { console.log("savedUser", savedUser); }
projectService.createAndReturnProjectAndProjectUser("createWithId", savedUser._id).then(function (savedProjectAndPU) {
var savedProject = savedProjectAndPU.project;
if (log) { console.log("savedProjectAndPU", savedProjectAndPU); }
leadService.createIfNotExists("leadfullname", "email-getallSimple@email.com", savedProject._id).then(function (createdLead) {
if (log) { console.log("createdLead", createdLead); }
var now = Date.now();
var new_request = {
request_id: "request_id-getallSimple-" + now, project_user_id: savedProjectAndPU.project_user._id, lead_id: createdLead._id,
id_project: savedProject._id, first_text: "first_text",
lead: createdLead, requester: savedProjectAndPU.project_user
};
requestService.create(new_request).then(function (savedRequest) {
if (log) { console.log("savedRequest", savedRequest); }
// createWithId(request_id, requester_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status) {
// requestService.createWithId("request_id1", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
// requestService.createWithIdAndRequester("request_id1", savedProjectAndPU.project_user._id, null,savedProject._id, "first_text").then(function(savedRequest) {
winston.debug("resolve", savedRequest.toObject());
chai.request(server)
.get('/' + savedProject._id + '/requests/')
.auth(email, pwd)
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.requests[0].department).to.not.equal(null);
expect(res.body.requests[0].requester).to.not.equal(null);
if (log) { console.log("res.body.requests[0].requester", res.body.requests[0].requester); }
expect(res.body.requests[0].requester.id_user.firstname).to.equal("Test Firstname");
expect(res.body.requests[0].participantsAgents.length).to.equal(1);
expect(res.body.requests[0].participantsBots).to.have.lengthOf(0);
expect(res.body.requests[0].hasBot).to.equal(false);
expect(res.body.requests[0].snapshot).to.not.equal(undefined);
expect(res.body.requests[0].snapshot.department.name).to.not.equal(null);
// expect(res.body.requests[0].snapshot.agents.length).to.equal(1);
expect(res.body.requests[0].snapshot.availableAgentsCount).to.equal(1);
expect(res.body.requests[0].snapshot.lead.fullname).to.equal("leadfullname");
expect(res.body.requests[0].snapshot.requester.role).to.equal("owner");
expect(res.body.requests[0].snapshot.agents).to.equal(undefined);
// expect(res.body.requests[0].participatingAgents.length).to.equal(1);
// expect(res.body.requests[0].participatingBots.length).to.equal(0);
done();
});
// .catch(function(err) {
// console.log("test reject", err);
// assert.isNotOk(err,'Promise error');
// done();
// });
});
});
});
});
});
// mocha test/requestRoute.js --grep 'getallNoPopulate'
it('getallNoPopulate', function (done) {
// this.timeout(10000);
var email = "test-signup-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.createAndReturnProjectAndProjectUser("createWithId-getallNoPopulate", savedUser._id).then(function (savedProjectAndPU) {
var savedProject = savedProjectAndPU.project;
leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function (createdLead) {
// createWithId(request_id, requester_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status) {
// requestService.createWithId("request_id1", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
var now = Date.now();
var request = {
request_id: "request_getallNoPopulate-" + now, project_user_id: savedProjectAndPU.project_user._id, lead_id: createdLead._id,
id_project: savedProject._id, first_text: "first_text",
lead: createdLead, requester: savedProjectAndPU.project_user
};
requestService.create(request).then(function (savedRequest) {
// requestService.createWithIdAndRequester("request_id1", savedProjectAndPU.project_user._id, null,savedProject._id, "first_text").then(function(savedRequest) {
winston.debug("resolve", savedRequest.toObject());
chai.request(server)
.get('/' + savedProject._id + '/requests/?no_populate=true')
.auth(email, pwd)
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
// assert.isString(res.body.requests[0].department, 'order placed');
expect(res.body.requests[0].department).to.be.a('string');
expect(res.body.requests[0].requester).to.be.a('string');
// console.log("res.body.requests[0].requester", res.body.requests[0].requester);
// expect(res.body.requests[0].requester.id_user.firstname).to.equal("Test Firstname");
if (log) { console.log("res.body.requests[0].participantsAgents", res.body.requests[0].participantsAgents); }
expect(res.body.requests[0].participantsAgents).to.have.lengthOf(1);
expect(res.body.requests[0].participantsAgents[0]).to.equal(savedUser._id.toString());
expect(res.body.requests[0].participantsBots).to.have.lengthOf(0);
expect(res.body.requests[0].hasBot).to.equal(false);
expect(res.body.requests[0].snapshot).to.not.equal(undefined);
expect(res.body.requests[0].snapshot.department.name).to.not.equal(null);
expect(res.body.requests[0].snapshot.agents).to.equal(undefined);
// expect(res.body.requests[0].snapshot.agents.length).to.equal(1);
// expect(res.body.requests[0].test).to.not.equal(undefined);
// expect(res.body.requests[0].participatingAgents.length).to.equal(1);
// expect(res.body.requests[0].participatingBots.length).to.equal(0);
done();
});
// .catch(function(err) {
// console.log("test reject", err);
// assert.isNotOk(err,'Promise error');
// done();
// });
// });
});
});
});
});
});
// mocha test/requestRoute.js --grep 'getallSimple'
it('getallFilter-snap_department_routing', function (done) {
// this.timeout(10000);
var email = "test-getallfilter-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
if (log) { console.log("savedUser", savedUser); }
projectService.createAndReturnProjectAndProjectUser("createWithId", savedUser._id).then(function (savedProjectAndPU) {
var savedProject = savedProjectAndPU.project;
if (log) { console.log("savedProjectAndPU", savedProjectAndPU); }
leadService.createIfNotExists("leadfullname", "email-getallfilter@email.com", savedProject._id).then(function (createdLead) {
if (log) { console.log("createdLead", createdLead); }
var now = Date.now();
var new_request = {
request_id: "request_id-getallFilter-snap_department_routing-" + now, project_user_id: savedProjectAndPU.project_user._id, lead_id: createdLead._id,
id_project: savedProject._id, first_text: "first_text",
lead: createdLead, requester: savedProjectAndPU.project_user
};
requestService.create(new_request).then(function (savedRequest) {
if (log) { console.log("savedRequest", savedRequest); }
// createWithId(request_id, requester_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status) {
// requestService.createWithId("request_id1", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
// requestService.createWithIdAndRequester("request_id1", savedProjectAndPU.project_user._id, null,savedProject._id, "first_text").then(function(savedRequest) {
winston.debug("resolve", savedRequest.toObject());
chai.request(server)
.get('/' + savedProject._id + '/requests/?snap_department_routing=assigned')
.auth(email, pwd)
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.requests[0].department).to.not.equal(null);
expect(res.body.requests[0].requester).to.not.equal(null);
if (log) { console.log("res.body.requests[0].requester", res.body.requests[0].requester); }
expect(res.body.requests[0].requester.id_user.firstname).to.equal("Test Firstname");
expect(res.body.requests[0].participantsAgents.length).to.equal(1);
expect(res.body.requests[0].participantsBots).to.have.lengthOf(0);
expect(res.body.requests[0].hasBot).to.equal(false);
expect(res.body.requests[0].snapshot).to.not.equal(undefined);
expect(res.body.requests[0].snapshot.department.name).to.not.equal(null);
// expect(res.body.requests[0].snapshot.agents.length).to.equal(1);
expect(res.body.requests[0].snapshot.availableAgentsCount).to.equal(1);
expect(res.body.requests[0].snapshot.lead.fullname).to.equal("leadfullname");
expect(res.body.requests[0].snapshot.requester.role).to.equal("owner");
expect(res.body.requests[0].snapshot.agents).to.equal(undefined);
// expect(res.body.requests[0].participatingAgents.length).to.equal(1);
// expect(res.body.requests[0].participatingBots.length).to.equal(0);
done();
});
// .catch(function(err) {
// console.log("test reject", err);
// assert.isNotOk(err,'Promise error');
// done();
// });
});
});
});
});
});
// mocha test/requestRoute.js --grep 'getallFilter-snap_department_default'
it('getallFilter-snap_department_default', function (done) {
// this.timeout(10000);
var email = "test-getallfilter-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
if (log) { console.log("savedUser", savedUser); }
projectService.createAndReturnProjectAndProjectUser("createWithId", savedUser._id).then(function (savedProjectAndPU) {
var savedProject = savedProjectAndPU.project;
if (log) { console.log("savedProjectAndPU", savedProjectAndPU); }
leadService.createIfNotExists("leadfullname", "email-getallfilter@email.com", savedProject._id).then(function (createdLead) {
if (log) { console.log("createdLead", createdLead); }
var now = Date.now();
var new_request = {
request_id: "request_id-getallFilter-snap_department_routing-" + now, project_user_id: savedProjectAndPU.project_user._id, lead_id: createdLead._id,
id_project: savedProject._id, first_text: "first_text",
lead: createdLead, requester: savedProjectAndPU.project_user
};
requestService.create(new_request).then(function (savedRequest) {
if (log) { console.log("savedRequest", savedRequest); }
// createWithId(request_id, requester_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status) {
// requestService.createWithId("request_id1", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
// requestService.createWithIdAndRequester("request_id1", savedProjectAndPU.project_user._id, null,savedProject._id, "first_text").then(function(savedRequest) {
winston.debug("resolve", savedRequest.toObject());
chai.request(server)
.get('/' + savedProject._id + '/requests/?snap_department_default=true')
.auth(email, pwd)
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.requests[0].department).to.not.equal(null);
expect(res.body.requests[0].requester).to.not.equal(null);
if (log) { console.log("res.body.requests[0].requester", res.body.requests[0].requester); }
expect(res.body.requests[0].requester.id_user.firstname).to.equal("Test Firstname");
expect(res.body.requests[0].participantsAgents.length).to.equal(1);
expect(res.body.requests[0].participantsBots).to.have.lengthOf(0);
expect(res.body.requests[0].hasBot).to.equal(false);
expect(res.body.requests[0].snapshot).to.not.equal(undefined);
expect(res.body.requests[0].snapshot.department.name).to.not.equal(null);
// expect(res.body.requests[0].snapshot.agents.length).to.equal(1);
expect(res.body.requests[0].snapshot.availableAgentsCount).to.equal(1);
expect(res.body.requests[0].snapshot.lead.fullname).to.equal("leadfullname");
expect(res.body.requests[0].snapshot.requester.role).to.equal("owner");
expect(res.body.requests[0].snapshot.agents).to.equal(undefined);
// expect(res.body.requests[0].participatingAgents.length).to.equal(1);
// expect(res.body.requests[0].participatingBots.length).to.equal(0);
done();
});
// .catch(function(err) {
// console.log("test reject", err);
// assert.isNotOk(err,'Promise error');
// done();
// });
});
});
});
});
});
// mocha test/requestRoute.js --grep 'snap_department_id_bot_exists'
it('getallFilter-snap_department_id_bot_exists', function (done) {
// this.timeout(10000);
var email = "test-getallfilter-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
if (log) { console.log("savedUser", savedUser); }
projectService.createAndReturnProjectAndProjectUser("createWithId", savedUser._id).then(function (savedProjectAndPU) {
var savedProject = savedProjectAndPU.project;
if (log) { console.log("savedProjectAndPU", savedProjectAndPU); }
leadService.createIfNotExists("leadfullname", "email-getallfilter@email.com", savedProject._id).then(function (createdLead) {
if (log) { console.log("createdLead", createdLead); }
var now = Date.now();
var new_request = {
request_id: "request_id-getallFilter-snap_department_id_bot_exists-" + now, project_user_id: savedProjectAndPU.project_user._id, lead_id: createdLead._id,
id_project: savedProject._id, first_text: "first_text",
lead: createdLead, requester: savedProjectAndPU.project_user
};
requestService.create(new_request).then(function (savedRequest) {
if (log) { console.log("savedRequest", savedRequest); }
// createWithId(request_id, requester_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status) {
// requestService.createWithId("request_id1", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
// requestService.createWithIdAndRequester("request_id1", savedProjectAndPU.project_user._id, null,savedProject._id, "first_text").then(function(savedRequest) {
winston.debug("resolve", savedRequest.toObject());
chai.request(server)
.get('/' + savedProject._id + '/requests/?snap_department_id_bot_exists=false')
.auth(email, pwd)
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.requests[0].department).to.not.equal(null);
expect(res.body.requests[0].requester).to.not.equal(null);
if (log) { console.log("res.body.requests[0].requester", res.body.requests[0].requester); }
expect(res.body.requests[0].requester.id_user.firstname).to.equal("Test Firstname");
expect(res.body.requests[0].participantsAgents.length).to.equal(1);
expect(res.body.requests[0].participantsBots).to.have.lengthOf(0);
expect(res.body.requests[0].hasBot).to.equal(false);
expect(res.body.requests[0].snapshot).to.not.equal(undefined);
expect(res.body.requests[0].snapshot.department.name).to.not.equal(null);
// expect(res.body.requests[0].snapshot.agents.length).to.equal(1);
expect(res.body.requests[0].snapshot.availableAgentsCount).to.equal(1);
expect(res.body.requests[0].snapshot.lead.fullname).to.equal("leadfullname");
expect(res.body.requests[0].snapshot.requester.role).to.equal("owner");
expect(res.body.requests[0].snapshot.agents).to.equal(undefined);
// expect(res.body.requests[0].participatingAgents.length).to.equal(1);
// expect(res.body.requests[0].participatingBots.length).to.equal(0);
done();
});
// .catch(function(err) {
// console.log("test reject", err);
// assert.isNotOk(err,'Promise error');
// done();
// });
});
});
});
});
});
// mocha test/requestRoute.js --grep 'getallcsv'
it('getallcsv', function (done) {
// this.timeout(10000);
var email = "test-signup-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.createAndReturnProjectAndProjectUser("getallcsv", savedUser._id).then(function (savedProjectAndPU) {
var savedProject = savedProjectAndPU.project;
leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function (createdLead) {
winston.info("createdLead", createdLead.toObject());
// createWithIdAndRequester(request_id, project_user_id, lead_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status, createdBy, attributes, subject, preflight, channel, location) {
var now = Date.now();
requestService.create({
request_id: "request_id-getallcsv-" + now, project_user_id: savedProjectAndPU.project_user._id, lead_id: createdLead._id, id_project: savedProject._id,
first_text: "first_text", tags: [{ tag: "tag1" }, { tag: "tag2" }]
}).then(function (savedRequest) {
winston.info("resolve", savedRequest.toObject());
chai.request(server)
.get('/' + savedProject._id + '/requests/csv/')
.auth(email, pwd)
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.text", res.text); }
res.should.have.status(200);
res.body.should.be.a('object');
done();
});
// .catch(function(err) {
// console.log("test reject", err);
// assert.isNotOk(err,'Promise error');
// done();
// });
});
});
});
});
});
// mocha test/requestRoute.js --grep 'getallWithLoLead'
it('getallWithLoLead', function (done) {
// this.timeout(10000);
var email = "test-signup-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.createAndReturnProjectAndProjectUser("getallcsv", savedUser._id).then(function (savedProjectAndPU) {
var savedProject = savedProjectAndPU.project;
leadService.createIfNotExists("request_id1-getallWithLoLead", "email@getallWithLoLead.com", savedProject._id).then(function (createdLead) {
winston.info("createdLead", createdLead.toObject());
// createWithIdAndRequester(request_id, project_user_id, lead_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status, createdBy, attributes, subject, preflight, channel, location) {
var now = Date.now();
requestService.createWithIdAndRequester("request_id-getallWithLoLead-" + now, savedProjectAndPU.project_user._id, createdLead._id, savedProject._id, "first_text").then(function (savedRequest) {
winston.debug("resolve", savedRequest.toObject());
chai.request(server)
.get('/' + savedProject._id + '/requests/')
.auth(email, pwd)
.end(function (err, res) {
if (err) { console.error("err: ", err); }
if (log) { console.log("res.body", res.body); }
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.requests[0].department).to.not.equal(null);
expect(res.body.requests[0].lead).to.not.equal(null);
expect(res.body.requests[0].snapshot.agents).to.equal(undefined);
done();
});
// .catch(function(err) {
// console.log("test reject", err);
// assert.isNotOk(err,'Promise error');
// done();
// });
});
});
});
});
});
// mocha test/requestRoute.js --grep 'countConversations'
it('countConversations', function (done) {
// this.timeout(10000);
var email = "test-request-create-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.create("request-create", savedUser._id, { email: { template: { assignedRequest: "123" } } }).then(function (savedProject) {
chai.request(server)
.post('/' + savedProject._id + '/requests/')
.auth(email, pwd)
.set('content-type', 'application/json')
.send({ "first_text": "first_text" })
.end(function (err, res) {
if (err) { console.log("err: ", err) };
if (log) { console.log("res.body: ", res.body) };
res.should.have.status(200);
res.body.should.be.a('object');
chai.request(server)
.get('/' + savedProject._id + '/requests/count?conversation_quota=true')
.auth(email, pwd)
.end((err, res) => {
if (err) { console.log("err: ", err) };
if (log) { console.log("res.body: ", res.body) };
res.should.have.status(200);
done();
})
});
});
});
});
// mocha test/requestRoute.js --grep 'exludeDraftConversations'
it('exludeDraftConversations', (done) => {
var email = "test-signup-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => {
projectService.createAndReturnProjectAndProjectUser("test-draft-conversation", savedUser._id).then((savedProjectAndPU) => {
let savedProject = savedProjectAndPU.project;
let savedPU = savedProjectAndPU.project_user;
leadService.createIfNotExists("Lead Fullname", "email@test.com", savedProject._id).then((createdLead) => {
let now = Date.now();
let request = {
request_id: "request_id-exludeDraftConversations-" + now,
project_user_id: savedPU._id,
lead_id: createdLead._id,
id_project: savedProject._id,
first_text: "first_text",
lead: createdLead,
requester: savedPU,
attributes: { sourcePage: "https://widget-pre.tiledesk.com/v2/index.html?tiledesk_projectid=5ce3d1ceb25ad30017279999&td_draft=true" }
}
requestService.create(request).then(async (savedRequest) => {
// Case 1 - request with source page that contains td_draft
expect(savedRequest.draft).to.equal(true);
// Case 2 - request without source page that contains td_draft
//expect(savedRequest.draft).to.be.undefined;
// get all requests -> should be 0
chai.request(server)
.get('/' + savedProject._id + '/requests?draft=false')
.auth(email, pwd)
.end((err, res) => {
if (err) { console.error("err: ", err ) };
if (log) { console.log("res.body: ", res.body) }
res.should.have.status(200);
res.body.should.be.a('object');
res.body.requests.should.be.a('array');
// Case 1 - request with source page that contains td_draft
expect(res.body.requests.length).to.equal(0);
// Case 2 - request without source page that contains td_draft
//expect(res.body.requests.length).to.equal(1);
done();
})
}).catch((err) => {
console.error("error creating request: ", err)
})
})
})
})
})
// mocha test/requestRoute.js --grep 'add-tag-to-conversation'
it('add-tag-to-conversation', function (done) {
var email = "test-request-create-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.create("request-create", savedUser._id, { email: { template: { assignedRequest: "123" } } }).then(function (savedProject) {
chai.request(server)
.post('/' + savedProject._id + '/requests/')
.auth(email, pwd)
.set('content-type', 'application/json')
.send({ "first_text": "first_text" })
.end(function (err, res) {
if (err) { console.log("err: ", err) };
if (log) { console.log("res.body: ", res.body) };
res.should.have.status(200);
res.body.should.be.a('object');
res.body.should.have.property('request_id').not.eql(null);
let request_id = res.body.request_id;
let tags = [
{ tag: "tag1", color: "#43B1F2" },
{ tag: "tag2", color: "#43B1F2" }
]
// First Step: add 2 tags on a conversation no tagged at all
chai.request(server)
.put('/' + savedProject._id + '/requests/' + request_id + '/tag' )
.auth(email, pwd)
.send(tags)
.end((err, res) => {
if (err) { console.log("err: ", err) };
if (log) { console.log("res.body: ", res.body) };
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.tags).to.have.length(2);
expect(res.body.tags[0].tag).to.equal('tag1');
expect(res.body.tags[1].tag).to.equal('tag2');
let tags2 = [
{ tag: "tag2", color: "#43B1F2"},
{ tag: "tag3", color: "#43B1F2"}
]
// Second Step: add more 2 tags of which one already existant in the conversation
chai.request(server)
.put('/' + savedProject._id + '/requests/' + request_id + '/tag')
.auth(email, pwd)
.send(tags2)
.end((err, res) => {
if (err) { console.log("err: ", err) };
if (log) { console.log("res.body: ", res.body) };
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.tags).to.have.length(3);
expect(res.body.tags[0].tag).to.equal('tag1');
expect(res.body.tags[1].tag).to.equal('tag2');
expect(res.body.tags[2].tag).to.equal('tag3');
done();
})
})
});
});
});
});
// mocha test/requestRoute.js --grep 'remove-tag-from-conversation'
it('remove-tag-from-conversation', function (done) {
var email = "test-request-create-" + Date.now() + "@email.com";
var pwd = "pwd";
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
projectService.create("request-create", savedUser._id, { email: { template: { assignedRequest: "123" } } }).then(function (savedProject) {
chai.request(server)
.post('/' + savedProject._id + '/requests/')
.auth(email, pwd)
.set('content-type', 'application/json')
.send({ "first_text": "first_text" })
.end(function (err, res) {
if (err) { console.log("err: ", err) };
if (log) { console.log("res.body: ", res.body) };
res.should.have.status(200);
res.body.should.be.a('object');
res.body.should.have.property('request_id').not.eql(null);
let request_id = res.body.request_id;
let tags = [
{ tag: "tag1", color: "#43B1F2" },
{ tag: "tag2", color: "#43B1F2" }
]
// First Step: add 2 tags on a conversation no tagged at all
chai.request(server)
.put('/' + savedProject._id + '/requests/' + request_id + '/tag' )
.auth(email, pwd)
.send(tags)
.end((err, res) => {
if (err) { console.log("err: ", err) };
if (log) { console.log("res.body: ", res.body) };
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.tags).to.have.length(2);
expect(res.body.tags[0].tag).to.equal('tag1');
expect(res.body.tags[1].tag).to.equal('tag2');
let tags2 = [
{ tag: "tag2", color: "#43B1F2"},
{ tag: "tag3", color: "#43B1F2"}
]
// Second Step: add more 2 tags of which one already existant in the conversation
chai.request(server)
.put('/' + savedProject._id + '/requests/' + request_id + '/tag')
.auth(email, pwd)
.send(tags2)
.end((err, res) => {
if (err) { console.log("err: ", err) };
if (log) { console.log("res.body: ", res.body) };
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.tags).to.have.length(3);
expect(res.body.tags[0].tag).to.equal('tag1');
expect(res.body.tags[1].tag).to.equal('tag2');
expect(res.body.tags[2].tag).to.equal('tag3');
let tag_to_delete = res.body.tags[2];
chai.request(server)
.delete('/' + savedProject._id + '/requests/' + request_id + '/tag/' + tag_to_delete._id)
.auth(email, pwd)
.end((err, res) => {
if (err) { console.log("err: ", err) };
if (log) { console.log("res.body: ", res.body) };
res.should.have.status(200);
res.body.should.be.a('object');
expect(res.body.tags).to.have.length(2);
expect(res.body.tags[0].tag).to.equal('tag1');
expect(res.body.tags[1].tag).to.equal('tag2');
done();
})
})
})
});
});
});
}).timeout(4000);
it('remove-tag-from-unexistent-conversation', function (done) {
var email = "test-request-create-" + Date.now() + "@email.com";
var pwd =