save.js
112 lines
| 3.8 KiB
| application/javascript
|
JavascriptLexer
MinRK
|
r13860 | // | ||
// Test saving a notebook with escaped characters | ||||
// | ||||
casper.notebook_test(function () { | ||||
// don't use unicode with ambiguous composed/decomposed normalization | ||||
// because the filesystem may use a different normalization than literals. | ||||
// This causes no actual problems, but will break string comparison. | ||||
var nbname = "has#hash and space and unicø∂e.ipynb"; | ||||
MinRK
|
r18353 | this.append_cell("s = '??'", 'code'); | ||
this.thenEvaluate(function (nbname) { | ||||
MinRK
|
r17324 | require(['base/js/events'], function (events) { | ||
Min RK
|
r18755 | IPython.notebook.set_notebook_name(nbname); | ||
MinRK
|
r17324 | IPython._save_success = IPython._save_failed = false; | ||
events.on('notebook_saved.Notebook', function () { | ||||
IPython._save_success = true; | ||||
}); | ||||
events.on('notebook_save_failed.Notebook', | ||||
Min RK
|
r18755 | function (event, error) { | ||
IPython._save_failed = "save failed with " + error; | ||||
MinRK
|
r17324 | }); | ||
IPython.notebook.save_notebook(); | ||||
MinRK
|
r13860 | }); | ||
}, {nbname:nbname}); | ||||
this.waitFor(function () { | ||||
return this.evaluate(function(){ | ||||
return IPython._save_failed || IPython._save_success; | ||||
}); | ||||
}); | ||||
this.then(function(){ | ||||
var success_failure = this.evaluate(function(){ | ||||
return [IPython._save_success, IPython._save_failed]; | ||||
}); | ||||
this.test.assertEquals(success_failure[1], false, "Save did not fail"); | ||||
this.test.assertEquals(success_failure[0], true, "Save OK"); | ||||
var current_name = this.evaluate(function(){ | ||||
return IPython.notebook.notebook_name; | ||||
}); | ||||
this.test.assertEquals(current_name, nbname, "Save with complicated name"); | ||||
Min RK
|
r18755 | var current_path = this.evaluate(function(){ | ||
return IPython.notebook.notebook_path; | ||||
}); | ||||
this.test.assertEquals(current_path, nbname, "path OK"); | ||||
MinRK
|
r13860 | }); | ||
this.thenEvaluate(function(){ | ||||
IPython._checkpoint_created = false; | ||||
MinRK
|
r17324 | require(['base/js/events'], function (events) { | ||
events.on('checkpoint_created.Notebook', function (evt, data) { | ||||
IPython._checkpoint_created = true; | ||||
}); | ||||
}); | ||||
MinRK
|
r13860 | IPython.notebook.save_checkpoint(); | ||
}); | ||||
this.waitFor(function () { | ||||
return this.evaluate(function(){ | ||||
return IPython._checkpoint_created; | ||||
}); | ||||
}); | ||||
this.then(function(){ | ||||
var checkpoints = this.evaluate(function(){ | ||||
return IPython.notebook.checkpoints; | ||||
}); | ||||
this.test.assertEquals(checkpoints.length, 1, "checkpoints OK"); | ||||
}); | ||||
this.then(function(){ | ||||
Min RK
|
r18755 | this.open_dashboard(); | ||
MinRK
|
r13860 | }); | ||
this.then(function(){ | ||||
var notebook_url = this.evaluate(function(nbname){ | ||||
var escaped_name = encodeURIComponent(nbname); | ||||
MinRK
|
r17324 | var return_this_thing = null; | ||
MinRK
|
r13860 | $("a.item_link").map(function (i,a) { | ||
if (a.href.indexOf(escaped_name) >= 0) { | ||||
return_this_thing = a.href; | ||||
return; | ||||
} | ||||
}); | ||||
return return_this_thing; | ||||
}, {nbname:nbname}); | ||||
Thomas Kluyver
|
r17223 | this.test.assertNotEquals(notebook_url, null, "Escaped URL in notebook list"); | ||
MinRK
|
r13860 | // open the notebook | ||
this.open(notebook_url); | ||||
}); | ||||
// wait for the notebook | ||||
Min RK
|
r18755 | this.waitFor(this.kernel_running); | ||
MinRK
|
r13860 | |||
Min RK
|
r18755 | this.waitFor(function() { | ||
return this.evaluate(function () { | ||||
return IPython && IPython.notebook && true; | ||||
MinRK
|
r13860 | }); | ||
}); | ||||
this.then(function(){ | ||||
// check that the notebook name is correct | ||||
var notebook_name = this.evaluate(function(){ | ||||
return IPython.notebook.notebook_name; | ||||
}); | ||||
this.test.assertEquals(notebook_name, nbname, "Notebook name is correct"); | ||||
}); | ||||
}); | ||||