blob: 179c011245a8da3dc44314b95c9e1a4423d345d4 [file] [log] [blame]
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.
*/
/*
ONOS GUI -- Widget -- Toolbar Service - Unit Tests
*/
describe('factory: fw/widget/toolbar.js', function () {
var $log, fs, tbs, ps, bns, is,
d3Elem;
beforeEach(module('onosWidget', 'onosUtil', 'onosLayer', 'onosSvg'));
beforeEach(inject(function (_$log_, FnService, ToolbarService,
PanelService, ButtonService, IconService) {
$log = _$log_;
fs = FnService;
tbs = ToolbarService;
ps = PanelService;
bns = ButtonService;
is = IconService;
}));
// TODO: figure out solution for calling tests with new info instead of calling init
beforeEach(function () {
d3Elem = d3.select('body').append('div').attr('id', 'floatpanels');
tbs.init();
ps.init();
});
afterEach(function () {
d3.select('#floatpanels').remove();
tbs.init();
ps.init();
});
it('should define ToolbarService', function () {
expect(tbs).toBeDefined();
});
it('should define api functions', function () {
expect(fs.areFunctions(tbs, [
'init',
'createToolbar', 'destroyToolbar'
])).toBeTruthy();
});
it('should warn if createToolbar id is invalid', function () {
spyOn($log, 'warn');
expect(tbs.createToolbar()).toBeNull();
expect($log.warn).toHaveBeenCalledWith('createToolbar: no ID given');
expect(tbs.createToolbar('test')).toBeTruthy();
expect(tbs.createToolbar('test')).toBeNull();
expect($log.warn).toHaveBeenCalledWith('createToolbar: ID already exists');
});
it('should create an unpopulated toolbar', function () {
spyOn($log, 'warn');
expect(tbs.createToolbar('test')).toBeTruthy();
expect($log.warn).not.toHaveBeenCalled();
});
it('should verify the toolbar arrow div exists', function () {
tbs.createToolbar('test');
var arrow = d3Elem.select('.tbarArrow');
expect(arrow).toBeTruthy();
expect(arrow.select('svg')).toBeTruthy();
expect(arrow.select('svg').select('g')
.classed('tableColSortAsc')).toBeTruthy();
});
it('should create a button', function () {
spyOn($log, 'warn');
var toolbar = tbs.createToolbar('test'),
btn = toolbar.addButton('btn0', 'gid', function () {});
expect(btn).not.toBeNull();
expect(btn.id).toBe('tbar-test-btn0');
expect($log.warn).not.toHaveBeenCalled();
});
it('should not create a button with a duplicate id', function () {
spyOn($log, 'warn');
var toolbar = tbs.createToolbar('test'),
btn = toolbar.addButton('btn0', 'gid', function () {}),
btn1 = toolbar.addButton('btn0', 'gid', function () {});
expect(btn).not.toBeNull();
expect(btn.id).toBe('tbar-test-btn0');
expect($log.warn).toHaveBeenCalledWith('addButton: ID already exists');
expect(btn1).toBeNull();
});
it('should create a toggle', function () {
spyOn($log, 'warn');
var toolbar = tbs.createToolbar('test'),
tog = toolbar.addButton('tog0', 'gid', false, function () {});
expect(tog).not.toBeNull();
expect(tog.id).toBe('tbar-test-tog0');
expect($log.warn).not.toHaveBeenCalled();
});
it('should not create a toggle with a duplicate id', function () {
spyOn($log, 'warn');
var toolbar = tbs.createToolbar('test'),
tog = toolbar.addToggle('tog0', 'gid', false, function () {}),
tog1 = toolbar.addToggle('tog0', 'gid', true, function () {});
expect(tog).not.toBeNull();
expect(tog.id).toBe('tbar-test-tog0');
expect($log.warn).toHaveBeenCalledWith('addToggle: ID already exists');
expect(tog1).toBeNull();
});
it('should create a radio button set', function () {
spyOn($log, 'warn');
var toolbar = tbs.createToolbar('test'),
rset = [
{ gid: 'crown', cb: function () {}, tooltip: 'nothing' },
{ gid: 'bird', cb: function () {}, tooltip: 'nothing' }
],
rad = toolbar.addRadioSet('rad0', rset);
expect(rad).not.toBeNull();
expect(rad.rads[0].id).toBe('tbar-test-rad0-0');
expect(rad.rads[1].id).toBe('tbar-test-rad0-1');
expect($log.warn).not.toHaveBeenCalled();
});
it('should create a separator div', function () {
spyOn($log, 'warn');
var toolbar = tbs.createToolbar('test'),
sep = toolbar.addSeparator();
expect(sep).not.toBeNull();
expect($log.warn).not.toHaveBeenCalled();
expect(d3Elem.select('.sep')).toBeTruthy();
expect(d3Elem.select('.sep').style('width')).toBe('2px');
});
it('should not append to a destroyed toolbar', function () {
spyOn($log, 'warn');
var toolbar = tbs.createToolbar('test');
expect(toolbar).not.toBeNull();
tbs.destroyToolbar('tbar-test');
expect(toolbar.addButton('btn', 'gid', function () {})).toBeNull();
expect($log.warn).toHaveBeenCalledWith('Button cannot append to div');
});
});