aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/widget/toolbar-spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/web/gui/src/main/webapp/tests/app/fw/widget/toolbar-spec.js')
-rw-r--r--framework/src/onos/web/gui/src/main/webapp/tests/app/fw/widget/toolbar-spec.js180
1 files changed, 180 insertions, 0 deletions
diff --git a/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/widget/toolbar-spec.js b/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/widget/toolbar-spec.js
new file mode 100644
index 00000000..83fd042e
--- /dev/null
+++ b/framework/src/onos/web/gui/src/main/webapp/tests/app/fw/widget/toolbar-spec.js
@@ -0,0 +1,180 @@
+/*
+ * 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;
+
+ 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;
+ }));
+
+ beforeEach(function () {
+ // panel service expects #floatpanels div into which panels are placed
+ d3.select('body').append('div').attr('id', 'floatpanels');
+ tbs.init();
+ ps.init();
+ });
+
+ afterEach(function () {
+ tbs.init();
+ ps.init();
+ d3.select('#floatpanels').remove();
+ });
+
+ function nullFunc() { }
+
+ 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 when no id is given', function () {
+ spyOn($log, 'warn');
+ expect(tbs.createToolbar()).toBeNull();
+ expect($log.warn).toHaveBeenCalledWith('createToolbar: ' +
+ 'no ID given: [undefined]');
+ });
+
+ it('should warn when a duplicate id is given', function () {
+ spyOn($log, 'warn');
+ expect(tbs.createToolbar('test')).toBeTruthy();
+ expect(tbs.createToolbar('test')).toBeNull();
+ expect($log.warn).toHaveBeenCalledWith('createToolbar: ' +
+ 'duplicate ID given: [test]');
+ });
+
+ it('should verify the toolbar arrow div exists', function () {
+ tbs.createToolbar('test');
+
+ // NOTE: toolbar service prefixes id with 'toolbar-'
+ var tbar = d3.select('#toolbar-test'),
+ arrow = tbar.select('.tbar-arrow');
+
+ expect(arrow.size()).toBe(1);
+ expect(arrow.select('svg').size()).toBe(1);
+ expect(arrow.select('svg').select('g').select('use')
+ .attr('xlink:href')).toEqual('#triangleUp');
+ });
+
+
+ it('should create a button', function () {
+ spyOn($log, 'warn');
+ var toolbar = tbs.createToolbar('foo'),
+ btn = toolbar.addButton('btn0', 'gid');
+ expect(btn).not.toBeNull();
+ expect(btn.id).toBe('toolbar-foo-btn0');
+ expect($log.warn).not.toHaveBeenCalled();
+ });
+
+ it('should not create an item with a duplicate id', function () {
+ spyOn($log, 'warn');
+ var toolbar = tbs.createToolbar('foo'),
+ btn = toolbar.addButton('btn0', 'gid'),
+ dup;
+ expect(btn).not.toBeNull();
+ expect(btn.id).toBe('toolbar-foo-btn0');
+
+ dup = toolbar.addButton('btn0', 'gid');
+ expect($log.warn).toHaveBeenCalledWith('addButton: duplicate ID:', 'btn0');
+ expect(dup).toBeNull();
+
+ dup = toolbar.addToggle('btn0', 'gid');
+ expect($log.warn).toHaveBeenCalledWith('addToggle: duplicate ID:', 'btn0');
+ expect(dup).toBeNull();
+
+ dup = toolbar.addRadioSet('btn0', []);
+ expect($log.warn).toHaveBeenCalledWith('addRadioSet: duplicate ID:', 'btn0');
+ expect(dup).toBeNull();
+ });
+
+ it('should create a toggle', function () {
+ spyOn($log, 'warn');
+ var toolbar = tbs.createToolbar('foo'),
+ tog = toolbar.addButton('tog0', 'gid');
+ expect(tog).not.toBeNull();
+ expect(tog.id).toBe('toolbar-foo-tog0');
+ expect($log.warn).not.toHaveBeenCalled();
+ });
+
+ it('should create a radio button set', function () {
+ spyOn($log, 'warn');
+ var toolbar = tbs.createToolbar('foo'),
+ rset = [
+ { gid: 'crown', cb: nullFunc, tooltip: 'A Crown' },
+ { gid: 'bird', cb: nullFunc, tooltip: 'A Bird' }
+ ],
+ rad = toolbar.addRadioSet('rad0', rset);
+ expect(rad).not.toBeNull();
+ expect(rad.selectedIndex()).toBe(0);
+ expect($log.warn).not.toHaveBeenCalled();
+ });
+
+ it('should create a separator div', function () {
+ spyOn($log, 'warn');
+ var toolbar = tbs.createToolbar('foo'),
+ tbar = d3.select('#toolbar-foo');
+
+ toolbar.addSeparator();
+ expect($log.warn).not.toHaveBeenCalled();
+
+ expect(tbar.select('.separator').size()).toBe(1);
+ });
+
+ it('should add another row of buttons', function () {
+ var toolbar = tbs.createToolbar('foo'),
+ tbar = d3.select('#toolbar-foo'),
+ rows;
+ toolbar.addButton('btn0', 'gid');
+ toolbar.addRow();
+ toolbar.addButton('btn1', 'gid');
+
+ rows = tbar.selectAll('.tbar-row');
+ expect(rows.size()).toBe(2);
+ rows.each(function (d, i) {
+ expect(d3.select(this)
+ .select('div')
+ .attr('id','toolbar-foo-btn' + i)
+ .empty())
+ .toBe(false);
+ });
+ });
+
+ it('should not add a row if current row is empty', function () {
+ var toolbar = tbs.createToolbar('foo');
+ expect(toolbar.addRow()).toBeNull();
+ toolbar.addButton('btn0', 'gid');
+ expect(toolbar.addRow()).not.toBeNull();
+ expect(toolbar.addRow()).toBeNull();
+ });
+
+});