// Test the notification area and widgets casper.notebook_test(function () { var that = this; var widget = function (name) { return that.evaluate(function (name) { return (IPython.notification_area.widget(name) !== undefined); }, name); }; var get_widget = function (name) { return that.evaluate(function (name) { return (IPython.notification_area.get_widget(name) !== undefined); }, name); }; var new_notification_widget = function (name) { return that.evaluate(function (name) { return (IPython.notification_area.new_notification_widget(name) !== undefined); }, name); }; var widget_has_class = function (name, class_name) { return that.evaluate(function (name, class_name) { var w = IPython.notification_area.get_widget(name); return w.element.hasClass(class_name); }, name, class_name); }; var widget_message = function (name) { return that.evaluate(function (name) { var w = IPython.notification_area.get_widget(name); return w.get_message(); }, name); }; this.then(function () { // check that existing widgets are there this.test.assert(get_widget('kernel') && widget('kernel'), 'The kernel notification widget exists'); this.test.assert(get_widget('notebook') && widget('notbook'), 'The notebook notification widget exists'); // try getting a non-existant widget this.test.assertRaises(get_widget, 'foo', 'get_widget: error is thrown'); // try creating a non-existant widget this.test.assert(widget('bar'), 'widget: new widget is created'); // try creating a widget that already exists this.test.assertRaises(new_notification_widget, 'kernel', 'new_notification_widget: error is thrown'); }); // test creating 'info' messages this.thenEvaluate(function () { var tnw = IPython.notification_area.widget('test'); tnw.info('test info'); }); this.waitUntilVisible('#notification_test', function () { this.test.assert(widget_has_class('test', 'info'), 'info: class is correct'); this.test.assertEquals(widget_message('test'), 'test info', 'info: message is correct'); }); // test creating 'warning' messages this.thenEvaluate(function () { var tnw = IPython.notification_area.widget('test'); tnw.warning('test warning'); }); this.waitUntilVisible('#notification_test', function () { this.test.assert(widget_has_class('test', 'warning'), 'warning: class is correct'); this.test.assertEquals(widget_message('test'), 'test warning', 'warning: message is correct'); }); // test creating 'danger' messages this.thenEvaluate(function () { var tnw = IPython.notification_area.widget('test'); tnw.danger('test danger'); }); this.waitUntilVisible('#notification_test', function () { this.test.assert(widget_has_class('test', 'danger'), 'danger: class is correct'); this.test.assertEquals(widget_message('test'), 'test danger', 'danger: message is correct'); }); // test message timeout this.thenEvaluate(function () { var tnw = IPython.notification_area.widget('test'); tnw.set_message('test timeout', 1000); }); this.waitUntilVisible('#notification_test', function () { this.test.assertEquals(widget_message('test'), 'test timeout', 'timeout: message is correct'); }); this.waitWhileVisible('#notification_test', function () { this.test.assertEquals(widget_message('test'), '', 'timeout: message was cleared'); }); // test click callback this.thenEvaluate(function () { var tnw = IPython.notification_area.widget('test'); tnw._clicked = false; tnw.set_message('test click', undefined, function () { tnw._clicked = true; return true; }); }); this.waitUntilVisible('#notification_test', function () { this.test.assertEquals(widget_message('test'), 'test click', 'callback: message is correct'); this.click('#notification_test'); }); this.waitFor(function () { return this.evaluate(function () { return IPython.notification_area.widget('test')._clicked; }); }, function () { this.waitWhileVisible('#notification_test', function () { this.test.assertEquals(widget_message('test'), '', 'callback: message was cleared'); }); }); });