Skip to content

Commit

Permalink
Add specs for the beforeunload handler.
Browse files Browse the repository at this point in the history
  • Loading branch information
zcbenz committed Sep 2, 2013
1 parent e423f60 commit cfb957a
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 3 deletions.
42 changes: 39 additions & 3 deletions spec/api/window.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,32 @@ describe 'window module', ->
done()
w.loadUrl 'file://' + path.join(fixtures, 'api', 'unload.html')

xdescribe 'window.close()', ->
it 'should emit unload handler', (done) ->
it 'should emit beforeunload handler', (done) ->
w = new BrowserWindow(show: false)
w.on 'destroyed', ->
w.on 'onbeforeunload', ->
w.destroy()
done()
w.on 'loading-state-changed', (event, isLoading) ->
if (!isLoading)
w.close()
w.loadUrl 'file://' + path.join(fixtures, 'api', 'beforeunload-false.html')

describe 'window.close()', ->
xit 'should emit unload handler', (done) ->
w = new BrowserWindow(show: false)
w.on 'closed', ->
test = path.join(fixtures, 'api', 'close')
content = fs.readFileSync(test)
fs.unlinkSync(test)
assert.equal String(content), 'close'
done()
w.loadUrl 'file://' + path.join(fixtures, 'api', 'close.html')

it 'should emit beforeunload handler', (done) ->
w = new BrowserWindow(show: false)
w.on 'onbeforeunload', done
w.loadUrl 'file://' + path.join(fixtures, 'api', 'close-beforeunload-true.html')

describe 'BrowserWindow.loadUrl(url)', ->
it 'should emit loading-state-changed event', (done) ->
w = new BrowserWindow(show: false)
Expand All @@ -49,3 +64,24 @@ describe 'window module', ->

++count
w.loadUrl 'about:blank'

describe 'beforeunload handler', ->
it 'returning true would not prevent close', (done) ->
w = new BrowserWindow(show: false)
w.on 'closed', ->
done()
w.loadUrl 'file://' + path.join(fixtures, 'api', 'close-beforeunload-true.html')

it 'returning false would prevent close', (done) ->
w = new BrowserWindow(show: false)
w.on 'onbeforeunload', ->
w.destroy()
done()
w.loadUrl 'file://' + path.join(fixtures, 'api', 'close-beforeunload-false.html')

it 'returning non-empty string would prevent close', (done) ->
w = new BrowserWindow(show: false)
w.on 'onbeforeunload', ->
w.destroy()
done()
w.loadUrl 'file://' + path.join(fixtures, 'api', 'close-beforeunload-false.html')
12 changes: 12 additions & 0 deletions spec/fixtures/api/beforeunload-false.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<html>
<body>
<script type="text/javascript" charset="utf-8">
window.onbeforeunload = function() {
setImmediate(function() {
require('remote').getCurrentWindow().emit('onbeforeunload');
});
return false;
}
</script>
</body>
</html>
13 changes: 13 additions & 0 deletions spec/fixtures/api/close-beforeunload-false.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<html>
<body>
<script type="text/javascript" charset="utf-8">
window.onbeforeunload = function() {
setImmediate(function() {
require('remote').getCurrentWindow().emit('onbeforeunload');
});
return false;
}
window.close();
</script>
</body>
</html>
13 changes: 13 additions & 0 deletions spec/fixtures/api/close-beforeunload-string.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<html>
<body>
<script type="text/javascript" charset="utf-8">
window.onbeforeunload = function() {
setImmediate(function() {
require('remote').getCurrentWindow().emit('onbeforeunload');
});
return 'string';
}
window.close();
</script>
</body>
</html>
14 changes: 14 additions & 0 deletions spec/fixtures/api/close-beforeunload-true.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<html>
<body>
<script type="text/javascript" charset="utf-8">
window.onbeforeunload = function() {
setImmediate(function() {
require('remote').getCurrentWindow().emit('onbeforeunload');
});
return true;
}
window.close();
</script>
</body>
</html>

0 comments on commit cfb957a

Please sign in to comment.