@uportal/app-framework
Version:
Application Framework for uPortal
227 lines (201 loc) • 8.08 kB
JavaScript
/*
* Licensed to Apereo under one or more contributor license
* agreements. See the NOTICE file distributed with this work
* for additional information regarding copyright ownership.
* Apereo licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a
* copy of the License at the following location:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
;
/* eslint-env node */
/* global inject */
/* eslint promise/always-return: "off", promise/catch-or-return: "off"*/
define(['angular-mocks', 'portal'], function() {
describe('WidgetService', function() {
var widgetService;
var httpBackend;
beforeEach(function() {
module('portal');
});
beforeEach(inject(function(_widgetService_, _$httpBackend_) {
widgetService = _widgetService_;
httpBackend = _$httpBackend_;
}));
describe('WidgetExternalMessageService', function() {
var externalMessageUrl = 'externalMessageUrl';
var extneralMessageTextObjectLocation = ['result', 0, 'shortMessage'];
var externalLearnMoreUrlLocation = ['learnMoreUrl'];
var externalLearnMoreUrl = 'https://apereo.org';
var externalMessageText =
'Your account will be deactivated soon after some time.';
var externalMessageResponseObjectSuccess = {
'mesg': 'Success',
'result': [
{
'longMessage': externalMessageText,
'shortMessage': externalMessageText,
},
],
'learnMoreUrl': externalLearnMoreUrl,
};
it('If configured properly, should return message and url', function() {
var widget = {
'fname': 'widget',
'widgetExternalMessageUrl': externalMessageUrl,
'widgetExtneralMessageTextObjectLocation':
extneralMessageTextObjectLocation,
'widgetExternalMessageLearnMoreUrl':
externalLearnMoreUrlLocation,
};
httpBackend.whenGET(externalMessageUrl).respond(
externalMessageResponseObjectSuccess);
widgetService.getWidgetExternalMessage(widget).then(function(result) {
expect(result.messageText).toEqual(externalMessageText);
expect(result.learnMoreUrl).toEqual(externalLearnMoreUrl);
});
httpBackend.flush();
});
it('If extneralMessageTextObjectLocation points to a non-existent '+
'location, message should be undefined', function() {
var widget = {
'fname': 'widget',
'widgetExternalMessageUrl': externalMessageUrl,
'widgetExtneralMessageTextObjectLocation':
['foo'],
'widgetExternalMessageLearnMoreUrl':
externalLearnMoreUrlLocation,
};
httpBackend.whenGET(externalMessageUrl).respond(
externalMessageResponseObjectSuccess);
widgetService.getWidgetExternalMessage(widget).then(function(result) {
expect(result.messageText).toBeUndefined();
expect(result.learnMoreUrl).toEqual(externalLearnMoreUrl);
});
httpBackend.flush();
});
it('If external message text object is not present, '+
'text should be undefined', function() {
var widget = {
'fname': 'widget',
'widgetExternalMessageUrl': externalMessageUrl,
'widgetExtneralMessageTextObjectLocation':
extneralMessageTextObjectLocation,
'widgetExternalMessageLearnMoreUrl':
externalLearnMoreUrlLocation,
};
httpBackend.whenGET(externalMessageUrl).respond(
{
'mesg': 'Success',
'result': [
{
'longMessage': externalMessageText,
},
],
'learnMoreUrl': externalLearnMoreUrl,
});
widgetService.getWidgetExternalMessage(widget).then(function(result) {
expect(result.messageText).toBeUndefined();
expect(result.learnMoreUrl).toEqual(externalLearnMoreUrl);
});
httpBackend.flush();
});
it('If learn more url is not present, '+
'learn more url should be undefined', function() {
var widget = {
'fname': 'widget',
'widgetExternalMessageUrl': externalMessageUrl,
'widgetExtneralMessageTextObjectLocation':
extneralMessageTextObjectLocation,
'widgetExternalMessageLearnMoreUrl':
externalLearnMoreUrlLocation,
};
httpBackend.whenGET(externalMessageUrl).respond(
{
'mesg': 'Success',
'result': [
{
'longMessage': externalMessageText,
'shortMessage': externalMessageText,
},
],
});
widgetService.getWidgetExternalMessage(widget).then(function(result) {
expect(result.messageText).toEqual(externalMessageText);
expect(result.learnMoreUrl).toBeUndefined();
});
httpBackend.flush();
});
it('If extneralMessageLearnMoreObjectLocation points to a non-existent, '+
'location should be undefined', function() {
var widget = {
'fname': 'widget',
'widgetExternalMessageUrl': externalMessageUrl,
'widgetExtneralMessageTextObjectLocation':
extneralMessageTextObjectLocation,
'widgetExternalMessageLearnMoreUrl':
['bar'],
};
httpBackend.whenGET(externalMessageUrl).respond(
externalMessageResponseObjectSuccess);
widgetService.getWidgetExternalMessage(widget).then(function(result) {
expect(result.messageText).toEqual(externalMessageText);
expect(result.learnMoreUrl).toBeUndefined();
});
httpBackend.flush();
});
it('If message text or learn more url are blank or empty string, should '+
'still return empty string.', function() {
var widget = {
'fname': 'widget',
'widgetExternalMessageUrl': externalMessageUrl,
'widgetExtneralMessageTextObjectLocation':
extneralMessageTextObjectLocation,
'widgetExternalMessageLearnMoreUrl':
externalLearnMoreUrlLocation,
};
httpBackend.whenGET(externalMessageUrl).respond(
{
'mesg': 'Success',
'result': [
{
'longMessage': externalMessageText,
'shortMessage': '',
},
],
'learnMoreUrl': ' ',
});
widgetService.getWidgetExternalMessage(widget).then(function(result) {
expect(result.messageText.trim()).toEqual('');
expect(result.learnMoreUrl.trim()).toEqual('');
});
httpBackend.flush();
});
it('If learn more url is not configured, learn more url should be '+
'undefined.', function() {
var widget = {
'fname': 'widget',
'widgetExternalMessageUrl': externalMessageUrl,
'widgetExtneralMessageTextObjectLocation':
extneralMessageTextObjectLocation,
};
httpBackend.whenGET(externalMessageUrl).respond(
externalMessageResponseObjectSuccess);
widgetService.getWidgetExternalMessage(widget).then(function(result) {
expect(result.messageText).toEqual(externalMessageText);
expect(result.learnMoreUrl).toBeUndefined();
});
httpBackend.flush();
});
});
});
});