You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2014/01/14 21:57:08 UTC

git commit: updated refs/heads/master to 2893120

Updated Branches:
  refs/heads/master 4215d6975 -> 2893120f2


Remove old/obsolete UI qunit tests


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/2893120f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/2893120f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/2893120f

Branch: refs/heads/master
Commit: 2893120f2abcd640d954c7476613a6566eef344e
Parents: 4215d69
Author: Brian Federle <br...@citrix.com>
Authored: Tue Jan 14 12:56:52 2014 -0800
Committer: Brian Federle <br...@citrix.com>
Committed: Tue Jan 14 12:56:52 2014 -0800

----------------------------------------------------------------------
 ui/tests/index.html            |  61 +--
 ui/tests/test.cloudBrowser.js  | 116 ------
 ui/tests/test.core.js          |  79 ----
 ui/tests/test.detailView.js    | 799 ------------------------------------
 ui/tests/test.listView.js      | 527 ------------------------
 ui/tests/test.multiEdit.js     |  55 ---
 ui/tests/test.notifications.js | 107 -----
 7 files changed, 1 insertion(+), 1743 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2893120f/ui/tests/index.html
----------------------------------------------------------------------
diff --git a/ui/tests/index.html b/ui/tests/index.html
index fcb7305..5539e0f 100644
--- a/ui/tests/index.html
+++ b/ui/tests/index.html
@@ -34,70 +34,11 @@ under the License.
     
     <!-- jQuery -->
     <script src="../lib/jquery.js" type="text/javascript"></script>
-    <script src="../lib/jquery.easing.js" type="text/javascript"></script>
-    <script src="../lib/jquery.validate.js" type="text/javascript"></script>
-    <script src="../lib/jquery-ui/js/jquery-ui.js" type="text/javascript"></script>
-
-    <!-- Flot -->
-    <script src="../lib/excanvas.js"></script>
-    <script src="../lib/flot/jquery.flot.js" type="text/javascript"></script>
-    <script src="../lib/flot/jquery.colorhelpers.js" type="text/javascript"></script>
-    <script src="../lib/flot/jquery.flot.crosshair.js" type="text/javascript"></script>
-    <script src="../lib/flot/jquery.flot.fillbetween.js" type="text/javascript"></script>
-    <script src="../lib/flot/jquery.flot.image.js" type="text/javascript"></script>
-    <script src="../lib/flot/jquery.flot.navigate.js" type="text/javascript"></script>
-    <script src="../lib/flot/jquery.flot.pie.js" type="text/javascript"></script>
-    <script src="../lib/flot/jquery.flot.resize.js" type="text/javascript"></script>
-    <script src="../lib/flot/jquery.flot.selection.js" type="text/javascript"></script>
-    <script src="../lib/flot/jquery.flot.stack.js" type="text/javascript"></script>
-    <script src="../lib/flot/jquery.flot.symbol.js" type="text/javascript"></script>
-    <script src="../lib/flot/jquery.flot.threshold.js" type="text/javascript"></script>
-
-    <!-- UI -->
-    <script src="../scripts/ui/core.js" type="text/javascript"></script>
-    <script src="../scripts/ui/utils.js" type="text/javascript"></script>
-    <script src="../scripts/ui/events.js" type="text/javascript"></script>
-    <script src="../scripts/ui/dialog.js" type="text/javascript"></script>
-
-    <!-- UI - Widgets -->
-    <script src="../scripts/ui/widgets/multiEdit.js" type="text/javascript"></script>
-    <script src="../scripts/ui/widgets/overlay.js" type="text/javascript"></script>
-    <script src="../scripts/ui/widgets/dataTable.js" type="text/javascript"></script>
-    <script src="../scripts/ui/widgets/cloudBrowser.js" type="text/javascript"></script>
-    <script src="../scripts/ui/widgets/listView.js" type="text/javascript"></script>
-    <script src="../scripts/ui/widgets/detailView.js" type="text/javascript"></script>
-    <script src="../scripts/ui/widgets/treeView.js" type="text/javascript"></script>
-    <script src="../scripts/ui/widgets/notifications.js" type="text/javascript"></script>
-
-    <!-- Common libraries -->
-    <script src="../lib/date.js" type="text/javascript"></script>
-    <script src="../lib/jquery.cookies.js" type="text/javascript"></script>
-    <script src="../lib/jquery.timers.js" type="text/javascript"></script>
-    <script src="../lib/jquery.md5.js" type="text/javascript" ></script>
-
-    <!-- CloudStack -->
-    <script src="../scripts/ui-custom/login.js" type="text/javascript"></script>
-    <script src="../scripts/ui-custom/projects.js" type="text/javascript"></script>
-    <script src="../scripts/ui-custom/zoneChart.js" type="text/javascript"></script>
-    <script src="../scripts/ui-custom/dashboard.js" type="text/javascript"></script>
-    <script src="../scripts/ui-custom/installWizard.js" type="text/javascript"></script>
-    <script src="../scripts/ui-custom/instanceWizard.js" type="text/javascript"></script>
-    <script src="../scripts/ui-custom/ipRules.js" type="text/javascript"></script>
-    <script src="../scripts/ui-custom/enableStaticNAT.js" type="text/javascript"></script>
-    <script src="../scripts/ui-custom/securityRules.js" type="text/javascript"></script>
-    <script src="../scripts/ui-custom/recurringSnapshots.js" type="text/javascript"></script>
-    <script src="../scripts/ui-custom/physicalResources.js" type="text/javascript"></script>
-    <script src="../scripts/ui-custom/zoneWizard.js" type="text/javascript"></script>
 
     <!-- qunit -->
     <script src="../lib/qunit/qunit.js" type="text/javascript"></script>
 
     <!-- Tests -->
-    <script src="test.core.js" type="text/javascript"></script>
-    <script src="test.cloudBrowser.js" type="text/javascript"></script>
-    <script src="test.notifications.js" type="text/javascript"></script>
-    <script src="test.listView.js" type="text/javascript"></script>
-    <script src="test.detailView.js" type="text/javascript"></script>
-    <script src="test.multiEdit.js" type="text/javascript"></script>
+    <!---->
   </body>
 </html> 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2893120f/ui/tests/test.cloudBrowser.js
----------------------------------------------------------------------
diff --git a/ui/tests/test.cloudBrowser.js b/ui/tests/test.cloudBrowser.js
deleted file mode 100644
index 4a27821..0000000
--- a/ui/tests/test.cloudBrowser.js
+++ /dev/null
@@ -1,116 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you 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($) {
-  var $browser, $breadcrumbs, $browserContainer;
-
-  module('Browser', {
-    setup: function() {
-      $.fx.off = true;
-      $browser = $('<div>').addClass('browser-test').appendTo('#qunit-fixture');
-      $breadcrumbs = $('<div>').attr('id', 'breadcrumbs').appendTo($browser);
-      $browserContainer = $('<div>').addClass('container').appendTo($browser);
-      ok($browserContainer.cloudBrowser(), 'Browser initialized');
-      equal($breadcrumbs.find('ul').size(), 1, 'Breadcrumbs initialized');
-    }
-  });
-
-  // Browser tests
-  test('Add panel', function() {
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel123' }), 'Add panel');
-    equal($browser.find('.panel').size(), 1, 'Browser has 1 panel');
-    equal($breadcrumbs.find('ul li').size(), 1, 'Browser has 1 breadcrumb');
-    equal($breadcrumbs.find('ul li:first span').html(), 'testPanel123', 'Panel has correct title');
-  });
-
-  test('Add a second panel', function() {
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel123' }), 'Add first panel');
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel456' }), 'Add second panel');
-    equal($browser.find('.panel').size(), 2, 'Browser has 2 panels');
-    equal($breadcrumbs.find('ul li').size(), 2, 'Browser has 2 breadcrumbs');
-    equal($breadcrumbs.find('ul li:last span').html(), 'testPanel456', 'New panel has correct title');
-    equal($breadcrumbs.find('ul li:first span').html(), 'testPanel123', 'First panel still has correct title');
-  });
-
-  test('Add maximized panel', function() {
-    var $maximizedPanel, $normalPanel;
-    
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel123' }, 'Add first panel'));
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel456' }, 'Add normal-sized-panel'));
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel789', maximizeIfSelected: true }), 'Add maximized panel');
-
-    $maximizedPanel = $browserContainer.find('.panel:last');
-    $normalPanel = $browserContainer.find('.panel:first').next();
-   
-    ok($maximizedPanel.hasClass('always-maximized'), 'Maximized panel has maximized class');
-    ok(!$normalPanel.hasClass('always-maximized'), 'Normal panel has maximized class');
-    equal($maximizedPanel.width(), $browserContainer.width(), 'Maximized panel covers full width of browser container');
-    notEqual($normalPanel.width(), $browserContainer.width(), 'Normal panel doesn\'t have maximized appearance');
-  });
-
-  test('Select panel', function() {
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel123' }), 'Add first panel');
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel456' }), 'Add second panel');
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel789' }), 'Add third panel');
-
-    stop();
-    $browserContainer.cloudBrowser('selectPanel', {
-      panel: $browser.find('.panel:first').next(),
-      complete: function() {
-        start();
-        ok(true, 'Select second panel');
-      }
-    });  
-
-    equal($browser.find('.panel').size(), 2, 'Browser has 2 panels');
-    equal($breadcrumbs.find('ul li:first span').html(), 'testPanel123', 'First panel still has correct title');
-    equal($breadcrumbs.find('ul li:last span').html(), 'testPanel456', 'Second panel still has correct title');
-    equal($breadcrumbs.find('ul li').size(), 2, 'Browser has 2 breadcrumbs');
-
-    stop();
-    $browserContainer.cloudBrowser('selectPanel', {
-      panel: $browser.find('.panel:first'),
-      complete: function() {
-        start();
-        ok(true, 'Select first panel');
-      }
-    });  
-
-    equal($browser.find('.panel').size(), 1, 'Browser has 1 panel');
-    equal($breadcrumbs.find('ul li:first span').html(), 'testPanel123', 'First panel still has correct title');
-    equal($breadcrumbs.find('ul li').size(), 1, 'Browser has 1 breadcrumb');
-  });
-
-  test('Remove all panels', function() {
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel123' }), 'Add first panel');
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel456' }), 'Add second panel');
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel789' }), 'Add third panel');
-    equal($browserContainer.find('.panel').size(), 3, 'Correct # of panels');
-    ok($browserContainer.cloudBrowser('removeAllPanels'), 'Remove all panels');
-    equal($browserContainer.find('.panel').size(), 0, 'All panels removed');
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel123' }), 'Add 1 panel');
-    equal($browserContainer.find('.panel').size(), 1, 'Correct # of panels');
-  });
-
-  test('Maximize panel', function() {
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel123' }), 'Add first panel');
-    ok($browserContainer.cloudBrowser('addPanel', { title: 'testPanel456' }), 'Add second panel');
-    equal($browserContainer.find('.panel').size(), 2, 'Correct # of panels');
-    ok($browserContainer.cloudBrowser('toggleMaximizePanel', { panel: $browserContainer.find('.panel:first')}), 'Maximize first panel');
-    ok($browserContainer.find('.panel:first').hasClass('maximized'), 'First panel has maximized style');
-    ok(!$browserContainer.find('.panel:last').hasClass('maximized'), 'Last panel has correct style');
-  });
-}(jQuery)); 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2893120f/ui/tests/test.core.js
----------------------------------------------------------------------
diff --git a/ui/tests/test.core.js b/ui/tests/test.core.js
deleted file mode 100644
index 8ccab7d..0000000
--- a/ui/tests/test.core.js
+++ /dev/null
@@ -1,79 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you 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($) {
-  var $cloudStack, cloudStack;
-
-  module('Core widget', {
-    setup: function() {
-      cloudStack = {
-        sections: {
-          home: {
-            show: function() { return $('<div>').addClass('test123'); }
-          },
-          sectionA: {},
-          sectionB: {},
-          sectionC: {}
-        },
-
-        home: 'home' 
-      };     
-
-      $cloudStack = $('<div>');
-      ok($cloudStack.cloudStack(cloudStack), 'Basic widget initialized');
-    }
-  });
-
-  test('Container/wrappers', function() {
-    equal($cloudStack.find('[cloudStack-container]').size(), 1, 'Main sub-container present');
-    equal($cloudStack.find('#main-area').size(), 1, 'Main area present');
-  });
-
-  test('Header', function() {
-    var $header = $cloudStack.find('#header');
-    var $userOptions = $cloudStack.find('#user-options');
-    var $notifications = $header.find('.button.notifications');
-    var $notificationTotal = $notifications.find('.total span');
-    var $viewSwitcher = $header.find('.button.view-switcher');
-
-    equal($header.size(), 1, 'Header present');
-    equal($userOptions.size(), 1, 'User options present');
-    equal($userOptions.find('a').size(), 2, 'User options has correct # of options');
-    equal($notifications.size(), 1, 'Notifications present');
-    equal($notificationTotal.html(), '0', 'Notifications initialized properly');
-    equal($viewSwitcher.size(), 1, 'View switcher present'); 
-  });
-
-  test('Navigation', function() {
-    var $navigation = $cloudStack.find('#navigation');
-
-    equal($navigation.size(), 1, 'Navigation present');
-    equal($navigation.find('li').size(), 4, 'Navigation has correct # of nav items');
-  });
-
-  test('Browser / page generation', function() {
-    var $browser = $cloudStack.find('#browser');
-    var $browserContainer = $browser.find('.container');
-    var $homePage = $browserContainer.find('.panel div.test123');
-    var $breadcrumbs = $browser.find('#breadcrumbs li');
-    var $homeBreadcrumb = $browser.find('#breadcrumbs .home');
-
-    equal($browser.size(), 1, 'Browser intialized');
-    equal($homePage.size(), 1, 'Home page is visible');
-    equal($breadcrumbs.size(), 0, 'No initial breadcrumbs');
-    equal($homeBreadcrumb.size(), 1, 'Home breadcrumb active');
-  });
-}(jQuery));

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2893120f/ui/tests/test.detailView.js
----------------------------------------------------------------------
diff --git a/ui/tests/test.detailView.js b/ui/tests/test.detailView.js
deleted file mode 100644
index 6098300..0000000
--- a/ui/tests/test.detailView.js
+++ /dev/null
@@ -1,799 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you 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($) {
-  module('Detail view', {
-    setup: function() {
-      cloudStack.dialog.__confirm = cloudStack.dialog.confirm;
-      cloudStack.ui.notifications.__add = cloudStack.ui.notifications.add;
-      $.fn.__cloudBrowser = $.fn.cloudBrowser;
-      $.fn.__listView = $.fn.listView;
-      $.fn.__dataTable = $.fn.dataTable;
-      $.fn.__is = $.fn.is;
-
-      $.fn.is = function(args) {
-        if (args == ':visible')
-          return true; // No test elems will ever be shown, so just pretend they are visible
-
-        return true;
-      };
-    },
-
-    teardown: function() {
-      cloudStack.dialog.confirm = cloudStack.dialog.__confirm;
-      cloudStack.ui.notifications.add = cloudStack.ui.notifications.__add;
-      $.fn.cloudBrowser = $.fn.__cloudBrowser;
-      $.fn.listView = $.fn.__listView;
-      $.fn.dataTable = $.fn.__dataTable;
-      $.fn.is = $.fn.__is;
-    }
-  });
-
-  test('Basic', function() {
-    var detailView = {
-      tabs: {
-        tabA: {
-          title: 'tabA',
-          fields: [{}],
-          dataProvider: function() {}
-        },
-        tabB: {
-          title: 'tabB',
-          fields: [{}],
-          dataProvider: function() {}
-        }
-      }
-    };
-
-    var $detailView = $('<div>');
-
-    ok($detailView.detailView(detailView), 'Create detail view');
-    equal($detailView.find('.ui-tabs-nav li').size(), 2, 'Detail view has correct tab count');
-    equal($detailView.find('.ui-tabs-nav li:first a').html(), 'tabA', 'First tab has correct title');
-    equal($detailView.find('.ui-tabs-nav li:last a').html(), 'tabB', 'Last tab has correct title');
-  });
-
-  test('Data provider', function() {
-    var detailView = {
-      tabs: {
-        tabA: {
-          title: 'tabA',
-          fields: [{
-            fieldA: { label: 'fieldA' },
-            fieldB: { label: 'fieldB' }
-          }],
-          dataProvider: function(args) {
-            start();
-            ok(args.response.success({
-              data: {
-                fieldA: 'dataProviderFieldA',
-                fieldB: 'dataProviderFieldB'
-              }
-            }), 'Call success');
-            equal($detailView.find('tr').size(), 2, 'Correct fields rendered');
-            equal($detailView.find('tr:first td:first').html(), 'fieldA', 'First field has correct label');
-            equal($detailView.find('tr:first td:last').html(), 'dataProviderFieldA', 'First field has correct content');
-            equal($detailView.find('tr:last td:first').html(), 'fieldB', 'Last field has correct label');
-            equal($detailView.find('tr:last td:last').html(), 'dataProviderFieldB', 'Last field has correct content');
-          }
-        }
-      }
-    };
-    var $detailView = $('<div>');
-
-    stop();
-
-    // Test first tab
-    $detailView = $detailView.detailView(detailView);
-
-    // Test last tab
-    $detailView.find('.ui-tabs-nav li:last').click();
-  });
-
-  test('Data provider, multiple tabs', function() {
-    var detailView = {
-      tabs: {
-        tabA: {
-          title: 'tabA',
-          fields: [{
-            fieldA: { label: 'fieldA' },
-            fieldB: { label: 'fieldB' }
-          }],
-          dataProvider: function(args) {
-            start();
-            ok(args.response.success({
-              data: {
-                fieldA: 'dataProviderFieldA',
-                fieldB: 'dataProviderFieldB'
-              }
-            }), 'Call success');
-            equal($detailView.find('tr').size(), 2, 'Correct fields rendered');
-            equal($detailView.find('tr:first td:first').html(), 'fieldA', 'First field has correct label');
-            equal($detailView.find('tr:first td:last').html(), 'dataProviderFieldA', 'First field has correct content');
-            equal($detailView.find('tr:last td:first').html(), 'fieldB', 'Last field has correct label');
-            equal($detailView.find('tr:last td:last').html(), 'dataProviderFieldB', 'Last field has correct content');
-          }
-        },
-
-        tabB: {
-          title: 'tabB',
-          fields: [{
-            fieldC: { label: 'fieldC' },
-            fieldD: { label: 'fieldD' },
-            fieldC: { label: 'fieldE' },
-            fieldD: { label: 'fieldF' }
-          }],
-          dataProvider: function(args) {
-            start();
-            ok(args.response.success({
-              data: {
-                fieldC: 'dataProviderFieldC',
-                fieldD: 'dataProviderFieldD',
-                fieldE: 'dataProviderFieldE',
-                fieldF: 'dataProviderFieldF'
-              }
-            }), 'Call success');
-            equal($detailView.find('tr').size(), 4, 'Correct fields rendered');
-            equal($detailView.find('tr:first td:first').html(), 'fieldC', 'First field has correct label');
-            equal($detailView.find('tr:first td:last').html(), 'dataProviderFieldC', 'First field has correct content');
-            equal($detailView.find('tr:last td:first').html(), 'fieldF', 'Last field has correct label');
-            equal($detailView.find('tr:last td:last').html(), 'dataProviderFieldF', 'Last field has correct content');
-          }
-        }
-      }
-    };
-    var $detailView = $('<div>');
-
-    stop();
-
-    // Test first tab
-    $detailView = $detailView.detailView(detailView);
-
-    // Test last tab
-    $detailView.find('.ui-tabs-nav li:last').click();
-  });
-
-  test('Field pre-filter', function() {
-    var detailView = {
-      tabs: {
-        tabA: {
-          title: 'tabA',
-          fields: {
-            fieldA: { label: 'fieldA' },
-            fieldB: { label: 'fieldB' },
-            fieldC: { label: 'fieldC' },
-            fieldD: { label: 'fieldD' }
-          },
-          preFilter: function(args) {
-            return ['fieldB', 'fieldC'];
-          },
-          dataProvider: function (args) {
-            args.response.success({
-              data: {
-                fieldA: 'fieldAContent',
-                fieldB: 'fieldBContent',
-                fieldC: 'fieldCContent',
-                fieldD: 'fieldDContent'
-              }
-            });
-
-            start();
-            equal($detailView.find('tr').size(), 2, 'Correct fields rendered');
-            equal($detailView.find('tr:first td:first').html(), 'fieldA', 'First field has correct label');
-            equal($detailView.find('tr:first td:last').html(), 'fieldAContent', 'First field has correct content');
-            equal($detailView.find('tr:last td:first').html(), 'fieldD', 'Last field has correct label');
-            equal($detailView.find('tr:last td:last').html(), 'fieldDContent', 'Last field has correct content');
-          }
-        }
-      }
-    };
-    var $detailView = $('<div>');
-
-    stop();
-
-    $detailView.detailView(detailView);
-  });
-
-  test('Action', function() {
-    var detailView = {
-      actions: {
-        actionA: {
-          label: 'testActionA',
-          action: function(args) {
-            start();
-            ok(args.response.success(), 'Call success from action A');
-          },
-          messages: {
-            confirm: function() { return 'testActionAConfirm'; },
-            notification: function() { return 'testActionANotification'; }
-          }
-        },
-        actionB: {
-          label: 'testActionB',
-          action: function(args) {
-            start();
-            ok(args.response.success(), 'Call success from action B');
-          },
-          messages: {
-            confirm: function() { return 'testActionBConfirm'; },
-            notification: function() { return 'testActionBNotification'; }
-          },
-          notification: {
-            poll: function(args) {
-              start();
-              ok(args.complete(), 'Call complete from async action B');
-            }
-          }
-        }
-      },
-      tabs: {
-        tabA: {
-          title: 'tabA',
-          fields: {
-            fieldA: { label: 'fieldA' },
-            fieldB: { label: 'fieldB' }
-          },
-          dataProvider: function(args) {
-            args.response.success({
-              data: {
-                fieldA: 'fieldAContent',
-                fieldB: 'fieldBContent'
-              }
-            });
-          }
-        }
-      }
-    };
-    var $detailView = $('<div>');
-
-    $detailView.detailView(detailView).appendTo('#qunit-fixture');
-
-    equal($detailView.find('.detail-actions').size(), 1, 'Action container present');
-    equal($detailView.find('.detail-actions .action').size(), 2, 'Correct action count');
-    equal($detailView.find('.detail-actions .action.actionA').size(), 1, 'actionA present');
-    equal($detailView.find('.detail-actions .action.actionB').size(), 1, 'actionB present');
-
-    cloudStack.dialog.confirm = function(args) {
-      start();
-      equal(args.message, 'testActionAConfirm', 'Correct confirmation message for action A');
-      stop();
-
-      args.action(); // Perform action
-    };
-
-    cloudStack.ui.notifications.add = function(notification, success, successArgs) {
-      stop();
-      equal(notification.desc, 'testActionANotification', 'Correct notification message for action A');
-      start();
-    };
-
-    $detailView.find('.detail-actions .action.actionA a').click(); // <a> triggers action, not action's container
-
-    cloudStack.dialog.confirm = function(args) {
-      start();
-      equal(args.message, 'testActionBConfirm', 'Correct confirmation message for action B');
-      stop();
-
-      args.action(); // Perform action
-    };
-
-    cloudStack.ui.notifications.add = function(notification, success, successArgs) {
-      start();
-      equal(notification.desc, 'testActionBNotification', 'Correct notification message for action B');
-      stop();
-      notification.poll({ complete: function() { return true; } });
-    };
-
-    $detailView.find('.detail-actions .action.actionB a').click(); // <a> triggers action, not action's container
-  });
-
-  test('Action filter', function() {
-    var detailView = {
-      actions: {
-        actionA: {
-          label: 'testActionA',
-          action: function(args) {}
-        },
-        actionB: {
-          label: 'testActionB',
-          action: function(args) {}
-        }
-      },
-      tabs: {
-        tabA: {
-          title: 'tabA',
-          fields: {
-            fieldA: { label: 'fieldA' },
-            fieldB: { label: 'fieldB' }
-          },
-          dataProvider: function(args) {
-            args.response.success({
-              actionFilter: function() {
-                return ['actionA'];
-              },
-              data: {
-                fieldA: 'fieldAContent',
-                fieldB: 'fieldBContent'
-              }
-            });
-          }
-        }
-      }
-    };
-    var $detailView = $('<div>');
-
-    $detailView.detailView(detailView).appendTo('#qunit-fixture');
-
-    equal($detailView.find('.detail-actions .action').size(), 1, 'Correct action count');
-    equal($detailView.find('.detail-actions .action.actionA').size(), 1, 'actionA present');
-    notEqual($detailView.find('.detail-actions .action.actionB').size(), 1, 'actionB not present');
-  });
-
-  test('Refresh', function() {
-    var dataA = ['dataLoad1A', 'dataLoad2A'];
-    var dataB = ['dataLoad1B', 'dataLoad2B'];
-    var index = 0;
-
-    var detailView = {
-      tabs: {
-        tabA: {
-          title: 'tabA',
-          fields: {
-            fieldA: { label: 'fieldA' }
-          },
-          dataProvider: function(args) {
-            args.response.success({ data: { fieldA: dataA[index]  }});
-            start();
-            equal($detailView.find('tr td:last').html(), dataA[index], 'Tab A data correct for load ' + (index + 1));
-            index++;
-          }
-        },
-        tabB: {
-          title: 'tabB',
-          fields: {
-            fieldB: { label: 'fieldB' }
-          },
-          dataProvider: function(args) {
-            args.response.success({ data: { fieldB: dataB[index]  }});
-            start();
-            equal($detailView.find('tr td:last').html(), dataB[index], 'Tab B data correct for load ' + (index + 1));
-            index++;
-          }
-        }
-      }
-    };
-    var $detailView = $('<div>');
-
-    stop();
-    $detailView.detailView(detailView).appendTo('#qunit-fixture');
-
-    stop();
-    $detailView.find('.button.refresh').click();
-
-    stop();
-    index = 0;
-    $detailView.find('.ui-tabs-nav li.last a').click();
-
-    stop();
-    $detailView.find('.button.refresh').click();
-  });
-
-  test('View all, 1 section', function() {
-    var $browser = $('<div>').appendTo('#qunit-fixture');
-    var detailView = {
-      $browser: $browser,
-      context: {},
-      viewAll: { label: 'testListView', path: 'testListView' },
-      tabs: {
-        tabA: {
-          title: 'tabA',
-          fields: [{ fieldA: { label: 'fieldA' }}],
-          dataProvider: function(args) { args.response.success({ data: { fieldA: 'fieldAContent' } }); start(); }
-        }
-      }
-    };
-    var testListView = {};
-    var $detailView = $('<div>').appendTo('#qunit-fixture');
-
-    $('<div>').attr('cloudStack-container', true).data('cloudStack-args', {
-      sections: {
-        testListView: testListView
-      }
-    }).appendTo('#qunit-fixture');
-
-    stop();
-
-    $.fn.cloudBrowser = function(cmd, args) {};
-    $browser.cloudBrowser();
-    $detailView.detailView(detailView);
-
-    equal($detailView.find('.detail-group.actions td.view-all').size(), 1, 'Detail view has view all button');
-
-    stop();
-
-    $.fn.listView = function(args, options) {
-      start();
-      ok(true, 'List view called');
-      equal(args, testListView, 'Correct list view passed');
-      ok(args.$browser.size(), 'Browser passed in args');
-      ok($.isPlainObject(args.ref), 'Ref passed in args');
-      equal(args.id, 'testListView', 'Correct section ID');
-
-      return this;
-    };
-
-    $.fn.cloudBrowser = function(cmd, args) {
-      start();
-      equal(cmd, 'addPanel', 'Browser add panel called');
-      stop();
-      args.complete($('<div>'));
-    };
-
-    $detailView.find('.view-all a').click();
-  });
-
-  test('View all, subsections', function() {
-    var $browser = $('<div>').appendTo('#qunit-fixture');
-    var detailView = {
-      $browser: $browser,
-      context: {},
-      viewAll: { label: 'testListView', path: 'testSection.listViewB' },
-      tabs: {
-        tabA: {
-          title: 'tabA',
-          fields: [{ fieldA: { label: 'fieldA' }}],
-          dataProvider: function(args) { args.response.success({ data: { fieldA: 'fieldAContent' } }); start(); }
-        }
-      }
-    };
-    var listViewA = {};
-    var listViewB = {};
-    var $detailView = $('<div>').appendTo('#qunit-fixture');
-
-    $('<div>').attr('cloudStack-container', true).data('cloudStack-args', {
-      sections: {
-        testSection: {
-          sections: {
-            listViewA: { listView: listViewA },
-            listViewB: { listView: listViewB }
-          }
-        }
-      }
-    }).appendTo('#qunit-fixture');
-
-    stop();
-
-    $.fn.cloudBrowser = function(cmd, args) {};
-    $browser.cloudBrowser();
-    $detailView.detailView(detailView);
-
-    equal($detailView.find('.detail-group.actions td.view-all').size(), 1, 'Detail view has view all button');
-
-    stop();
-
-    $.fn.listView = function(args, options) {
-      start();
-      ok(true, 'List view called');
-      equal(args.listView, listViewB, 'Correct list view passed');
-      ok(args.$browser.size(), 'Browser passed in args');
-      ok($.isPlainObject(args.ref), 'Ref passed in args');
-      equal(args.id, 'testSection', 'Correct section ID');
-
-      return this;
-    };
-
-    $.fn.cloudBrowser = function(cmd, args) {
-      start();
-      equal(cmd, 'addPanel', 'Browser add panel called');
-      stop();
-      args.complete($('<div>'));
-    };
-
-    $detailView.find('.view-all a').click();
-  });
-
-  test('Pre-action', function() {
-    var detailView = {
-      actions: {
-        test: {
-          label: 'test',
-          preAction: function() {
-            start();
-            ok(true, 'Pre-action called');
-
-            return false;
-          },
-          action: function() {
-            ok(false, 'Action called; pre-action should have blocked it');
-          },
-          messages: { notification: function() { return 'notification'; }}
-        }
-      },
-      tabs: {
-        test: {
-          title: 'test',
-          label: 'testAction',
-          fields: [{
-            fieldA: { label: 'fieldA' },
-            fieldB: { label: 'fieldB' }
-          }],
-          dataProvider: function(args) { args.response.success({ data: {} }); }
-        }
-      }
-    };
-    var $detailView = $('<div>');
-
-    stop();
-    $detailView.detailView(detailView);
-    $detailView.find('.action.test a').click();
-  });
-
-  test('Update data, from list view row', function() {
-    var detailView = {
-      section: 'testListView',
-      context: {
-        testListView: [{
-          fieldA: 'fieldA-1',
-          fieldB: 'fieldB-1',
-          fieldC: 'fieldC-1'
-        }]
-      },
-      actions: {
-        updateDataTestSync: {
-          label: 'updateDataTestSync',
-          preAction: function(args) { return true; },
-          action: function(args) {
-            args.response.success({
-              data: {
-                fieldA: 'fieldA-2',
-                fieldB: 'fieldB-2'
-              }
-            });
-
-            start();
-            equal($detailView.data('view-args').context.testListView[0].fieldA, 'fieldA-2', 'Correct context value for fieldA');
-            equal($detailView.data('view-args').context.testListView[0].fieldB, 'fieldB-2', 'Correct context value for fieldB');
-            equal($detailView.data('view-args').context.testListView[0].fieldC, 'fieldC-1', 'Correct context value for fieldC');
-            equal($detailView.find('tr.fieldA .value').html(), 'fieldA-2', 'Correct table value for fieldA');
-            equal($detailView.find('tr.fieldB .value').html(), 'fieldB-2', 'Correct table value for fieldB');
-            equal($detailView.find('tr.fieldC .value').html(), 'fieldC-1', 'Correct table value for fieldC');
-          },
-          messages: { notification: function() { return 'notification'; }}
-        }
-      },
-      tabs: {
-        test: {
-          title: 'test',
-          fields: [{
-            fieldA: { label: 'fieldA' },
-            fieldB: { label: 'fieldB' },
-            fieldC: { label: 'fieldC' }
-          }],
-          dataProvider: function(args) {
-            args.response.success({
-              data: args.context.testListView[0]
-            });
-          }
-        }
-      }
-    };
-    var $detailView = $('<div>');
-    var $listView = $('<div>').addClass('list-view');
-    var $listViewRow = $('<div>').data('json-obj', detailView.context.testListView[0]).appendTo($listView);
-    var $cloudStackContainer = $('<div>').attr('cloudStack-container', true).data('cloudStack-args', {
-      sections: {
-        testListView: {}
-      }
-    }).appendTo('#qunit-fixture');
-
-    $.fn.dataTable = function() { return this; };
-    $.fn.listView = function(args1, args2) {
-      if (args1 == 'replaceItem')
-        args2.after(args2.$row.data('json-obj', args2.data));
-
-      return this;
-    };
-    
-    cloudStack.ui.notifications.add = function(notification, complete) {
-      complete();
-    };
-    cloudStack.dialog.confirm = function(args) {
-      args.action();
-    };
-    $detailView.data('list-view-row', $listViewRow);
-    $detailView.detailView(detailView);
-
-    stop();
-    $detailView.find('.action.updateDataTestSync a').click();
-  });
-
-
-  test('Update data async, from list view row', function() {
-    var detailView = {
-      section: 'testListView',
-      context: {
-        testListView: [{
-          fieldA: 'fieldA-1',
-          fieldB: 'fieldB-1',
-          fieldC: 'fieldC-1',
-          state: 'on'
-        }]
-      },
-      actions: {
-        updateDataTestAsync: {
-          label: 'updateDataTestAsync',
-          preAction: function(args) {
-            start();
-            ok(true, 'Pre-action called');
-            equal($detailView.data('view-args').context.testListView[0].fieldA, 'fieldA-1', 'Pre-action: Correct context value for fieldA');
-            equal($detailView.data('view-args').context.testListView[0].fieldB, 'fieldB-1', 'Pre-action: Correct context value for fieldB');
-            equal($detailView.data('view-args').context.testListView[0].fieldC, 'fieldC-1', 'Pre-action: Correct context value for fieldC');
-            stop();
-
-            return true;
-          },
-          action: function(args) {
-            args.response.success();
-          },
-          messages: { notification: function() { return 'notification'; }},
-          notification: {
-            poll: function(args) {
-              args.complete({
-                data: {
-                  fieldA: 'fieldA-2',
-                  fieldB: 'fieldB-2',
-                  state: 'off'
-                }
-              });
-
-              start();
-              equal($detailView.data('view-args').context.testListView[0].fieldA, 'fieldA-2', 'Correct context value for fieldA');
-              equal($detailView.data('view-args').context.testListView[0].fieldB, 'fieldB-2', 'Correct context value for fieldB');
-              equal($detailView.data('view-args').context.testListView[0].fieldC, 'fieldC-1', 'Correct context value for fieldC');
-              equal($detailView.find('tr.fieldA .value').html(), 'fieldA-2', 'Correct table value for fieldA');
-              equal($detailView.find('tr.fieldB .value').html(), 'fieldB-2', 'Correct table value for fieldB');
-              equal($detailView.find('tr.fieldC .value').html(), 'fieldC-1', 'Correct table value for fieldC');
-
-              equal($detailView.find('.action').size(), 1, 'Correct action count');
-              equal($detailView.find('.action.updateDataTestAsync').size(), 1, 'updateDataTestAsync present');
-              equal($detailView.find('.action.filteredAction').size(), 0, 'filteredAction not present');
-              stop();
-            }
-          }
-        },
-
-        filteredAction: {
-          label: 'filteredAction',
-          action: function() {},
-          messages: { notification: function() { return 'notification'; } }
-        }
-      },
-      tabs: {
-        test: {
-          title: 'test',
-          fields: [{
-            fieldA: { label: 'fieldA' },
-            fieldB: { label: 'fieldB' },
-            fieldC: { label: 'fieldC' }
-          }],
-          dataProvider: function(args) {
-            args.response.success({
-              data: args.context.testListView[0],
-              actionFilter: function(args) {
-                if (args.context.testListView[0].state == 'on') {
-                  return ['updateDataTestAsync', 'filteredAction'];
-                }
-
-                return ['updateDataTestAsync'];
-              }
-            });
-          }
-        }
-      }
-    };
-    var $detailView = $('<div>');
-    var $listView = $('<div>').addClass('list-view');
-    var $listViewRow = $('<div>').data('json-obj', detailView.context.testListView[0]).appendTo($listView);
-    var $cloudStackContainer = $('<div>').attr('cloudStack-container', true).data('cloudStack-args', {
-      sections: {
-        testListView: {}
-      }
-    }).appendTo('#qunit-fixture');
-
-    $.fn.dataTable = function() { return this; };
-    $.fn.listView = function(args1, args2) {
-      if (args1 == 'replaceItem')
-        args2.after(args2.$row.data('json-obj', args2.data));
-
-      return this;
-    };
-    
-    cloudStack.ui.notifications.add = function(notification, complete) {
-      notification.poll({ complete: complete });
-    };
-    cloudStack.dialog.confirm = function(args) {
-      args.action();
-    };
-    $detailView.data('list-view-row', $listViewRow);
-    $detailView.detailView(detailView);
-
-    equal($detailView.find('.action').size(), 2, 'Correct action count');
-    equal($detailView.find('.action.updateDataTestAsync').size(), 1, 'updateDataTestAsync present');
-    equal($detailView.find('.action.filteredAction').size(), 1, 'filteredAction present');
-    
-    stop();    
-    $detailView.find('.action.updateDataTestAsync a').click();
-    $detailView.data('view-args').actions.updateDataTestAsync.preAction = function(args) {
-      start();
-      equal($detailView.data('view-args').context.testListView[0].fieldA, 'fieldA-2', 'Pre-action: Correct context value for fieldA');
-      equal($detailView.data('view-args').context.testListView[0].fieldB, 'fieldB-2', 'Pre-action: Correct context value for fieldB');
-      equal($detailView.data('view-args').context.testListView[0].fieldC, 'fieldC-1', 'Pre-action: Correct context value for fieldC');
-      ok(true, 'Pre-action called');
-
-      return false;
-    };
-    $detailView.find('.action.updateDataTestAsync a').click();
-  });
-
-  test('Update context', function() {
-    var detailView = {
-      context: {
-        listViewItemA: [
-          { fieldA: 'fieldAContent' }
-        ]
-        // listViewItemB [not stored yet]
-      },
-
-      tabFilter: function(args) {
-        start();
-        ok($.isArray(args.context.listViewItemB), 'updateContext called before tabFilter');
-        stop();
-
-        return [];
-      },
-
-      // updateContext is executed every time a data provider is called
-      updateContext: function(args) {
-        start();
-        ok(true, 'updateContext called');
-        equal(args.context.listViewItemA[0].fieldA, 'fieldAContent', 'updateContext: Item A present in context');
-        stop();
-
-        return {
-          listViewItemB: [
-            { fieldB: 'fieldBContent' }
-          ]
-        };
-      },
-
-      tabs: {
-        test: {
-          title: 'test',
-          fields: { fieldA: { label: 'fieldA'}, fieldB: { label: 'fieldB' }},
-          dataProvider: function(args) {
-            start();
-            equal(args.context.listViewItemA[0].fieldA, 'fieldAContent', 'dataProvider: Item A present in context');
-            equal(args.context.listViewItemB[0].fieldB, 'fieldBContent', 'dataProvider: Item B present in context');
-          }
-        }
-      }
-    };
-    var $detailView = $('<div></div>');
-
-    stop();
-    $detailView.detailView(detailView);
-  });
-}(jQuery));

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2893120f/ui/tests/test.listView.js
----------------------------------------------------------------------
diff --git a/ui/tests/test.listView.js b/ui/tests/test.listView.js
deleted file mode 100644
index 3449ab2..0000000
--- a/ui/tests/test.listView.js
+++ /dev/null
@@ -1,527 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you 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($) {
-  module('List view', {
-    setup: function() {
-      $.fx.off = true;
-      cloudStack.debug = true;
-    },
-    teardown: function() {
-      // Cleanup notification box
-      $('.notification-box').remove();
-    }
-  });
-
-  test('Basic', function() {
-    var listView = {
-      listView: {
-        section: 'test123',
-        fields: {
-          fieldA: { label: 'testFieldA' },
-          fieldB: { label: 'testFieldB' }
-        },
-        dataProvider: function(args) {
-          args.response.success({
-            data: []
-          });
-        }
-      }
-    };
-    var $listView;
-
-    ok($listView = $('<div>').listView(listView), 'Initialize list view');
-    equal($listView.find('.list-view').size(), 1, 'List view has container div');
-    equal($listView.find('.list-view.test123').size(), 1, 'Container div has section ID as CSS class');
-    equal($listView.find('.list-view table').size(), 2, 'List view has split tables');
-    equal($listView.find('.list-view .fixed-header table thead tr').size(), 1, 'List view has fixed table header');
-    equal($listView.find('.list-view .fixed-header table thead th').size(), 2, 'List view has correct column headers');
-    equal($listView.find('.list-view .fixed-header table thead th:first').html(), 'testFieldA', 'First header has correct label');
-    ok($listView.find('.list-view .fixed-header table thead th:first').hasClass('fieldA'), 'First header has correct class');
-    ok($listView.find('.list-view .fixed-header table thead th:last').hasClass('fieldB'), 'First header has correct class');
-    equal($listView.find('.list-view .fixed-header table thead th:last').html(), 'testFieldB', 'First header has correct label');
-    equal($listView.find('.list-view table tbody tr').size(), 1, 'List view has table body');
-    equal($listView.find('.toolbar').size(), 1, 'List view has toolbar');
-    equal($listView.find('.toolbar .text-search .search-bar input[type=text]').size(), 1, 'Toolbar has search box');
-    equal($listView.find('.toolbar .text-search .search-bar input[type=text]').size(), 1, 'Toolbar has search box');
-    equal($listView.find('.toolbar .text-search .button.search').size(), 1, 'Toolbar has search button');
-    ok(!$listView.find('.toolbar .filters').size(), 'Toolbar doesn\'t have filters');
-  });
-
-  test('Data provider', function() {
-    var $listView = $('<div>');
-    
-    stop();
-    $listView.listView({
-      context: {
-        tests: []
-      },
-      listView: {
-        section: 'test',
-        fields: {
-          fieldA: { label: 'testFieldA' },
-          fieldB: { label: 'testFieldB' }
-        },
-        dataProvider: function(args) {
-          start();
-          equal(args.page, 1, 'Correct page # passed');
-          equal(args.filterBy.search.value, '', 'No search params specified');
-          ok($.isArray(args.context.tests), 'Context passed');
-          args.response.success({
-            data: [
-              {
-                fieldA: '1A',
-                fieldB: '1B'
-              },
-              {
-                fieldA: '2A',
-                fieldB: '2B'
-              },
-              {
-                fieldA: '3A',
-                fieldB: '3B'
-              }
-            ]
-          });
-          stop();
-          setTimeout(function() {
-            start();
-            equal($listView.find('tbody tr').size(), 3, 'Data row count is correct');
-            equal($listView.find('tbody tr:first td.fieldA span').html(), '1A', 'Correct table item value for first row');
-            equal($listView.find('tbody tr:first td.fieldB span').html(), '1B', 'Correct table item value for first row');
-            equal($listView.find('tbody tr:last td.fieldA span').html(), '3A', 'Correct table item value for last row');
-            equal($listView.find('tbody tr:last td.fieldB span').html(), '3B', 'Correct table item value for last row');
-          });
-        }
-      }
-    });
-  });
-
-  test('Pre-filter', function() {
-    var $listView = $('<div>');
-    
-    stop();
-    $listView.listView({
-      listView: {
-        section: 'test',
-        fields: {
-          fieldA: { label: 'testFieldA' },
-          fieldB: { label: 'testFieldB' },
-          fieldC: { label: 'testFieldC' }
-        },
-        preFilter: function(args) {
-          return ['fieldC'];
-        },
-        dataProvider: function(args) {
-          args.response.success({
-            data: [
-              {
-                fieldA: '1A',
-                fieldB: '1B',
-                fieldC: '1C'
-              }
-            ]
-          });
-          setTimeout(function() {
-            start();
-            equal($listView.find('thead th').size(), 2, 'Correct # of filtered columns present');
-            equal($listView.find('tbody tr:first td').size(), 2, 'Correct # of body columns present');
-            equal($listView.find('tbody tr:first td.fieldA span').html(), '1A', 'Correct table item value for data row');
-            equal($listView.find('tbody tr:first td.fieldB span').html(), '1B', 'Correct table item value for data row');
-          });
-        }
-      }
-    });
-  });
-
-  test('Section select', function() {
-    var $listView = $('<div>');
-    
-    ok($listView.listView({
-      sectionSelect: {
-        label: 'testSectionSelect'
-      },
-      sections: {
-        sectionA: {
-          type: 'select',
-          title: 'sectionA',
-          listView: {
-            fields: {
-              fieldA: { label: 'testFieldA' },
-              fieldB: { label: 'testFieldB' }
-            },
-            dataProvider: function(args) {
-              args.response.success({
-                data: [
-                  {
-                    fieldA: '1A',
-                    fieldB: '1B'
-                  },
-                  {
-                    fieldA: '2A',
-                    fieldB: '2B'
-                  }
-                ]
-              });
-            }
-          }  
-        },
-        
-        sectionB: {
-          type: 'select',
-          title: 'sectionB',
-          listView: {
-            fields: {
-              fieldC: { label: 'testFieldC' },
-              fieldD: { label: 'testFieldD' },
-              fieldE: { label: 'testFieldE' }
-            },
-            dataProvider: function(args) {
-              args.response.success({
-                data: [
-                  {
-                    fieldC: '1C',
-                    fieldD: '1D',
-                    fieldE: '1E'
-                  },
-                  {
-                    fieldC: '2C',
-                    fieldD: '2D',
-                    fieldE: '2E'
-                  },
-                  {
-                    fieldC: '3C',
-                    fieldD: '3D',
-                    fieldE: '3E'
-                  },
-                  {
-                    fieldC: '4C',
-                    fieldD: '4D',
-                    fieldE: '4E'
-                  }
-                ]
-              });
-            }
-          }
-        }
-      }
-    }));
-
-    equal($listView.find('.toolbar .section-switcher').size(), 1,
-          'Section switcher present in toolbar');
-    equal($listView.find('.toolbar .section-switcher .section-select select').size(), 1,
-          'Section select present');
-    equal($listView.find('.toolbar .section-switcher .section-select label').html(),
-          'testSectionSelect' + ':',
-          'Section select label is correct');
-    equal($listView.find('.toolbar .section-switcher .section-select select option').size(), 2,
-          'Selectable sections present as options');
-    equal($listView.find('.toolbar .section-switcher .section-select select option:first').html(), 'sectionA',
-          'First select has correct title');
-    equal($listView.find('.toolbar .section-switcher .section-select select option:selected')[0],
-          $listView.find('.toolbar .section-switcher .section-select select option:first')[0],
-          'First section option is selected by default');
-    equal($listView.find('.toolbar .section-switcher .section-select select option:last').html(), 'sectionB', 'Last select has correct title');
-    equal($listView.find('.list-view thead th').size(), 2, 'Correct list view column count present');
-    equal($listView.find('.list-view thead th:first').html(), 'testFieldA', 'Column 1 is labeled correctly');
-    equal($listView.find('.list-view thead th:last').html(), 'testFieldB', 'Column 2 is labeled correctly');
-    equal($listView.find('.list-view tbody tr').size(), 2, 'Correct # of data rows present');
-    equal($listView.find('.list-view tbody tr:first td').size(), 2, 'Correct # of data columns present');
-    
-    $listView.find('.toolbar .section-switcher select').val('sectionB');
-    stop();
-    ok($listView.find('.toolbar .section-switcher select').change(), 'Change section');
-    start();
-    
-    equal($listView.find('.list-view thead th').size(), 3, 'Correct list view column count present');
-    equal($listView.find('.list-view thead th:first').html(), 'testFieldC', 'Column 1 is labeled correctly');
-    equal($($listView.find('.list-view thead th')[1]).html(), 'testFieldD', 'Column 2 is labeled correctly');
-    equal($listView.find('.list-view thead th:last').html(), 'testFieldE', 'Column 3 is labeled correctly');
-    equal($listView.find('.list-view tbody tr').size(), 4, 'Correct # of data rows present');
-    equal($listView.find('.list-view tbody tr:first td').size(), 3, 'Correct # of data columns present');
-    equal($listView.find('.list-view tbody tr:first td:first span').html(), '1C', 'First table cell has correct data');
-    equal($listView.find('.list-view tbody tr:last td:last span').html(), '4E', 'Last table cell has correct data');
-
-    $listView.find('.toolbar .section-switcher select').val('sectionA');
-    stop();
-    ok($listView.find('.toolbar .section-switcher select').change(), 'Change section');
-    start();
-    equal($listView.find('.toolbar .section-switcher .section-select select option:last').html(), 'sectionB', 'Last select has correct title');
-    equal($listView.find('.list-view thead th').size(), 2, 'Correct list view column count present');
-    equal($listView.find('.list-view thead th:first').html(), 'testFieldA', 'Column 1 is labeled correctly');
-    equal($listView.find('.list-view thead th:last').html(), 'testFieldB', 'Column 2 is labeled correctly');
-    equal($listView.find('.list-view tbody tr').size(), 2, 'Correct # of data rows present');
-    equal($listView.find('.list-view tbody tr:first td').size(), 2, 'Correct # of data columns present');
-    equal($listView.find('.list-view tbody tr:first td:first span').html(), '1A', 'First table cell has correct data');
-    equal($listView.find('.list-view tbody tr:last td:last span').html(), '2B', 'Last table cell has correct data');
-  });
-
-  test('Basic sync action', function() {
-    var $cloudStack = $('<div>').appendTo('#qunit-fixture');
-    var listView = {
-      listView: {
-        section: 'test123',
-        fields: {
-          fieldA: { label: 'testFieldA' },
-          fieldB: { label: 'testFieldB' }
-        },
-        actions: {
-          basicSync: {
-            label: 'basicAction',
-            messages: {
-              confirm: function() {
-                return 'basicActionConfirm';
-              },
-              notification: function() {
-                return 'basicActionNotification';
-              }
-            },
-            action: function(args) {
-              args.response.success();
-            }
-          }
-        },
-        dataProvider: function(args) {
-          args.response.success({
-            data: [
-              {
-                fieldA: '1A',
-                fieldB: '1B',
-                fieldC: '1C'
-              },
-              {
-                fieldA: '2A',
-                fieldB: '2B',
-                fieldC: '2C'
-              }
-            ]
-          });
-        }
-      }
-    };
-
-    // CloudStack object is needed for notification handling for actions
-    var cloudStack = {
-      sections: {
-        testActions: listView
-      },
-
-      home: 'testActions'
-    };
-    
-    ok($cloudStack.cloudStack(cloudStack), 'Initialize cloudStack widget w/ list view');
-
-    var $listView = $cloudStack.find('.list-view');
-    
-    equal($listView.find('table thead th').size(), 3, 'Correct header column count');
-    equal($listView.find('table thead th.actions').size(), 1, 'Action header column present');
-    equal($listView.find('table tbody tr:first td').size(), 3, 'Correct data column count');
-    equal($listView.find('table tbody tr:first td.actions').size(), 1, 'Action data column present');
-    equal($listView.find('table tbody tr:first td.actions .action').size(), 1, 'Correct action count');
-    equal($listView.find('table tbody tr:first td.actions .action:first .icon').size(), 1, 'Action has icon');
-    ok($listView.find('table tbody tr:first td.actions .action:first').hasClass('basicSync'),
-       'First action has ID as CSS class');
-    ok($listView.find('td.actions .action:first').click(), 'Click first action');
-    equal($('.ui-dialog.confirm .message').html(), 'basicActionConfirm', 'Confirmation message present');
-
-    // Make sure dialog is cleaned up -- always put below all confirm tests
-    $(':ui-dialog, .overlay').appendTo('#qunit-fixture');
-
-    ok($('.ui-dialog.confirm .ui-button.ok').click(), 'Confirm action');
-    equal($cloudStack.find('.notifications .total span').html(), '1', 'Notification total increased');
-    equal($('.notification-box ul li').size(), 1, 'Notification list has 1 item');
-    equal($('.notification-box ul li span').html(), 'basicActionNotification', 'Notification list item has correct label');
-    ok($('.notification-box ul li').hasClass('pending'), 'Notification has pending state');
-    stop();
-    setTimeout(function() {
-      start();
-      ok(!$('.notification-box ul li').hasClass('pending'), 'Notification has completed state');
-    });
-  });
-
-  test('Async action', function() {
-    var $cloudStack = $('<div>').appendTo('#qunit-fixture');
-    var listView = {
-      listView: {
-        id: 'testAsyncListView',
-        fields: {
-          fieldA: { label: 'testFieldA' },
-          fieldB: { label: 'testFieldB' }
-        },
-        actions: {
-          asyncTest: {
-            label: 'asyncAction',
-            messages: {
-              confirm: function() {
-                return 'asyncActionConfirm';
-              },
-              notification: function() {
-                return 'asyncActionNotification';
-              }
-            },
-            action: function(args) {
-              ok($.isArray(args.context.testAsyncListView), 'List view context passed');
-              args.response.success({
-                _custom: {
-                  jobId: 'job123'
-                }
-              });
-            },
-            notification: {
-              interval: 0,
-              poll: function(args) {
-                start();
-                equal(args._custom.jobId, 'job123', 'Job ID passed correctly');
-                args.complete();
-              }
-            }
-          }
-        },
-        dataProvider: function(args) {
-          args.response.success({
-            data: [
-              {
-                fieldA: '1A',
-                fieldB: '1B',
-                fieldC: '1C'
-              },
-              {
-                fieldA: '2A',
-                fieldB: '2B',
-                fieldC: '2C'
-              }
-            ]
-          });
-        }
-      }
-    };
-
-    // CloudStack object is needed for notification handling for actions
-    var cloudStack = {
-      sections: {
-        testActions: listView
-      },
-
-      home: 'testActions'
-    };
-    
-    ok($cloudStack.cloudStack(cloudStack), 'Initialize cloudStack widget w/ list view');
-
-    var $listView = $cloudStack.find('.list-view');
-    
-    equal($listView.find('table thead th').size(), 3, 'Correct header column count');
-    equal($listView.find('table thead th.actions').size(), 1, 'Action header column present');
-    equal($listView.find('table tbody tr:first td').size(), 3, 'Correct data column count');
-    equal($listView.find('table tbody tr:first td.actions').size(), 1, 'Action data column present');
-    equal($listView.find('table tbody tr:first td.actions .action').size(), 1, 'Correct action count');
-    equal($listView.find('table tbody tr:first td.actions .action:first .icon').size(), 1, 'Action has icon');
-    ok($listView.find('table tbody tr:first td.actions .action:first').hasClass('asyncTest'),
-       'First action has ID as CSS class');
-    ok($listView.find('td.actions .action:first').click(), 'Click first action');
-    equal($('.ui-dialog.confirm .message').html(), 'asyncActionConfirm', 'Confirmation message present');
-
-    // Make sure dialog is cleaned up -- always put below all confirm tests
-    $(':ui-dialog, .overlay').appendTo('#qunit-fixture');
-
-    ok($('.ui-dialog.confirm .ui-button.ok').click(), 'Confirm action');
-    equal($cloudStack.find('.notifications .total span').html(), '1', 'Notification total increased');
-    equal($('.notification-box ul li').size(), 1, 'Notification list has 1 item');
-    equal($('.notification-box ul li span').html(), 'asyncActionNotification', 'Notification list item has correct label');
-    ok($('.notification-box ul li').hasClass('pending'), 'Notification has pending state');
-    stop();
-  });
-
-  test('Action filter', function() {
-    var $cloudStack = $('<div>').appendTo('#qunit-fixture');
-    var listView = {
-      listView: {
-        id: 'testAsyncListView',
-        fields: {
-          fieldA: { label: 'testFieldA' },
-          fieldB: { label: 'testFieldB' }
-        },
-        actions: {
-          actionA: {
-            label: 'actionA',
-            messages: {
-              confirm: function() { return ''; },
-              notification: function() { return ''; }
-            },
-            action: function(args) { args.response.success(); }
-          },
-          actionB: {
-            label: 'actionB [HIDDEN]',
-            messages: {
-              confirm: function() { return ''; },
-              notification: function() { return ''; }
-            },
-            action: function(args) { args.response.success(); }
-          },
-          actionC: {
-            label: 'actionC',
-            messages: {
-              confirm: function() { return ''; },
-              notification: function() { return ''; }
-            },
-            action: function(args) { args.response.success(); }
-          }
-        },
-        dataProvider: function(args) {
-          args.response.success({
-            actionFilter: function() {
-              return ['actionA', 'actionC'];
-            },
-            data: [
-              {
-                fieldA: '1A',
-                fieldB: '1B',
-                fieldC: '1C'
-              },
-              {
-                fieldA: '2A',
-                fieldB: '2B',
-                fieldC: '2C'
-              }
-            ]
-          });
-        }
-      }
-    };
-
-    // CloudStack object is needed for notification handling for actions
-    var cloudStack = {
-      sections: {
-        testActions: listView
-      },
-
-      home: 'testActions'
-    };
-    
-    ok($cloudStack.cloudStack(cloudStack), 'Initialize cloudStack widget w/ list view');
-
-    var $listView = $cloudStack.find('.list-view');
-    
-    equal($listView.find('table thead th').size(), 3, 'Correct header column count');
-    equal($listView.find('table thead th.actions').size(), 1, 'Action header column present');
-    equal($listView.find('table tbody tr:first td.actions').size(), 1, 'Action data column present');
-    equal($listView.find('table tbody tr:first td.actions .action').size(), 3, 'Correct action count (all)');
-    equal($listView.find('table tbody tr:first td.actions .action:not(.disabled)').size(), 2, 'Correct action count (enabled)');
-    ok($listView.find('table tbody tr:first td.actions .action:first').hasClass('actionA'),
-       'First action has correct ID');
-    ok($listView.find('table tbody tr:first td.actions .action:last').hasClass('actionC'),
-       'Last action has correct ID');
-  });
-}(jQuery)); 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2893120f/ui/tests/test.multiEdit.js
----------------------------------------------------------------------
diff --git a/ui/tests/test.multiEdit.js b/ui/tests/test.multiEdit.js
deleted file mode 100644
index aea0729..0000000
--- a/ui/tests/test.multiEdit.js
+++ /dev/null
@@ -1,55 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you 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($) {
-  module('Mutli-edit');
-
-  test('Basic', function() {
-    var multiEdit = {
-      fields: {
-        fieldA: { edit: true, label: 'fieldA' },
-        fieldB: { edit: true, label: 'fieldB' },
-        add: { label: 'add', addButton: true }
-      },
-      add: {
-        label: 'addAction',
-        action: function() {}
-      },
-      dataProvider: function() {}
-    };
-    var $multiEdit = $('<div>');
-    
-    ok($multiEdit.multiEdit(multiEdit), 'Initialize multi-edit');
-    equal($multiEdit.find('div.multi-edit').size(), 1, 'Main container div correct');
-    equal($multiEdit.find('.multi-edit form').size(), 1, 'Multi-edit has form');
-    equal($multiEdit.find('.multi-edit form table.multi-edit').size(), 1, 'Form has table');
-    equal($multiEdit.find('.multi-edit form table thead tr').size(), 1, 'Header present');
-    equal($multiEdit.find('.multi-edit form table tbody tr').size(), 1, 'Form body present');
-    equal($multiEdit.find('.multi-edit .data .data-body').size(), 1, 'Data body present');
-
-    // Header items
-    equal($multiEdit.find('.multi-edit form table thead th.fieldA[rel=fieldA]').html(), 'fieldA', 'fieldA has correct header');
-    equal($multiEdit.find('.multi-edit form table thead th.fieldB[rel=fieldB]').html(), 'fieldB', 'fieldB has correct header');
-    equal($multiEdit.find('.multi-edit form table thead th.add[rel=add]').html(), 'add', 'Add action column has correct header');
-
-    // Form items
-    equal($multiEdit.find('.multi-edit form table tbody td.fieldA[rel=fieldA] input[name=fieldA]').size(), 1, 'fieldA has correct input');
-    equal($multiEdit.find('.multi-edit form table tbody td.fieldA[rel=fieldA] input[type=text]').size(), 1, 'fieldA has text-based input');
-    equal($multiEdit.find('.multi-edit form table tbody td.fieldB[rel=fieldB] input[name=fieldB]').size(), 1, 'fieldB has correct input');
-    equal($multiEdit.find('.multi-edit form table tbody td.fieldB[rel=fieldB] input[type=text]').size(), 1, 'fieldB has text-based input');
-    equal($multiEdit.find('.multi-edit form table tbody td.add[rel=add] .button.add-vm').html(), 'addAction', 'Add action column has correct content');
-  });
-}(jQuery));

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2893120f/ui/tests/test.notifications.js
----------------------------------------------------------------------
diff --git a/ui/tests/test.notifications.js b/ui/tests/test.notifications.js
deleted file mode 100644
index b0ce313..0000000
--- a/ui/tests/test.notifications.js
+++ /dev/null
@@ -1,107 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you 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($) {
-  var $notifications, $notificationBox,
-      $cloudStack, cloudStack;
-
-  module('Notifications', {
-    setup: function() {
-      $.fx.off = true;
-
-      cloudStack = {
-        sections: {
-          home: {
-            show: function() { return $('<div>').addClass('test123'); }
-          },
-          sectionA: {
-            show: function() { return $('<div>').addClass('notification123'); }
-          }
-        },
-
-        home: 'home' 
-      };     
-
-      $cloudStack = $('<div>').appendTo($('#qunit-fixture'));
-      ok($cloudStack.cloudStack(cloudStack), 'Basic widget initialized');
-
-      // Need to cleanup here -- not handled by widget
-      $('.notification-box').remove();
-      
-      $notifications = $('<div>').appendTo($cloudStack);
-      ok($notifications.notifications(), 'Initialize notifications widget');
-      $notificationBox = $('.notification-box');
-    }
-  });
-
-  test('Widget setup', function() {
-    ok($notifications.hasClass('notifications'), 'Correct styling assigned');
-    equal($notificationBox.size(), 1, 'Notification box present');
-  });
-
-  test('Add notification via widget', function() {
-    stop();
-    $notifications.notifications('add', { // Basic notification
-      desc: 'testNotification123',
-      interval: 0,
-      poll: function(args) {
-        var $li = $notificationBox.find('li');
-        
-        start();
-        equal($li.size(), 1, 'Notification added to list');
-        equal($li.find('span').html(), 'testNotification123', 'Notification description correct');
-        ok($li.hasClass('pending'), 'Notification item has pending state');
-        ok($notificationBox.find('.button.clear-list').click(), 'Clear list button click');
-        equal($notificationBox.find('li').size(), 1, 'Notification list still has correct number of items');
-        args.complete();
-        ok(!$li.hasClass('pending'), 'Notification item has non-pending (complete) state');
-
-        stop();
-        $notifications.notifications('add', { // More comprehensive notification
-          desc: 'testNotification456',
-          interval: 0,
-          _custom: {
-            attrA: '123',
-            attrB: '456'
-          },
-          section: 'sectionA',
-          poll: function(args) {
-            var $li = $notificationBox.find('li');
-            
-            start();
-            equal($li.size(), 2, 'Notification list is correct');
-            ok($.isPlainObject(args._custom), '_custom present');
-            equal(args._custom.attrA, '123', '_custom attr A correct');
-            equal(args._custom.attrB, '456', '_custom attr B correct');
-            ok($li.filter(':last').hasClass('pending'), 'New notification item has pending state');
-            ok(!$li.filter(':first').hasClass('pending'), 'First notification item still has non-pending (complete) state');
-            ok($notificationBox.find('.button.clear-list').click(), 'Clear list button click');
-            ok(!$notificationBox.find('li:first').is(':visible'), 'First (completed) notification item cleared');
-            args.complete();
-            ok(!$li.hasClass('pending'), 'All notifications item has non-pending (complete) state');
-            equal($li.filter(':last').data('notification-section'), 'sectionA', 'Section data is correct in last notification');
-            equal($li.filter(':first').find('span').html(), 'testNotification123', 'First notification description correct');
-            equal($li.filter(':last').find('span').html(), 'testNotification456', 'Second notification description correct');
-            $li.filter(':last').find('span').click();
-            equal($cloudStack.find('.notification123').size(), 1, 'Notification item text goes to correct section on click');
-            ok($li.filter(':last').find('.remove').click(), 'Remove first item');
-            equal($notificationBox.find('li').size(), 0, 'Notification list has no items anymore');
-          }
-        });
-      }
-    });
-  });
-}(jQuery));