mirror of
https://github.com/jupyter/notebook.git
synced 2025-03-31 13:40:29 +08:00
Add tests for notification area and widgets
This commit is contained in:
parent
e68f6e585a
commit
6f49f4b78e
116
IPython/html/tests/notebook/notifications.js
Normal file
116
IPython/html/tests/notebook/notifications.js
Normal file
@ -0,0 +1,116 @@
|
||||
// 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');
|
||||
});
|
||||
});
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user