mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-29 10:21:18 -06:00
c53831037c
The navigation.js has been modified to make it more abstract, i.e. unaware of entity facets. The nav_update_tabs() has been modified such that it activates and updates the tabs based on the current state stored in the URL. The facets are now handled in entity.js. The ipa_entity_setup() has been modified to update the facets based on the current state and cached state. The navigation.js also has been modified to be more class-like. The nav_create() has been modified to store the tab configuration and the tab container in internal variables nav_tabs_lists and nav_container. The nav_update_tabs() now can be called without any parameters. Functions nav_push_state(), nav_get_state(), and nav_remove_state() have been added to wrap BBQ API. This is to allow unit tests to replace them with mockup functions to remove dependency on BBQ.
158 lines
4.5 KiB
JavaScript
158 lines
4.5 KiB
JavaScript
/* Authors:
|
|
* Adam Young <ayoung@redhat.com>
|
|
*
|
|
* 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 = $('<div id="navigation"/>').appendTo(document.body);
|
|
var user_mock_called = false;
|
|
var group_mock_called = false;
|
|
nav_create(mock_tabs_lists, navigation, 'tabs');
|
|
ok(user_mock_called, "mock user setup was called");
|
|
ok(!group_mock_called, "mock group setup was not called because the tab is inactive");
|
|
same( navigation[0].children.length, 2, "Two Child tabs");
|
|
same( navigation[0].children[1].id, 'identity', "Identity Tab");
|
|
same( navigation[0].children[1].children[1].id, 'user', "User Tab");
|
|
same( navigation[0].children[1].children[2].id, 'group', "User Tab");
|
|
navigation.remove();
|
|
});
|
|
|
|
test("Testing nav_update_tabs() with valid index.", function() {
|
|
|
|
var orig_push_state = nav_push_state;
|
|
var orig_get_state = nav_get_state;
|
|
var orig_remove_state = nav_remove_state;
|
|
|
|
var state = {};
|
|
|
|
nav_push_state = function(params) {
|
|
$.extend(state, params);
|
|
};
|
|
nav_get_state = function(key) {
|
|
return state[key];
|
|
};
|
|
nav_remove_state = function(key) {
|
|
delete state[key];
|
|
};
|
|
|
|
var mock_tabs_lists =
|
|
[
|
|
{ name:'identity', label:'IDENTITY', children: [
|
|
{name:'one', label:'One', setup: function (){}},
|
|
{name:'two', label:'Two', setup: function (){}}
|
|
]}];
|
|
|
|
var navigation = $('<div id="navigation"/>').appendTo(document.body);
|
|
|
|
nav_create(mock_tabs_lists, navigation, 'tabs');
|
|
|
|
nav_push_state({"identity":1});
|
|
nav_update_tabs();
|
|
|
|
same(
|
|
navigation.tabs('option', 'selected'), 0,
|
|
"Active tab at level 1"
|
|
);
|
|
|
|
same(
|
|
$('#identity').tabs('option', 'selected'), 1,
|
|
"Active tab at level 2"
|
|
);
|
|
|
|
nav_remove_state("identity");
|
|
|
|
navigation.remove();
|
|
|
|
nav_push_state = orig_push_state;
|
|
nav_get_state = orig_get_state;
|
|
nav_remove_state = orig_remove_state;
|
|
});
|
|
|
|
test("Testing nav_update_tabs() with out-of-range index.", function() {
|
|
|
|
var orig_push_state = nav_push_state;
|
|
var orig_get_state = nav_get_state;
|
|
var orig_remove_state = nav_remove_state;
|
|
|
|
var state = {};
|
|
|
|
nav_push_state = function(params) {
|
|
$.extend(state, params);
|
|
};
|
|
nav_get_state = function(key) {
|
|
return state[key];
|
|
};
|
|
nav_remove_state = function(key) {
|
|
delete state[key];
|
|
};
|
|
|
|
var mock_tabs_lists =
|
|
[
|
|
{ name:'identity', label:'IDENTITY', children: [
|
|
{name:'one', label:'One', setup: function (){}},
|
|
{name:'two', label:'Two', setup: function (){}}
|
|
]}];
|
|
|
|
var navigation = $('<div id="navigation"/>').appendTo(document.body);
|
|
|
|
nav_create(mock_tabs_lists, navigation, 'tabs');
|
|
|
|
nav_push_state({"identity":2});
|
|
nav_update_tabs();
|
|
|
|
same(
|
|
navigation.tabs('option', 'selected'), 0,
|
|
"Active tab at level 1"
|
|
);
|
|
|
|
same(
|
|
$('#identity').tabs('option', 'selected'), 0,
|
|
"Active tab at level 2"
|
|
);
|
|
|
|
nav_remove_state("identity");
|
|
|
|
navigation.remove();
|
|
|
|
nav_push_state = orig_push_state;
|
|
nav_get_state = orig_get_state;
|
|
nav_remove_state = orig_remove_state;
|
|
});
|