').addClass('notification123'); }
}
},
home: 'home'
};
$cloudStack = $('
').appendTo($('#qunit-fixture'));
ok($cloudStack.cloudStack(cloudStack), 'Basic widget initialized');
// Need to cleanup here -- not handled by widget
$('.notification-box').remove();
$notifications = $('
').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));