##// END OF EJS Templates
trigger save before copy if there are unsaved changes....
trigger save before copy if there are unsaved changes. just like we do before downloading

File last commit:

r20335:407d0710
r20667:9b4a48bb
Show More
manager.js
94 lines | 3.5 KiB | application/javascript | JavascriptLexer
Jonathan Frederic
Clarified API for the create_model function,...
r18512 // Test the widget manager.
casper.notebook_test(function () {
var index;
this.then(function () {
// Check if the WidgetManager class is defined.
this.test.assert(this.evaluate(function() {
return IPython.WidgetManager !== undefined;
}), 'WidgetManager class is defined');
// Check if the widget manager has been instantiated.
this.test.assert(this.evaluate(function() {
return IPython.notebook.kernel.widget_manager !== undefined;
}), 'Notebook widget manager instantiated');
// Try creating a widget from Javascript.
Jonathan Frederic
Rebase fixes
r18517 this.evaluate(function() {
IPython.notebook.kernel.widget_manager.create_model({
model_name: 'WidgetModel',
Jonathan Frederic
Initial stab at adding promises to the widget framework.
r18882 widget_class: 'IPython.html.widgets.widget_int.IntSlider'})
.then(function(model) {
Jonathan Frederic
Rebase fixes
r18517 console.log('Create success!', model);
window.slider_id = model.id;
Jonathan Frederic
Initial stab at adding promises to the widget framework.
r18882 }, function(error) { console.log(error); });
Jonathan Frederic
Rebase fixes
r18517 });
});
// Wait for the state to be recieved.
this.waitFor(function check() {
return this.evaluate(function() {
return window.slider_id !== undefined;
Jonathan Frederic
Clarified API for the create_model function,...
r18512 });
});
index = this.append_cell(
'from IPython.html.widgets import Widget\n' +
Jonathan Frederic
Address some more review comments...
r18514 'widget = list(Widget.widgets.values())[0]\n' +
Jonathan Frederic
Clarified API for the create_model function,...
r18512 'print(widget.model_id)');
this.execute_cell_then(index, function(index) {
var output = this.get_output_cell(index).text.trim();
Jonathan Frederic
Rebase fixes
r18517 var slider_id = this.evaluate(function() { return window.slider_id; });
this.test.assertEquals(output, slider_id, "Widget created from the front-end.");
Jonathan Frederic
Clarified API for the create_model function,...
r18512 });
Jonathan Frederic
Test for persistence.
r20335
// Widget persistence tests.
index = this.append_cell(
'from IPython.html.widgets import HTML\n' +
'from IPython.display import display\n' +
'display(HTML(value="<div id=\'hello\'></div>"))');
this.execute_cell_then(index, function() {});
index = this.append_cell(
'display(HTML(value="<div id=\'world\'></div>"))');
this.execute_cell_then(index, function() {});
var that = this;
this.then(function() {
// Wait for the widgets to be shown.
that.waitForSelector('#hello', function() {
that.waitForSelector('#world', function() {
that.test.assertExists('#hello', 'Hello HTML widget constructed.');
that.test.assertExists('#world', 'World HTML widget constructed.');
// Save the notebook.
that.evaluate(function() {
IPython.notebook.save_notebook(false).then(function() {
window.was_saved = true;
});
});
that.waitFor(function check() {
return that.evaluate(function() {
return window.was_saved;
});
}, function then() {
// Reload the page
that.reload(function() {
// Wait for the elements to show up again.
that.waitForSelector('#hello', function() {
that.waitForSelector('#world', function() {
that.test.assertExists('#hello', 'Hello HTML widget persisted.');
that.test.assertExists('#world', 'World HTML widget persisted.');
});
});
});
});
});
});
});
Jonathan Frederic
Clarified API for the create_model function,...
r18512 });