diff --git a/ui/tests/test.listView.js b/ui/tests/test.listView.js index f2894aea0ae..151bf5e5006 100644 --- a/ui/tests/test.listView.js +++ b/ui/tests/test.listView.js @@ -340,7 +340,7 @@ var $cloudStack = $('
').appendTo('#qunit-fixture'); var listView = { listView: { - id: 'job123', + id: 'testAsyncListView', fields: { fieldA: { label: 'testFieldA' }, fieldB: { label: 'testFieldB' } @@ -357,6 +357,7 @@ } }, action: function(args) { + ok($.isArray(args.context.testAsyncListView), 'List view context passed'); args.response.success({ _custom: { jobId: 'job123' @@ -426,4 +427,85 @@ ok($('.notification-box ul li').hasClass('pending'), 'Notification has pending state'); stop(); }); + + test('Action filter', function() { + var $cloudStack = $('
').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));