2012-06-28 22:08:07 +04:00
File = require ' file '
fs = require ' fs '
describe ' File ' , ->
2012-07-25 03:44:24 +04:00
[ path , file ] = [ ]
2012-06-28 22:08:07 +04:00
beforeEach ->
2012-07-25 03:44:24 +04:00
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
2012-06-28 22:08:07 +04:00
fs . remove ( path ) if fs . exists ( path )
fs . write ( path , " this is old! " )
file = new File ( path )
afterEach ->
file . off ( )
2012-07-25 03:44:24 +04:00
fs . remove ( path ) if fs . exists ( path )
2012-06-28 22:08:07 +04:00
2012-06-29 00:01:12 +04:00
describe " when the contents of the file change " , ->
2012-06-28 22:08:07 +04:00
it " triggers ' contents-change ' event handlers " , ->
changeHandler = null
2012-07-25 03:44:24 +04:00
changeHandler = jasmine . createSpy ( ' changeHandler ' )
file . on ' contents-change ' , changeHandler
fs . write ( file . getPath ( ) , " this is new! " )
2012-06-28 22:08:07 +04:00
waitsFor " change event " , ->
changeHandler . callCount > 0
runs ->
changeHandler . reset ( )
fs . write ( file . getPath ( ) , " this is newer! " )
waitsFor " second change event " , ->
changeHandler . callCount > 0
2012-07-25 03:44:24 +04:00
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 ->
fs . remove ( newPath ) if fs . exists ( newPath )
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