Show More
@@ -0,0 +1,105 b'' | |||||
|
1 | // | |||
|
2 | // Test saving a notebook with escaped characters | |||
|
3 | // | |||
|
4 | ||||
|
5 | casper.notebook_test(function () { | |||
|
6 | // don't use unicode with ambiguous composed/decomposed normalization | |||
|
7 | // because the filesystem may use a different normalization than literals. | |||
|
8 | // This causes no actual problems, but will break string comparison. | |||
|
9 | var nbname = "has#hash and space and unicΓΈβe.ipynb"; | |||
|
10 | ||||
|
11 | this.evaluate(function (nbname) { | |||
|
12 | IPython.notebook.notebook_name = nbname; | |||
|
13 | IPython._save_success = IPython._save_failed = false; | |||
|
14 | $([IPython.events]).on('notebook_saved.Notebook', function () { | |||
|
15 | IPython._save_success = true; | |||
|
16 | }); | |||
|
17 | $([IPython.events]).on('notebook_save_failed.Notebook', | |||
|
18 | function (event, xhr, status, error) { | |||
|
19 | IPython._save_failed = "save failed with " + xhr.status + xhr.responseText; | |||
|
20 | }); | |||
|
21 | IPython.notebook.save_notebook(); | |||
|
22 | }, {nbname:nbname}); | |||
|
23 | ||||
|
24 | this.waitFor(function () { | |||
|
25 | return this.evaluate(function(){ | |||
|
26 | return IPython._save_failed || IPython._save_success; | |||
|
27 | }); | |||
|
28 | }); | |||
|
29 | ||||
|
30 | this.then(function(){ | |||
|
31 | var success_failure = this.evaluate(function(){ | |||
|
32 | return [IPython._save_success, IPython._save_failed]; | |||
|
33 | }); | |||
|
34 | this.test.assertEquals(success_failure[1], false, "Save did not fail"); | |||
|
35 | this.test.assertEquals(success_failure[0], true, "Save OK"); | |||
|
36 | ||||
|
37 | var current_name = this.evaluate(function(){ | |||
|
38 | return IPython.notebook.notebook_name; | |||
|
39 | }); | |||
|
40 | this.test.assertEquals(current_name, nbname, "Save with complicated name"); | |||
|
41 | }); | |||
|
42 | ||||
|
43 | this.thenEvaluate(function(){ | |||
|
44 | $([IPython.events]).on('checkpoint_created.Notebook', function (evt, data) { | |||
|
45 | IPython._checkpoint_created = true; | |||
|
46 | }); | |||
|
47 | IPython._checkpoint_created = false; | |||
|
48 | IPython.notebook.save_checkpoint(); | |||
|
49 | }); | |||
|
50 | ||||
|
51 | this.waitFor(function () { | |||
|
52 | return this.evaluate(function(){ | |||
|
53 | return IPython._checkpoint_created; | |||
|
54 | }); | |||
|
55 | }); | |||
|
56 | ||||
|
57 | this.then(function(){ | |||
|
58 | var checkpoints = this.evaluate(function(){ | |||
|
59 | return IPython.notebook.checkpoints; | |||
|
60 | }); | |||
|
61 | this.test.assertEquals(checkpoints.length, 1, "checkpoints OK"); | |||
|
62 | }); | |||
|
63 | ||||
|
64 | this.then(function(){ | |||
|
65 | var baseUrl = this.get_notebook_server(); | |||
|
66 | this.open(baseUrl); | |||
|
67 | }); | |||
|
68 | ||||
|
69 | this.waitForSelector('.list_item'); | |||
|
70 | ||||
|
71 | this.then(function(){ | |||
|
72 | var notebook_url = this.evaluate(function(nbname){ | |||
|
73 | var escaped_name = encodeURIComponent(nbname); | |||
|
74 | var return_this_thing; | |||
|
75 | $("a.item_link").map(function (i,a) { | |||
|
76 | if (a.href.indexOf(escaped_name) >= 0) { | |||
|
77 | return_this_thing = a.href; | |||
|
78 | return; | |||
|
79 | } | |||
|
80 | }); | |||
|
81 | return return_this_thing; | |||
|
82 | }, {nbname:nbname}); | |||
|
83 | this.test.assertEquals(notebook_url == null, false, "Escaped URL in notebook list"); | |||
|
84 | // open the notebook | |||
|
85 | this.open(notebook_url); | |||
|
86 | }); | |||
|
87 | ||||
|
88 | // wait for the notebook | |||
|
89 | this.waitForSelector("#notebook"); | |||
|
90 | ||||
|
91 | this.waitFor(function(){ | |||
|
92 | return this.evaluate(function(){ | |||
|
93 | return IPython.notebook || false; | |||
|
94 | }); | |||
|
95 | }); | |||
|
96 | ||||
|
97 | this.then(function(){ | |||
|
98 | // check that the notebook name is correct | |||
|
99 | var notebook_name = this.evaluate(function(){ | |||
|
100 | return IPython.notebook.notebook_name; | |||
|
101 | }); | |||
|
102 | this.test.assertEquals(notebook_name, nbname, "Notebook name is correct"); | |||
|
103 | }); | |||
|
104 | ||||
|
105 | }); |
General Comments 0
You need to be logged in to leave comments.
Login now