pulsar/spec/app/file-spec.coffee
2012-08-27 17:36:36 -05:00

88 lines
2.4 KiB
CoffeeScript

File = require 'file'
fs = require 'fs'
describe 'File', ->
[path, file] = []
beforeEach ->
path = fs.join(require.resolve('fixtures'), "atom-file-test.txt") # Don't put in /tmp because /tmp symlinks to /private/tmp and screws up the rename test
fs.remove(path) if fs.exists(path)
fs.write(path, "this is old!")
file = new File(path)
afterEach ->
file.off()
fs.remove(path) if fs.exists(path)
describe "when the contents of the file change", ->
it "triggers 'contents-change' event handlers", ->
changeHandler = null
changeHandler = jasmine.createSpy('changeHandler')
file.on 'contents-change', changeHandler
fs.write(file.getPath(), "this is new!")
waitsFor "change event", ->
changeHandler.callCount > 0
runs ->
changeHandler.reset()
fs.write(file.getPath(), "this is newer!")
waitsFor "second change event", ->
changeHandler.callCount > 0
describe "when the file is removed", ->
it "triggers 'remove' event handlers", ->
removeHandler = null
removeHandler = jasmine.createSpy('removeHandler')
file.on 'remove', removeHandler
fs.remove(file.getPath())
waitsFor "remove event", ->
removeHandler.callCount > 0
describe "when a file is moved (via the filesystem)", ->
newPath = null
beforeEach ->
newPath = fs.join(fs.directory(path), "atom-file-was-moved-test.txt")
afterEach ->
if fs.exists(newPath)
fs.remove(newPath)
waitsFor "remove event", (done) -> file.on 'remove', done
it "it updates its path", ->
moveHandler = null
moveHandler = jasmine.createSpy('moveHandler')
file.on 'move', moveHandler
fs.move(path, newPath)
waitsFor "move event", ->
moveHandler.callCount > 0
runs ->
expect(file.getPath()).toBe newPath
it "maintains 'contents-change' events set on previous path", ->
moveHandler = null
moveHandler = jasmine.createSpy('moveHandler')
file.on 'move', moveHandler
changeHandler = null
changeHandler = jasmine.createSpy('changeHandler')
file.on 'contents-change', changeHandler
fs.move(path, newPath)
waitsFor "move event", ->
moveHandler.callCount > 0
runs ->
expect(changeHandler).not.toHaveBeenCalled()
fs.write(file.getPath(), "this is new!")
waitsFor "change event", ->
changeHandler.callCount > 0