SmartIT_Extensions/BMC/smart-it-full/test/app/feed/feed-item-event-message-ren...

332 lines
12 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

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');
});
});