/* * (c) Copyright 2016 Hewlett Packard Enterprise Development Company LP * * Licensed 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 * * 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. */ (function() { 'use strict'; describe('horizon.framework.util.navigations.service', function() { var service, navigations, spyElement; var imagesUrl = '/project/images/'; var breadcrumb = ['Project', 'Compute', 'Images']; var breadcrumbWithoutGroup = ['Project', 'Images']; function getNavsElement (selector) { try { // for searching element return navigations.find(selector); } catch (e) { // for creating element return $(selector); } } beforeEach(module('horizon.framework.util.navigations')); beforeEach(inject(function($injector) { service = $injector.get('horizon.framework.util.navigations.service'); navigations = angular.element( '
' + ' ' + '
  • ' + ' ' + ' Project' + ' ' + ' ' + '
  • ' + ' ' + ' ' + '
    '); spyElement = spyOn(angular, 'element').and.callFake(getNavsElement); })); afterEach(function() { spyElement.and.callThrough(); }); describe('getActivePanelUrl', function() { it('returns an empty array if no items', function() { var activeUrl = service.getActivePanelUrl(); expect(activeUrl).toBe(imagesUrl); }); }); describe('collapseAllNavigation', function() { it('collapse all nodes on navigation side bar', function() { service.collapseAllNavigation(); var hasIn = navigations.find('.in'); expect(hasIn.length).toBe(0); var collapsed = navigations.find('a.collapsed[aria-expanded=false]'); expect(collapsed.length).toBe(2); var hasActive = navigations.find('a.openstack-panel.active'); expect(hasActive.length).toBe(0); }); }); describe('expandNavigationByUrl', function() { it('expands navigation side bar and return their label of selected nodes', function() { spyOn(service, 'collapseAllNavigation').and.callThrough(); var list = service.expandNavigationByUrl(imagesUrl); expect(list).toEqual(breadcrumb); var hasIn = navigations.find('.in'); expect(hasIn.length).toBe(2); var expanded = navigations.find('a[aria-expanded=true]'); expect(expanded.length).toBe(2); var hasActive = navigations.find('a.openstack-panel.active'); expect(hasActive.length).toBe(1); }); }); describe('expandNavigationByUrl', function() { it('expands navigation side bar without panelgroup' + 'and return their label of selected nodes', function() { navigations = angular.element( '
    ' + ' ' + '
  • ' + ' ' + ' Project' + ' ' + ' ' + '
  • ' + ' ' + ' ' + '
    '); spyOn(service, 'collapseAllNavigation').and.callThrough(); var list = service.expandNavigationByUrl(imagesUrl); expect(list).toEqual(breadcrumbWithoutGroup); var hasIn = navigations.find('.in'); expect(hasIn.length).toBe(2); var expanded = navigations.find('a[aria-expanded=true]'); expect(expanded.length).toBe(1); var hasActive = navigations.find('a.openstack-panel.active'); expect(hasActive.length).toBe(1); }); }); describe('setBreadcrumb', function() { it('sets breadcrumb items from specified array', function() { service.setBreadcrumb(breadcrumb); }); }); describe('isNavigationExists', function() { it('returns true if navigation for specified URL exists', function() { var result = service.isNavigationExists('/project/images/'); expect(result).toEqual(true); }); it('returns false if navigation for specified URL does not exist', function() { var result = service.isNavigationExists('/not/found/'); expect(result).toEqual(false); }); }); }); })();