##// END OF EJS Templates
Add tests for notification area and widgets
Jessica B. Hamrick -
Show More
@@ -0,0 +1,116
1 // Test the notification area and widgets
2
3 casper.notebook_test(function () {
4 var that = this;
5 var widget = function (name) {
6 return that.evaluate(function (name) {
7 return (IPython.notification_area.widget(name) !== undefined);
8 }, name);
9 };
10
11 var get_widget = function (name) {
12 return that.evaluate(function (name) {
13 return (IPython.notification_area.get_widget(name) !== undefined);
14 }, name);
15 };
16
17 var new_notification_widget = function (name) {
18 return that.evaluate(function (name) {
19 return (IPython.notification_area.new_notification_widget(name) !== undefined);
20 }, name);
21 };
22
23 var widget_has_class = function (name, class_name) {
24 return that.evaluate(function (name, class_name) {
25 var w = IPython.notification_area.get_widget(name);
26 return w.element.hasClass(class_name);
27 }, name, class_name);
28 };
29
30 var widget_message = function (name) {
31 return that.evaluate(function (name) {
32 var w = IPython.notification_area.get_widget(name);
33 return w.get_message();
34 }, name);
35 };
36
37 this.then(function () {
38 // check that existing widgets are there
39 this.test.assert(get_widget('kernel') && widget('kernel'), 'The kernel notification widget exists');
40 this.test.assert(get_widget('notebook') && widget('notbook'), 'The notebook notification widget exists');
41
42 // try getting a non-existant widget
43 this.test.assertRaises(get_widget, 'foo', 'get_widget: error is thrown');
44
45 // try creating a non-existant widget
46 this.test.assert(widget('bar'), 'widget: new widget is created');
47
48 // try creating a widget that already exists
49 this.test.assertRaises(new_notification_widget, 'kernel', 'new_notification_widget: error is thrown');
50 });
51
52 // test creating 'info' messages
53 this.thenEvaluate(function () {
54 var tnw = IPython.notification_area.widget('test');
55 tnw.info('test info');
56 });
57 this.waitUntilVisible('#notification_test', function () {
58 this.test.assert(widget_has_class('test', 'info'), 'info: class is correct');
59 this.test.assertEquals(widget_message('test'), 'test info', 'info: message is correct');
60 });
61
62 // test creating 'warning' messages
63 this.thenEvaluate(function () {
64 var tnw = IPython.notification_area.widget('test');
65 tnw.warning('test warning');
66 });
67 this.waitUntilVisible('#notification_test', function () {
68 this.test.assert(widget_has_class('test', 'warning'), 'warning: class is correct');
69 this.test.assertEquals(widget_message('test'), 'test warning', 'warning: message is correct');
70 });
71
72 // test creating 'danger' messages
73 this.thenEvaluate(function () {
74 var tnw = IPython.notification_area.widget('test');
75 tnw.danger('test danger');
76 });
77 this.waitUntilVisible('#notification_test', function () {
78 this.test.assert(widget_has_class('test', 'danger'), 'danger: class is correct');
79 this.test.assertEquals(widget_message('test'), 'test danger', 'danger: message is correct');
80 });
81
82 // test message timeout
83 this.thenEvaluate(function () {
84 var tnw = IPython.notification_area.widget('test');
85 tnw.set_message('test timeout', 1000);
86 });
87 this.waitUntilVisible('#notification_test', function () {
88 this.test.assertEquals(widget_message('test'), 'test timeout', 'timeout: message is correct');
89 });
90 this.waitWhileVisible('#notification_test', function () {
91 this.test.assertEquals(widget_message('test'), '', 'timeout: message was cleared');
92 });
93
94 // test click callback
95 this.thenEvaluate(function () {
96 var tnw = IPython.notification_area.widget('test');
97 tnw._clicked = false;
98 tnw.set_message('test click', undefined, function () {
99 tnw._clicked = true;
100 return true;
101 });
102 });
103 this.waitUntilVisible('#notification_test', function () {
104 this.test.assertEquals(widget_message('test'), 'test click', 'callback: message is correct');
105 this.click('#notification_test');
106 });
107 this.waitFor(function () {
108 return this.evaluate(function () {
109 return IPython.notification_area.widget('test')._clicked;
110 });
111 }, function () {
112 this.waitWhileVisible('#notification_test', function () {
113 this.test.assertEquals(widget_message('test'), '', 'callback: message was cleared');
114 });
115 });
116 });
General Comments 0
You need to be logged in to leave comments. Login now