UNPKG

@tiledesk/tiledesk-server

Version:
1,058 lines (820 loc) 84.2 kB
//During the test the env variable is set to test process.env.NODE_ENV = 'test'; let chai = require('chai'); chai.config.includeStack = true; var expect = chai.expect; var assert = chai.assert; let should = chai.should(); var config = require('../config/database'); var mongoose = require('mongoose'); var winston = require('../config/winston'); let log = false; // var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI; // if (!databaseUri) { // console.log('DATABASE_URI not specified, falling back to localhost.'); // } // mongoose.connect(databaseUri || config.database); mongoose.connect(config.databasetest); require('../services/mongoose-cache-fn')(mongoose); var requestService = require('../services/requestService'); var messageService = require('../services/messageService'); var projectService = require('../services/projectService'); var projectUserService = require('../services/projectUserService'); var departmentService = require('../services/departmentService'); var leadService = require('../services/leadService'); var userService = require('../services/userService'); var Request = require("../models/request"); var Group = require("../models/group"); var Project_user = require("../models/project_user"); // var Tag = require('../models/tag'); var requestEvent = require('../event/requestEvent'); var { QuoteManager } = require('../services/QuoteManager'); const projectMock = require('./mock/projectMock'); // CONNECT REDIS - CHECK IT const { TdCache } = require('../utils/TdCache'); let tdCache = new TdCache({ host: process.env.CACHE_REDIS_HOST || '127.0.0.1', port: process.env.CACHE_REDIS_PORT || '6379', password: process.env.CACHE_REDIS_PASSWORD || undefined }); tdCache.connect(); // var redis = require('redis') // var redis_client; // connectRedis(); // function connectRedis() { // console.log(">>> connectRedis for test") // redis_client = redis.createClient({ // host: "127.0.0.1", // port: 6379, // }); // redis_client.on('error', err => { // winston.info('(wab) Connect Redis Error ' + err); // }) // redis_client.on('ready', () => { // winston.info("(wab) Redis ready!") // }) // } describe('RequestService', function () { // var userid = "5badfe5d553d1844ad654072"; // mocha test/requestService.js --grep 'createObjSimple' it('createObjSimpleQuote', function (done) { // this.timeout(10000); var email = "test-request-create-" + Date.now() + "@email.com"; var pwd = "pwd"; let qm = new QuoteManager({ tdCache: tdCache }); qm.start(); userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("createWithId", savedUser.id).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function (createdLead) { var now = Date.now(); var request = { request_id: "request_id-createObjSimple-" + 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 }; // attributes: { sourcePage: "https://widget-pre.tiledesk.com/v2/index.html?tiledesk_projectid=5ce3d1ceb25ad30017279999&td_draft=true" } // for quote test requestService.create(request).then(async function (savedRequest) { winston.verbose("resolve", savedRequest.toObject()); expect(savedRequest.request_id).to.equal("request_id-createObjSimple-" + now); expect(savedRequest.requester.toString()).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequest.first_text).to.equal("first_text"); expect(savedRequest.department).to.not.equal(null); expect(savedRequest.ticket_id).to.equal(1); expect(savedRequest.status).to.equal(200); expect(savedRequest.participants).to.have.lengthOf(1); expect(savedRequest.participants).to.contains(userid); expect(savedRequest.participantsAgents).to.contains(userid); expect(savedRequest.participantsBots).to.have.lengthOf(0); expect(savedRequest.hasBot).to.equal(false); expect(savedRequest.participants[0].toString()).to.equal(userid); expect(savedRequest.participantsAgents[0].toString()).to.equal(userid); expect(savedRequest.assigned_at).to.not.equal(null); expect(savedRequest.snapshot.department.name).to.not.equal(null); expect(savedRequest.snapshot.agents).to.have.lengthOf(1); expect(savedRequest.snapshot.availableAgentsCount).to.equal(1); expect(savedRequest.snapshot.lead.fullname).to.equal("leadfullname"); expect(savedRequest.snapshot.requester.role).to.equal("owner"); expect(savedRequest.snapshot.requester.isAuthenticated).to.equal(true); expect(savedRequest.createdBy).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequest.id_project).to.equal(savedProject._id.toString()); //expect(savedRequest.attributes.sourcePage).to.equal("https://widget-pre.tiledesk.com/v2/index.html?tiledesk_projectid=5ce3d1ceb25ad30017279999&td_draft=true") setTimeout(async () => { let obj = { createdAt: new Date() } let quotes = await qm.getAllQuotes(savedProject, obj); if (log) { console.log("quotes: ", quotes); } // quotes.requests.quote.should.be.a('string'); // expect(quotes.requests.quote).to.equal('1'); done(); }, 200); }).catch(function (err) { if (log) { console.log("savedRequest.participants[0]", savedRequest.participants[0]); } assert.isNotOk(err, 'Promise error'); // done(); }); }); }); }); }).timeout(10000); it('createObjSimple', function (done) { // this.timeout(10000); var email = "test-request-create-" + Date.now() + "@email.com"; var pwd = "pwd"; let qm = new QuoteManager({ tdCache: tdCache }); qm.start(); userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("createWithId", savedUser.id).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function (createdLead) { var now = Date.now(); var request = { request_id: "request_id-createObjSimple-" + 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) { winston.verbose("resolve", savedRequest.toObject()); expect(savedRequest.request_id).to.equal("request_id-createObjSimple-" + now); expect(savedRequest.requester.toString()).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequest.first_text).to.equal("first_text"); expect(savedRequest.department).to.not.equal(null); expect(savedRequest.ticket_id).to.equal(1); expect(savedRequest.status).to.equal(200); expect(savedRequest.participants).to.have.lengthOf(1); expect(savedRequest.participants).to.contains(userid); expect(savedRequest.participantsAgents).to.contains(userid); expect(savedRequest.participantsBots).to.have.lengthOf(0); expect(savedRequest.hasBot).to.equal(false); if (log) { console.log("savedRequest.participants[0]", savedRequest.participants[0]); } expect(savedRequest.participants[0].toString()).to.equal(userid); expect(savedRequest.participantsAgents[0].toString()).to.equal(userid); expect(savedRequest.assigned_at).to.not.equal(null); if (log) { console.log("savedRequest.participants1"); } expect(savedRequest.snapshot.department.name).to.not.equal(null); expect(savedRequest.snapshot.agents).to.have.lengthOf(1); expect(savedRequest.snapshot.availableAgentsCount).to.equal(1); expect(savedRequest.snapshot.lead.fullname).to.equal("leadfullname"); expect(savedRequest.snapshot.requester.role).to.equal("owner"); expect(savedRequest.snapshot.requester.isAuthenticated).to.equal(true); // expect(savedRequest.snapshot.requester.role).to.equal("owner"); if (log) { console.log("savedRequest.participants2"); } expect(savedRequest.createdBy).to.equal(savedProjectAndPU.project_user._id.toString()); // console.log("savedProject._id", savedProject._id, typeof savedProject._id); // console.log("savedRequest.id_project", savedRequest.id_project, typeof savedRequest.id_project); expect(savedRequest.id_project).to.equal(savedProject._id.toString()); if (log) { console.log("savedRequest.participants3"); } // aiuto // expect(savedRequest.department).to.equal("requester_id1"); requestService.create(request).then(function (savedRequest) { // assert.isNotOk('No duplicate check index'); if (log) { console.log("no index check ???"); } // done(); }).catch(function (err) { if (log) { console.log("ok duplicate check index ", err); } done(); }); }).catch(function (err) { if (log) { console.log("test reject", err); } assert.isNotOk(err, 'Promise error'); // done(); }); }); }); }); }); // mocha test/requestService.js --grep 'createObjSimpleUpdateLeadUpdateSnapshot' it('createObjSimpleUpdateLeadUpdateSnapshot', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("createWithId", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function (createdLead) { var now = Date.now(); var request = { request_id: "request_idcreateObjSimpleUpdateLeadUpdateSnapshot-" + 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) { winston.info("resolve", savedRequest.toObject()); expect(savedRequest.request_id).to.equal("request_idcreateObjSimpleUpdateLeadUpdateSnapshot-" + now); expect(savedRequest.requester.toString()).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequest.first_text).to.equal("first_text"); expect(savedRequest.department).to.not.equal(null); expect(savedRequest.status).to.equal(200); expect(savedRequest.participants).to.have.lengthOf(1); expect(savedRequest.participants).to.contains(userid); expect(savedRequest.participantsAgents).to.contains(userid); expect(savedRequest.participantsBots).to.have.lengthOf(0); expect(savedRequest.hasBot).to.equal(false); if (log) { console.log("savedRequest.participants[0]", savedRequest.participants[0]); } expect(savedRequest.participants[0].toString()).to.equal(userid); expect(savedRequest.participantsAgents[0].toString()).to.equal(userid); expect(savedRequest.assigned_at).to.not.equal(null); expect(savedRequest.snapshot.department.name).to.not.equal(null); expect(savedRequest.snapshot.agents).to.have.lengthOf(1); expect(savedRequest.snapshot.availableAgentsCount).to.equal(1); expect(savedRequest.snapshot.lead.fullname).to.equal("leadfullname"); expect(savedRequest.snapshot.requester.role).to.equal("owner"); expect(savedRequest.snapshot.requester.isAuthenticated).to.equal(true); // expect(savedRequest.snapshot.requester.role).to.equal("owner"); expect(savedRequest.createdBy).to.equal(savedProjectAndPU.project_user._id.toString()); // console.log("savedProject._id", savedProject._id, typeof savedProject._id); // console.log("savedRequest.id_project", savedRequest.id_project, typeof savedRequest.id_project); expect(savedRequest.id_project).to.equal(savedProject._id.toString()); leadService.updateWitId(createdLead.lead_id, "fullname2", "email2@email2.com", savedProject._id).then(function (updatedLead) { expect(updatedLead.fullname).to.equal("fullname2"); expect(updatedLead.email).to.equal("email2@email2.com"); expect(updatedLead.id_project).to.equal(savedProject._id.toString()); expect(updatedLead.lead_id).to.not.equal(createdLead.id); if (log) { console.log("updatedLead", updatedLead); } requestEvent.on('request.update.snapshot.lead', function (data) { Request.findById(savedRequest._id, function (err, request) { if (err) { console.error("err", err); } expect(request.request_id).to.equal("request_idcreateObjSimpleUpdateLeadUpdateSnapshot-" + now); expect(request.snapshot.lead.fullname).to.equal("fullname2"); done(); }); }); }); }).catch(function (err) { if (log) { console.log("test reject", err); } assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); }); // mocha test/requestService.js --grep 'createObjParticipantsAgent' it('createObjParticipantsAgent', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("createWithId", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function (createdLead) { var now = Date.now(); var request = { request_id: "request_id-createObjParticipantsAgent-" + 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, participants: [userid.toString()] }; requestService.create(request).then(function (savedRequest) { winston.debug("resolve", savedRequest.toObject()); expect(savedRequest.request_id).to.equal("request_id-createObjParticipantsAgent-" + now); expect(savedRequest.requester.toString()).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequest.first_text).to.equal("first_text"); expect(savedRequest.snapshot.agents).to.have.lengthOf(1); expect(savedRequest.department).to.equal(undefined); expect(savedRequest.status).to.equal(200); expect(savedRequest.participants).to.have.lengthOf(1); expect(savedRequest.participants).to.contains(userid); expect(savedRequest.participantsAgents).to.contains(userid); expect(savedRequest.participantsBots).to.have.lengthOf(0); expect(savedRequest.hasBot).to.equal(false); if (log) { console.log("savedRequest.participants[0]", savedRequest.participants[0]); } expect(savedRequest.participants[0].toString()).to.equal(userid); expect(savedRequest.participantsAgents[0].toString()).to.equal(userid); expect(savedRequest.assigned_at).to.not.equal(null); expect(savedRequest.snapshot.department).to.equal(undefined); expect(savedRequest.snapshot.agents).to.have.lengthOf(1); expect(savedRequest.snapshot.availableAgentsCount).to.equal(1); expect(savedRequest.snapshot.lead.fullname).to.equal("leadfullname"); expect(savedRequest.snapshot.requester.role).to.equal("owner"); // expect(savedRequest.snapshot.requester.role).to.equal("owner"); expect(savedRequest.createdBy).to.equal(savedProjectAndPU.project_user._id.toString()); // console.log("savedProject._id", savedProject._id, typeof savedProject._id); // console.log("savedRequest.id_project", savedRequest.id_project, typeof savedRequest.id_project); expect(savedRequest.id_project).to.equal(savedProject._id.toString()); // aiuto // expect(savedRequest.department).to.equal("requester_id1"); done(); }).catch(function (err) { if (log) { console.log("test reject", err); } assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); }); // mocha test/requestService.js --grep 'createObjTemp' it('createObjTemp', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("createWithId", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function (createdLead) { var now = Date.now(); var request = { request_id: "request_id-createObjTemp-" + 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, status: 50 }; requestService.create(request).then(function (savedRequest) { winston.debug("resolve", savedRequest.toObject()); expect(savedRequest.request_id).to.equal("request_id-createObjTemp-" + now); expect(savedRequest.requester.toString()).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequest.first_text).to.equal("first_text"); expect(savedRequest.snapshot.agents).to.have.lengthOf(1); expect(savedRequest.department).to.not.equal(undefined); expect(savedRequest.status).to.equal(50); expect(savedRequest.participants).to.have.lengthOf(0); expect(savedRequest.participantsAgents).to.have.lengthOf(0); expect(savedRequest.participantsBots).to.have.lengthOf(0); expect(savedRequest.hasBot).to.equal(false); if (log) { console.log("savedRequest.participants[0]", savedRequest.participants[0]); } expect(savedRequest.assigned_at).to.equal(undefined); expect(savedRequest.snapshot.department.name).to.not.equal(null); expect(savedRequest.snapshot.agents).to.have.lengthOf(1); expect(savedRequest.snapshot.availableAgentsCount).to.equal(1); expect(savedRequest.snapshot.lead.fullname).to.equal("leadfullname"); expect(savedRequest.snapshot.requester.role).to.equal("owner"); // expect(savedRequest.snapshot.requester.role).to.equal("owner"); expect(savedRequest.createdBy).to.equal(savedProjectAndPU.project_user._id.toString()); // console.log("savedProject._id", savedProject._id, typeof savedProject._id); // console.log("savedRequest.id_project", savedRequest.id_project, typeof savedRequest.id_project); expect(savedRequest.id_project).to.equal(savedProject._id.toString()); // aiuto // expect(savedRequest.department).to.equal("requester_id1"); done(); }).catch(function (err) { if (log) { console.log("test reject", err); } assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); }); it('createWithIdAndCreateNewLead', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("createWithId", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function (createdLead) { var now = Date.now(); requestService.createWithIdAndRequester("request_id-createWithIdAndCreateNewLead-" + now, savedProjectAndPU.project_user._id, createdLead._id, savedProject._id, "first_text").then(function (savedRequest) { winston.debug("resolve", savedRequest.toObject()); expect(savedRequest.request_id).to.equal("request_id-createWithIdAndCreateNewLead-" + now); expect(savedRequest.requester.toString()).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequest.first_text).to.equal("first_text"); expect(savedRequest.snapshot.agents).to.have.lengthOf(1); expect(savedRequest.status).to.equal(200); expect(savedRequest.participants).to.have.lengthOf(1); expect(savedRequest.participants).to.contains(userid); expect(savedRequest.participantsAgents).to.contains(userid); expect(savedRequest.participantsBots).to.have.lengthOf(0); expect(savedRequest.hasBot).to.equal(false); if (log) { console.log("savedRequest.participants[0]", savedRequest.participants[0]); } expect(savedRequest.participants[0].toString()).to.equal(userid); expect(savedRequest.participantsAgents[0].toString()).to.equal(userid); expect(savedRequest.assigned_at).to.not.equal(null); expect(savedRequest.snapshot.department.name).to.not.equal(null); expect(savedRequest.snapshot.agents).to.not.equal(null); expect(savedRequest.snapshot.availableAgentsCount).to.equal(1); expect(savedRequest.createdBy).to.equal(savedProjectAndPU.project_user._id.toString()); // console.log("savedProject._id", savedProject._id, typeof savedProject._id); // console.log("savedRequest.id_project", savedRequest.id_project, typeof savedRequest.id_project); expect(savedRequest.id_project).to.equal(savedProject._id.toString()); // aiuto // expect(savedRequest.department).to.equal("requester_id1"); done(); }).catch(function (err) { if (log) { console.log("test reject", err); } assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); }); it('createWithIdAndCreateNewLeadAndCheckRequestEvent', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("createWithId", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; var now = Date.now(); leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function (createdLead) { requestEvent.on('request.create', function (savedRequest) { if (savedRequest.request_id === "createWithIdAndCreateNewLeadAndCheckRequestEvent-" + now) { if (log) { console.log("savedRequest", savedRequest.toJSON()); } winston.debug("resolve", savedRequest.toObject()); expect(savedRequest.request_id).to.equal("createWithIdAndCreateNewLeadAndCheckRequestEvent-" + now); expect(savedRequest.requester._id.toString()).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequest.first_text).to.equal("first_text"); expect(savedRequest.snapshot.agents).to.have.lengthOf(1); expect(savedRequest.status).to.equal(200); expect(savedRequest.participants).to.have.lengthOf(1); expect(savedRequest.participants).to.contains(userid); expect(savedRequest.participantsAgents).to.contains(userid); expect(savedRequest.participantsBots).to.have.lengthOf(0); expect(savedRequest.hasBot).to.equal(false); if (log) { console.log("savedRequest.participants[0]", savedRequest.participants[0]); } expect(savedRequest.participants[0].toString()).to.equal(userid); expect(savedRequest.createdBy).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequest.participatingAgents.length).to.equal(1); expect(savedRequest.participatingBots.length).to.equal(0); expect(savedRequest.snapshot.availableAgentsCount).to.equal(1); // console.log("savedProject._id", savedProject._id, typeof savedProject._id); // console.log("savedRequest.id_project", savedRequest.id_project, typeof savedRequest.id_project); expect(savedRequest.id_project).to.equal(savedProject._id.toString()); // aiuto // expect(savedRequest.department).to.equal("requester_id1"); done(); } }); requestService.createWithIdAndRequester("createWithIdAndCreateNewLeadAndCheckRequestEvent-" + now, savedProjectAndPU.project_user._id, createdLead._id, savedProject._id, "first_text").then(function (savedRequest) { }).catch(function (err) { if (log) { console.log("test reject", err); } assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); }); // it('createWithIdLead', function (done) { // // this.timeout(10000); // projectService.create("createWithId", userid).then(function(savedProject) { // leadService.createIfNotExists("leadfullname", "email@email.com", savedProject._id).then(function(lead) { // // createWithId(request_id, requester_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status) { // requestService.createWithId("request_id1", lead._id, savedProject._id, "first_text").then(function(savedRequest) { // leadService.findByEmail("email@email.com", savedProject._id).then(function(lead) { // winston.debug("resolve", savedRequest); // expect(savedRequest.request_id).to.equal("request_id1"); // expect(savedRequest.requester_id).to.equal(lead._id.toString()); // expect(savedRequest.first_text).to.equal("first_text"); // expect(savedRequest.agents).to.have.lengthOf(1); // expect(savedRequest.status).to.equal(200); // expect(savedRequest.participants).to.contains(userid); // expect(savedRequest.createdBy).to.equal(lead._id.toString()); // // console.log("savedProject._id", savedProject._id, typeof savedProject._id); // // console.log("savedRequest.id_project", savedRequest.id_project, typeof savedRequest.id_project); // expect(savedRequest.id_project).to.equal(savedProject._id.toString()); // // aiuto // // expect(savedRequest.department).to.equal("requester_id1"); // done(); // }).catch(function(err) { // console.log("test reject"); // assert.isNotOk(err,'Promise error'); // done(); // }); // }); // }); // }); // }); it('createWithIdAndCreatedBy', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("createWithIdAndCreatedBy", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; var now = Date.now(); // createWithIdAndRequester(request_id, project_user_id, lead_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status, createdBy, attributes) { requestService.createWithIdAndRequester("request_id-createWithIdAndCreatedBy-" + now, savedProjectAndPU.project_user._id, null, savedProject._id, "first_text", null, null, null, null, null, "user1").then(function (savedRequest) { expect(savedRequest.request_id).to.equal("request_id-createWithIdAndCreatedBy-" + now); expect(savedRequest.requester.toString()).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequest.first_text).to.equal("first_text"); expect(savedRequest.snapshot.agents).to.have.lengthOf(1); expect(savedRequest.status).to.equal(200); expect(savedRequest.participants).to.contains(userid); expect(savedRequest.participantsAgents).to.contains(userid); expect(savedRequest.participantsBots).to.have.lengthOf(0); expect(savedRequest.hasBot).to.equal(false); expect(savedRequest.createdBy).to.equal("user1"); // console.log("savedProject._id", savedProject._id, typeof savedProject._id); // console.log("savedRequest.id_project", savedRequest.id_project, typeof savedRequest.id_project); expect(savedRequest.id_project).to.equal(savedProject._id.toString()); // aiuto // expect(savedRequest.department).to.equal("requester_id1"); done(); }) .catch(function (err) { if (log) { console.log("savedRequest.participants[0]", savedRequest.participants[0]); } assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); // mocha test/requestService.js --grep 'createWithWrongDepartmentId' it('createWithWrongDepartmentId', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("createWithWrongDepartmentId", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; var now = Date.now(); // createWithIdAndRequester(request_id, project_user_id, lead_id, id_project, first_text, departmentid, sourcePage, language, userAgent, status, createdBy, attributes) { requestService.createWithIdAndRequester("request_idcreateWithWrongDepartmentId-" + now, savedProjectAndPU.project_user._id, null, savedProject._id, "first_text", "5ebd890b3f2702001915c89e", null, null, null, null, "user1").then(function (savedRequest) { }) .catch(function (err) { if (log) { console.log("savedRequest.participants[0]", savedRequest.participants[0]); } done(); }); }); }); }); it('createWithIdWithPooledDepartment', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("createWithIdWithPooledDepartment", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; departmentService.create("PooledDepartment-for-createWithIdWith-createWithIdWithPooledDepartment", savedProject._id, 'pooled', userid).then(function (createdDepartment) { var now = Date.now(); requestService.createWithIdAndRequester("request_id-createWithIdWithPooledDepartment-" + now, savedProjectAndPU.project_user._id, null, savedProject._id, "first_text", createdDepartment._id).then(function (savedRequest) { winston.debug("resolve savedRequest"); expect(savedRequest.request_id).to.equal("request_id-createWithIdWithPooledDepartment-" + now); expect(savedRequest.requester.toString()).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequest.first_text).to.equal("first_text"); expect(savedRequest.snapshot.agents).to.have.lengthOf(1); expect(savedRequest.status).to.equal(100); expect(savedRequest.participants).to.have.lengthOf(0); expect(savedRequest.participantsAgents).to.have.lengthOf(0); expect(savedRequest.participantsBots).to.have.lengthOf(0); expect(savedRequest.hasBot).to.equal(false); expect(savedRequest.id_project).to.equal(savedProject._id.toString()); expect(savedRequest.department.toString()).to.equal(createdDepartment._id.toString()); done(); }).catch(function (err) { if (log) { console.log("savedRequest.participants[0]", savedRequest.participants[0]); } assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); }); // mocha test/requestService.js --grep 'updateWaitingTimeRequest' it('updateWaitingTimeRequest', function (done) { this.timeout(1000); var email = "test-request-create-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { var userid = savedUser.id; var messageSender = "5badfe5d553d1844ad654072"; projectService.createAndReturnProjectAndProjectUser("test1", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; var now = Date.now(); requestService.createWithIdAndRequester("request_id-waitingTimeRequest-" + now, savedProjectAndPU.project_user._id, null, savedProject._id, "first_text").then(function (savedRequest) { setTimeout(function () { Promise.all([ messageService.create(messageSender, "test sender", savedRequest.request_id, "hello1", savedProject._id, messageSender), messageService.create(messageSender, "test sender", savedRequest.request_id, "hello2", savedProject._id, messageSender)]).then(function (all) { requestService.updateWaitingTimeByRequestId(savedRequest.request_id, savedProject._id, true).then(function (upRequest) { var maxWaitingTime = Date.now() - upRequest.createdAt; if (log) { console.log("resolve closedRequest", upRequest.toObject(), maxWaitingTime); } expect(upRequest.status).to.equal(200); // console.log("1") // expect(upRequest.status).to.equal(300); expect(upRequest.waiting_time).to.not.equal(null); // console.log("2") expect(upRequest.waiting_time).to.gte(300); // console.log("3") expect(upRequest.waiting_time).to.lte(maxWaitingTime); // console.log("4") expect(upRequest.first_response_at).to.not.equal(null); // console.log("5") done(); }).catch(function (err) { winston.error("test reject", err); assert.isNotOk(err, 'Promise error'); done(); }); }); }, 300); }); }); }); }); // mocha test/requestService.js --grep 'closeRequest' it('closeRequest', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("test1", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; var now = Date.now(); requestService.createWithIdAndRequester("request_id-closeRequest-" + now, savedProjectAndPU.project_user._id, null, savedProject._id, "first_text").then(function (savedRequest) { Promise.all([ messageService.create("5badfe5d553d1844ad654072", "test sender", savedRequest.request_id, "hello1", savedProject._id, "5badfe5d553d1844ad654072"), messageService.create("5badfe5d553d1844ad654072", "test sender", savedRequest.request_id, "hello2", savedProject._id, "5badfe5d553d1844ad654072")]).then(function (all) { // closeRequestByRequestId(request_id, id_project, skipStatsUpdate, notify, closed_by) requestService.closeRequestByRequestId(savedRequest.request_id, savedProject._id, false, true, "user1").then(function (closedRequest) { winston.debug("resolve closedRequest", closedRequest.toObject()); expect(closedRequest.status).to.equal(1000); expect(closedRequest.closed_at).to.not.equal(null); expect(closedRequest.transcript).to.contains("hello1"); expect(closedRequest.transcript).to.contains("hello2"); expect(closedRequest.snapshot.agents).to.equal(undefined); expect(closedRequest.closed_by).to.equal("user1"); done(); }).catch(function (err) { winston.error("test reject", err); assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); }); }); // mocha test/requestService.js --grep 'closeRequestForce' it('closeRequestForce', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("test1", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; var now = Date.now(); requestService.createWithIdAndRequester("request_id-closeRequest-" + now, savedProjectAndPU.project_user._id, null, savedProject._id, "first_text").then(function (savedRequest) { Promise.all([ messageService.create("5badfe5d553d1844ad654072", "test sender", savedRequest.request_id, "hello1", savedProject._id, "5badfe5d553d1844ad654072"), messageService.create("5badfe5d553d1844ad654072", "test sender", savedRequest.request_id, "hello2", savedProject._id, "5badfe5d553d1844ad654072")]).then(function (all) { // closeRequestByRequestId(request_id, id_project, skipStatsUpdate, notify, closed_by, force) requestService.closeRequestByRequestId(savedRequest.request_id, savedProject._id, false, true, "user1").then(function (closedRequest) { winston.debug("resolve closedRequest", closedRequest.toObject()); expect(closedRequest.status).to.equal(1000); expect(closedRequest.closed_at).to.not.equal(null); expect(closedRequest.transcript).to.contains("hello1"); expect(closedRequest.transcript).to.contains("hello2"); expect(closedRequest.snapshot.agents).to.equal(undefined); expect(closedRequest.closed_by).to.equal("user1"); requestService.closeRequestByRequestId(savedRequest.request_id, savedProject._id, false, true, "user1", true).then(function (closedRequest) { expect(closedRequest.status).to.equal(1000); done(); }); }).catch(function (err) { winston.error("test reject", err); assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); }); }); it('closeRequestAndSendTranscript', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("test1", userid, { email: { autoSendTranscriptToRequester: true } }).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; leadService.createIfNotExists("leadfullname", "andrea.leo@frontiere21.it", savedProject._id).then(function (createdLead) { var now = Date.now(); requestService.createWithIdAndRequester("request_id-closeRequestAndSendTranscript-" + now, savedProjectAndPU.project_user._id, createdLead._id, savedProject._id, "first_text").then(function (savedRequest) { Promise.all([ messageService.create("5badfe5d553d1844ad654072", "test sender", savedRequest.request_id, "hello1", savedProject._id, "5badfe5d553d1844ad654072"), messageService.create("5badfe5d553d1844ad654072", "test sender", savedRequest.request_id, "hello2", savedProject._id, "5badfe5d553d1844ad654072")]).then(function (all) { requestService.closeRequestByRequestId(savedRequest.request_id, savedProject._id).then(function (closedRequest) { winston.debug("resolve closedRequest", closedRequest.toObject()); expect(closedRequest.status).to.equal(1000); expect(closedRequest.closed_at).to.not.equal(null); expect(closedRequest.transcript).to.contains("hello1"); expect(closedRequest.transcript).to.contains("hello2"); expect(closedRequest.snapshot.agents).to.equal(undefined); done(); }).catch(function (err) { winston.error("test reject", err); assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); }); }); }); it('reopenRequest', 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) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("test1", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; var now = Date.now(); requestService.createWithIdAndRequester("request_id-reopenRequest-" + now, savedProjectAndPU.project_user._id, null, savedProject._id, "first_text").then(function (savedRequest) { requestService.closeRequestByRequestId(savedRequest.request_id, savedProject._id).then(function (closedRequest) { requestService.reopenRequestByRequestId(savedRequest.request_id, savedProject._id).then(function (reopenedRequest) { winston.info("resolve reopenedRequest", reopenedRequest.toObject()); //check closedRequest expect(closedRequest.status).to.equal(1000); expect(closedRequest.closed_at).to.not.equal(null); expect(closedRequest.participants).to.have.lengthOf(1); //check reopenedRequest expect(reopenedRequest.status).to.equal(200); expect(reopenedRequest.closed_at).to.not.equal(null); expect(reopenedRequest.participants).to.have.lengthOf(1); expect(reopenedRequest.snapshot.agents).to.equal(undefined); done(); }).catch(function (err) { winston.error("test reject", err); assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); }); }); // mocha test/requestService.js --grep 'addparticipant' it('addparticipant', function (done) { var email = "test-request-addparticipant-" + Date.now() + "@email.com"; var email2 = "test-request-addparticipant2-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { var userid = savedUser.id; projectService.createAndReturnProjectAndProjectUser("addparticipant-project", userid).then(function (savedProjectAndPU) { var savedProject = savedProjectAndPU.project; userService.signup(email2, pwd, "Test Firstname2", "Test lastname2").then(function (savedUser2) { // console.log("savedUser2",savedUser2); var newProject_user = new Project_user({ // _id: new mongoose.Types.ObjectId(), id_project: savedProject._id.toString(), id_user: savedUser2._id.toString(), role: "agent", user_available: false, createdBy: userid, updatedBy: userid }); return newProject_user.save(function (err, savedProject_user) { if (err) { console.log("err", err); } var now = Date.now(); requestService.createWithIdAndRequester("request_id-addparticipant-" + now, savedProjectAndPU.project_user._id, null, savedProject._id, "first_text").then(function (savedRequest) { // inserisci id valido // var member = 'agent1'; var member = savedUser2._id.toString(); // console.log("member",member) // addParticipantByRequestId(request_id, id_project, member) { requestService.addParticipantByRequestId(savedRequest.request_id, savedProject._id, member).then(function (savedRequestParticipant) { winston.info("resolve addParticipantByRequestId", savedRequestParticipant.toObject()); expect(savedRequestParticipant.request_id).to.equal("request_id-addparticipant-" + now); winston.info("savedProjectAndPU.project_user._id.toString():" + savedProjectAndPU.project_user._id.toString()); expect(savedRequestParticipant.requester._id.toString()).to.equal(savedProjectAndPU.project_user._id.toString()); expect(savedRequestParticipant.first_text).to.equal("first_text"); // expect(savedRequestParticipant.snapshot.agents).to.have.lengthOf(2); expect(savedRequestParticipant.status).to.equal(200); expect(savedRequestParticipant.participants).to.have.lengthOf(2); expect(savedRequestParticipant.participants).to.contains(userid); expect(savedRequestParticipant.participants).to.contains(member); expect(savedRequestParticipant.participantsAgents).to.have.lengthOf(2); expect(savedRequestParticipant.participantsAgents).to.contains(userid); expect(savedRequestParticipant.participantsAgents).to.contains(member); expect(savedRequestParticipant.participatingAgents).to.have.lengthOf(2); expect(savedRequestParticipant.participatingBots).to.have.lengthOf(0); expect(savedRequestParticipant.hasBot).to.equal(false); expect(savedRequestParticipant.id_project).to.equal(savedProject._id.toString()); expect(savedRequestParticipant.snapshot.agents).to.equal(undefined); done(); }).catch(function (err) { if (log) { console.log("savedRequest.participants[0]", savedRequest.participants[0]); } assert.isNotOk(err, 'Promise error'); done(); }); }); }); }); }); }); }); it('setParticipantsByRequestId', function (done) { var email = "test-request-setParticipantsByRequestId-" + Date.now() + "@email.com"; var email2 =