From 09555fae17dcd142c4b39643e3f7d376ed8d4841 Mon Sep 17 00:00:00 2001 From: Adam Young Date: Tue, 28 Sep 2010 19:20:02 -0400 Subject: tab objects Convert the tab lists to arrays of objects with four potential fields: tab[0] -> tab.name tab[1] -> tab.label tab[2] -> tab.setup or tab.children Added unit tests for nav_setup and nav_select_tab --- install/static/navigation.js | 25 ++++++----- install/static/test/all_tests.html | 4 ++ install/static/test/index.html | 2 + install/static/test/navigation_tests.html | 21 +++++++++ install/static/test/navigation_tests.js | 75 +++++++++++++++++++++++++++++++ install/static/webui.js | 50 +++++++++++---------- 6 files changed, 142 insertions(+), 35 deletions(-) create mode 100644 install/static/test/navigation_tests.html create mode 100644 install/static/test/navigation_tests.js (limited to 'install') diff --git a/install/static/navigation.js b/install/static/navigation.js index 683c8726..169729ba 100644 --- a/install/static/navigation.js +++ b/install/static/navigation.js @@ -18,6 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + function nav_create(nls, container, tabclass) { if (!container) @@ -50,21 +51,21 @@ function nav_generate_tabs(nls, container, tabclass, depth) for (var i = 0; i < nls.length; ++i) { var n = nls[i]; - var name = n[1]; - if ((ipa_objs[n[0]]) && (ipa_objs[n[0]].label)){ - name = ipa_objs[n[0]].label; + var name = n.name; + if ((ipa_objs[n.name]) && (ipa_objs[n.name].label)){ + name = ipa_objs[n.name].label; } - var li = nav_create_tab_li(n[0], name); + var li = nav_create_tab_li(n.name, name); ul.append(li); - var div = nav_create_tab_div(n[0]); + var div = nav_create_tab_div(n.name); container.append(div); - if (typeof n[2] == 'function') { - n[2](div); - } else if (n[2].length) { - nav_generate_tabs(n[2], div, tabclass, depth +1 ); + if (n.setup) { + n.setup(div); + } else if (n.children) { + nav_generate_tabs(n.children, div, tabclass, depth +1 ); } } } @@ -95,10 +96,10 @@ function nav_select_tabs(nls, container) for (var i = 0; i < nls.length; ++i) { var n = nls[i]; - var div = $('#'+n[0]); + var div = $('#'+n.name); - if (typeof n[2] != 'function' && n[2].length) { - nav_select_tabs(n[2], div); + if ( (!n.setup) && n.children) { + nav_select_tabs(n.children, div); } } } diff --git a/install/static/test/all_tests.html b/install/static/test/all_tests.html index 687bea1f..93c4de23 100644 --- a/install/static/test/all_tests.html +++ b/install/static/test/all_tests.html @@ -5,15 +5,19 @@ + + + +

Complete Test Suite

diff --git a/install/static/test/index.html b/install/static/test/index.html index 14ca7f04..5c4607ae 100644 --- a/install/static/test/index.html +++ b/install/static/test/index.html @@ -27,6 +27,8 @@
  • Core Test Suite
  • Entity Test Suite
  • Association Test Suite +
  • Navigation Test Suite + diff --git a/install/static/test/navigation_tests.html b/install/static/test/navigation_tests.html new file mode 100644 index 00000000..dbb562f1 --- /dev/null +++ b/install/static/test/navigation_tests.html @@ -0,0 +1,21 @@ + + + + Navigation Test Suite + + + + + + + + + +

    Navigation Test Suite

    +

    +
    +

    +
      +
      test markup
      + + diff --git a/install/static/test/navigation_tests.js b/install/static/test/navigation_tests.js new file mode 100644 index 00000000..16b3ae92 --- /dev/null +++ b/install/static/test/navigation_tests.js @@ -0,0 +1,75 @@ +/* Authors: + * Adam Young + * + * Copyright (C) 2010 Red Hat + * see file 'COPYING' for use and warranty information + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; version 2 only + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + + + + +test("Testing nav_create().", function() { + + var mock_tabs_lists = + [ + { name:'identity', label:'IDENTITY', children: [ + {name:'user', label:'Users', setup:mock_setup_user}, + {name:'group', label:'Users', setup:mock_setup_group}, + ]}]; + function mock_setup_user (jobj){ + user_mock_called = true; + same(jobj[0].id,'user','user id'); + same(jobj[0].nodeName,'DIV','user div'); + } + function mock_setup_group (jobj){ + group_mock_called = true; + same(jobj[0].id,'group','group id'); + same(jobj[0].nodeName,'DIV','group Div'); + + } + ipa_objs= {}; + var navigation = $('