332 lines
12 KiB
JavaScript
332 lines
12 KiB
JavaScript
describe('Test feed event message renderer', function () {
|
||
var scope, compile, $httpBackend, relatedObject, event, metadataModel, $q, approvalModel, approvalService, i18nService;
|
||
|
||
beforeEach(module('myitsmApp', 'templates'));
|
||
beforeEach(function () {
|
||
inject(function ($compile, $rootScope, $injector, _metadataModel_, _$q_, _approvalModel_, _approvalService_, _i18nService_) {
|
||
$httpBackend = $injector.get('$httpBackend');
|
||
|
||
var getLocale = function () {
|
||
return readJSON('scripts/app/i18n/resources-locale_en.json');
|
||
};
|
||
|
||
$httpBackend.whenGET(/^scripts\/app\/i18n\/resources-locale_en.*$/).respond(getLocale());
|
||
$httpBackend.whenGET('/smartit/rest/sessionstatus?getLicenseKey=true').respond('');
|
||
$httpBackend.whenGET('/smartit/rest/serverstates').respond('');
|
||
|
||
compile = $compile;
|
||
scope = $rootScope.$new();
|
||
metadataModel = _metadataModel_;
|
||
$q = _$q_;
|
||
approvalModel = _approvalModel_;
|
||
approvalService = _approvalService_;
|
||
i18nService = _i18nService_;
|
||
});
|
||
});
|
||
|
||
beforeEach(function () {
|
||
event = {
|
||
"messageId": "48930",
|
||
"eventType": "assignment-change",
|
||
"labelTemplate": "Assigned To: {0} by {1}",
|
||
"entities": [
|
||
{
|
||
"entityId": "Allen",
|
||
"type": "person",
|
||
"displayValue": "Francie Stafford",
|
||
"entityLink": "#/person/Francie"
|
||
},
|
||
{
|
||
"entityId": "",
|
||
"type": "text",
|
||
"displayValue": "System Generated",
|
||
"entityLink": "#/text/"
|
||
}
|
||
],
|
||
"recipients": [],
|
||
"createDate": "2018-08-16T11:53:14.000Z"
|
||
};
|
||
|
||
relatedObject = {
|
||
"type": "change",
|
||
"title": "Change Request",
|
||
"id": "IDGAA5V0HGR55AP39QTSP2MUW8NEX0"
|
||
};
|
||
|
||
scope.relatedObject = new RelatedObjectVO().build(relatedObject);
|
||
scope.event = new EventVO().build(event);
|
||
scope.isUpdateFeed = true;
|
||
});
|
||
|
||
function getCompiledElement() {
|
||
var element = angular.element('<feed-item-event-message-renderer ' +
|
||
'event="event"' +
|
||
'related-object="relatedObject"' +
|
||
'is-update-feed="isUpdateFeed"' +
|
||
'> </feed-item-event-message-renderer>'),
|
||
compiledElement = compile(element)(scope);
|
||
scope.$digest();
|
||
return compiledElement;
|
||
}
|
||
|
||
it('should compile', function () {
|
||
var directiveElem = getCompiledElement(),
|
||
divElem = directiveElem[0];
|
||
expect(divElem).toBeDefined();
|
||
});
|
||
|
||
it('should display assignment change event to UI in case of assignment-change event type', function () {
|
||
var directiveElem = getCompiledElement();
|
||
expect(directiveElem[0].innerText.trim()).toBe('Assigned To: Francie Stafford by System Generated');
|
||
});
|
||
|
||
it('should display email work note to UI in case of email-worknote event type', function () {
|
||
var directiveElem,
|
||
isolatedScope;
|
||
event = {
|
||
"messageId": "49001",
|
||
"eventType": "email-worknote",
|
||
"labelTemplate": "{0} sent an email to {1} recipients",
|
||
"entities": [
|
||
{
|
||
"entityId": "Allen",
|
||
"type": "person",
|
||
"displayValue": "Allen Allbrook",
|
||
"entityLink": "#/person/Allen"
|
||
},
|
||
{
|
||
"entityId": "",
|
||
"type": "integer",
|
||
"displayValue": "2",
|
||
"entityLink": "javascript:void(0)"
|
||
}
|
||
],
|
||
"recipients": [
|
||
{
|
||
"entityId": "Bob",
|
||
"type": "person",
|
||
"displayValue": "Bob Baxter",
|
||
"entityLink": "#/person/Bob"
|
||
},
|
||
{
|
||
"entityId": "Allen",
|
||
"type": "person",
|
||
"displayValue": "Allen Allbrook",
|
||
"entityLink": "#/person/Allen"
|
||
}
|
||
],
|
||
"createDate": "2018-08-16T12:34:44.976Z"
|
||
};
|
||
|
||
scope.event = new EventVO().build(event);
|
||
directiveElem = getCompiledElement();
|
||
isolatedScope = directiveElem.isolateScope();
|
||
expect(directiveElem[0].innerText.trim()).toBe('Allen Allbrook sent an email to 2 recipients');
|
||
expect(isolatedScope.tooltipHtml).toBe('<div>email.tooltip.headerText:</div><div><a href="#/person/Bob">Bob Baxter</a>, <a href="#/person/Allen">Allen Allbrook</a></div>');
|
||
});
|
||
|
||
it('should log message if event does not have any data', function () {
|
||
var directiveElem;
|
||
scope.event = null;
|
||
spyOn(console, 'log');
|
||
directiveElem = getCompiledElement();
|
||
expect(console.log).toHaveBeenCalledWith('No information about system event.');
|
||
expect(directiveElem[0].innerText.trim()).toBe('');
|
||
});
|
||
|
||
it('should fetch metadata response if entity type is status or priority', function () {
|
||
spyOn(metadataModel, 'getMetadataByType').and.callFake(function () {
|
||
var deferred = $q.defer();
|
||
deferred.resolve(true);
|
||
return deferred.promise;
|
||
});
|
||
|
||
event = {
|
||
"messageId": "48928",
|
||
"eventType": "status-change",
|
||
"labelTemplate": "Status Marked: {0} by {1}",
|
||
"entities": [
|
||
{
|
||
"entityId": "",
|
||
"type": "status",
|
||
"displayValue": "Closed",
|
||
"entityLink": "#/status/"
|
||
},
|
||
{
|
||
"entityId": "Allen",
|
||
"type": "person",
|
||
"displayValue": "Allen Allbrook",
|
||
"entityLink": "#/person/Allen"
|
||
}
|
||
],
|
||
"recipients": [],
|
||
"createDate": "2018-08-17T22:11:25.000Z"
|
||
};
|
||
scope.event = new EventVO().build(event);
|
||
getCompiledElement();
|
||
expect(metadataModel.getMetadataByType).toHaveBeenCalledWith('change');
|
||
});
|
||
|
||
it('should specific styles to colorize "SLA Alert:" in case of sla-change event', function () {
|
||
var directiveElem;
|
||
event = {
|
||
"messageId": "48919",
|
||
"eventType": "sla-change",
|
||
"labelTemplate": "SLA Alert: Due in {0} for {1}",
|
||
"entities": [
|
||
{
|
||
"entityId": "",
|
||
"type": "time",
|
||
"displayValue": 1534853828,
|
||
"entityLink": "#/time/"
|
||
},
|
||
{
|
||
"entityId": "GGP000000000021",
|
||
"type": "group",
|
||
"displayValue": "US Support 1",
|
||
"entityLink": "#/group/GGP000000000021"
|
||
}
|
||
],
|
||
"recipients": [],
|
||
"createDate": new Date("2018-08-20T06:17:37.000Z")
|
||
};
|
||
scope.event = new EventVO().build(event);
|
||
directiveElem = getCompiledElement();
|
||
expect(directiveElem[0].innerText.trim()).toBe('SLA Alert: Due in a day for US Support 1');
|
||
expect(directiveElem.find('.system-event-message__sla-change').length).toBe(1);
|
||
});
|
||
|
||
it('should add a link of show approvers in case of approval accept event and should show dialog on click of it', function () {
|
||
var directiveElem,
|
||
isolateScope,
|
||
data = {
|
||
"approvalList": {
|
||
"closed": [
|
||
{
|
||
"type": "person",
|
||
"status": {
|
||
"value": "Approved",
|
||
"name": "approved"
|
||
},
|
||
"approver": {
|
||
"type": "person",
|
||
"fullName": "Mary Mann"
|
||
}
|
||
}
|
||
],
|
||
"open": [],
|
||
"rejected": []
|
||
}
|
||
};
|
||
event = {
|
||
"messageId": "65002",
|
||
"eventType": "approval-accept-event",
|
||
"labelTemplate": "{0} approved the change request with rationale: {1}",
|
||
"entities": [
|
||
{
|
||
"entityId": "Mary",
|
||
"type": "person",
|
||
"displayValue": "Mary Mann",
|
||
"entityLink": "#/person/Mary"
|
||
},
|
||
{
|
||
"entityId": "",
|
||
"type": "text",
|
||
"displayValue": "",
|
||
"entityLink": "#/text/"
|
||
}
|
||
],
|
||
"recipients": [],
|
||
"createDate": "2018-08-20T09:53:09.000Z"
|
||
};
|
||
scope.event = new EventVO().build(event);
|
||
scope.isUpdateFeed = false;
|
||
spyOn(approvalModel, 'getListOfApprovers').and.callFake(function () {
|
||
var deferred = $q.defer();
|
||
deferred.resolve(data);
|
||
return deferred.promise;
|
||
});
|
||
spyOn(approvalService, 'showApproversDialog');
|
||
spyOn(i18nService, 'getLocalizedString').and.callFake(function (input) {
|
||
if(input == 'approval.approversList.labels.showList') {
|
||
return 'Show approvers';
|
||
} else {
|
||
return input;
|
||
}
|
||
});
|
||
directiveElem = getCompiledElement();
|
||
isolateScope = directiveElem.isolateScope();
|
||
expect(directiveElem[0].innerText.trim()).toBe('Mary Mann approved the change request with rationale: Show approvers');
|
||
|
||
isolateScope.showApprovers(true);
|
||
isolateScope.$apply();
|
||
|
||
expect(approvalModel.getListOfApprovers).toHaveBeenCalledWith(isolateScope.relatedObject);
|
||
expect(approvalService.showApproversDialog).toHaveBeenCalledWith(data.approvalList, isolateScope.parentContext, true);
|
||
});
|
||
|
||
it('should add a link of show approvers in case of approval accept event', function () {
|
||
var directiveElem;
|
||
event = {
|
||
"messageId": "65003",
|
||
"eventType": "approval-accept-event",
|
||
"labelTemplate": "{0} approved the change request with rationale: {1}",
|
||
"entities": [
|
||
{
|
||
"entityId": "Mary",
|
||
"type": "person",
|
||
"displayValue": "Mary Mann",
|
||
"entityLink": "#/person/Mary"
|
||
},
|
||
{
|
||
"entityId": "",
|
||
"type": "text",
|
||
"displayValue": "",
|
||
"entityLink": "#/text/"
|
||
}
|
||
],
|
||
"recipients": [],
|
||
"createDate": "2018-08-20T09:53:09.000Z"
|
||
};
|
||
scope.event = new EventVO().build(event);
|
||
scope.isUpdateFeed = false;
|
||
spyOn(i18nService, 'getLocalizedString').and.callFake(function (input) {
|
||
if(input == 'approval.approversList.labels.showList') {
|
||
return 'Show approvers';
|
||
} else {
|
||
return input;
|
||
}
|
||
});
|
||
directiveElem = getCompiledElement();
|
||
expect(directiveElem[0].innerText.trim()).toBe('Mary Mann approved the change request with rationale: Show approvers');
|
||
});
|
||
|
||
it('should display asset in update feed', function () {
|
||
var directiveElem;
|
||
event = {
|
||
"messageId": "10183",
|
||
"eventType": "related-change",
|
||
"labelTemplate": "Related to {0} by {1}",
|
||
"entities": [
|
||
{
|
||
"entityId": "REHAA5V0GQBORANAMVY0WE3E1KVMX7",
|
||
"type": "asset",
|
||
"displayValue": "Sales Tracking",
|
||
"entityLink": "#/asset/REHAA5V0GQBORANAMVY0WE3E1KVMX7/BMC_BUSINESSSERVICE"
|
||
},
|
||
{
|
||
"entityId": "Allen",
|
||
"type": "person",
|
||
"displayValue": "Allen Allbrook",
|
||
"entityLink": "#/person/Allen"
|
||
}
|
||
],
|
||
"recipients": [],
|
||
"createDate": "2018-08-20T08:17:24.000Z"
|
||
};
|
||
scope.event = new EventVO().build(event);
|
||
directiveElem = getCompiledElement();
|
||
expect(directiveElem[0].innerText.trim()).toBe('Related to Sales Tracking by Allen Allbrook');
|
||
});
|
||
});
|