2012-01-05 23:13:55 +04:00
|
|
|
Buffer = require 'buffer'
|
2011-12-16 02:13:34 +04:00
|
|
|
Editor = require 'editor'
|
|
|
|
$ = require 'jquery'
|
|
|
|
ck = require 'coffeekup'
|
2011-12-17 02:42:38 +04:00
|
|
|
fs = require 'fs'
|
2011-12-16 02:13:34 +04:00
|
|
|
|
|
|
|
describe "Editor", ->
|
2011-12-17 04:25:33 +04:00
|
|
|
mainDiv = null
|
|
|
|
editor = null
|
|
|
|
filePath = null
|
|
|
|
tempFilePath = null
|
2011-12-16 02:13:34 +04:00
|
|
|
|
|
|
|
beforeEach ->
|
|
|
|
filePath = require.resolve 'fixtures/sample.txt'
|
2011-12-17 02:42:38 +04:00
|
|
|
tempFilePath = '/tmp/temp.txt'
|
2011-12-29 23:12:13 +04:00
|
|
|
editor = Editor.build()
|
2011-12-16 02:13:34 +04:00
|
|
|
|
|
|
|
afterEach ->
|
2011-12-17 02:42:38 +04:00
|
|
|
fs.remove tempFilePath
|
2011-12-16 02:13:34 +04:00
|
|
|
editor.destroy()
|
|
|
|
|
2011-12-29 23:12:13 +04:00
|
|
|
describe "initialize", ->
|
2011-12-30 00:23:04 +04:00
|
|
|
it "has a buffer", ->
|
|
|
|
expect(editor.buffer).toBeDefined()
|
2011-12-16 02:13:34 +04:00
|
|
|
|
|
|
|
describe 'destroy', ->
|
2011-12-29 23:12:13 +04:00
|
|
|
it 'destroys the ace editor', ->
|
2011-12-17 04:25:33 +04:00
|
|
|
spyOn(editor.aceEditor, 'destroy').andCallThrough()
|
2011-12-16 02:13:34 +04:00
|
|
|
editor.destroy()
|
|
|
|
expect(editor.aceEditor.destroy).toHaveBeenCalled()
|
|
|
|
|
2012-01-05 23:13:55 +04:00
|
|
|
describe "setBuffer(buffer)", ->
|
|
|
|
it "sets the document on the aceSession", ->
|
|
|
|
buffer = new Buffer filePath
|
|
|
|
editor.setBuffer buffer
|
|
|
|
|
|
|
|
fileContents = fs.read(filePath)
|
|
|
|
expect(editor.getAceSession().getValue()).toBe fileContents
|
|
|
|
|
|
|
|
it "sets the language mode based on the file extension", ->
|
|
|
|
buffer = new Buffer "something.js"
|
|
|
|
editor.setBuffer buffer
|
|
|
|
|
|
|
|
expect(editor.getAceSession().getMode().name).toBe 'javascript'
|
|
|
|
|
2011-12-16 02:13:34 +04:00
|
|
|
describe "when the text is changed via the ace editor", ->
|
|
|
|
it "updates the buffer text", ->
|
2012-01-05 23:26:14 +04:00
|
|
|
buffer = new Buffer(filePath)
|
|
|
|
editor.setBuffer(buffer)
|
|
|
|
expect(buffer.getText()).not.toMatch /^.ooo/
|
2011-12-23 20:48:11 +04:00
|
|
|
editor.getAceSession().insert {row: 0, column: 1}, 'ooo'
|
2012-01-05 23:26:14 +04:00
|
|
|
expect(buffer.getText()).toMatch /^.ooo/
|
2011-12-17 02:42:38 +04:00
|
|
|
|
2011-12-17 04:25:33 +04:00
|
|
|
describe "save", ->
|
|
|
|
describe "when the current buffer has a url", ->
|
|
|
|
beforeEach ->
|
2012-01-05 23:26:14 +04:00
|
|
|
buffer = new Buffer(tempFilePath)
|
|
|
|
editor.setBuffer(buffer)
|
2011-12-17 04:25:33 +04:00
|
|
|
|
|
|
|
it "saves the current buffer to disk", ->
|
|
|
|
editor.buffer.setText 'Edited buffer!'
|
|
|
|
expect(fs.exists(tempFilePath)).toBeFalsy()
|
|
|
|
|
|
|
|
editor.save()
|
2011-12-17 02:42:38 +04:00
|
|
|
|
2011-12-17 04:25:33 +04:00
|
|
|
expect(fs.exists(tempFilePath)).toBeTruthy()
|
|
|
|
expect(fs.read(tempFilePath)).toBe 'Edited buffer!'
|
2011-12-17 02:42:38 +04:00
|
|
|
|
2011-12-17 04:25:33 +04:00
|
|
|
describe "when the current buffer has no url", ->
|
|
|
|
selectedFilePath = null
|
2011-12-17 02:42:38 +04:00
|
|
|
beforeEach ->
|
2011-12-17 04:25:33 +04:00
|
|
|
expect(editor.buffer.url).toBeUndefined()
|
|
|
|
editor.buffer.setText 'Save me to a new url'
|
|
|
|
spyOn(atom.native, 'savePanel').andCallFake -> selectedFilePath
|
2011-12-17 02:42:38 +04:00
|
|
|
|
2011-12-17 04:25:33 +04:00
|
|
|
it "presents a 'save as' dialog", ->
|
|
|
|
editor.save()
|
|
|
|
expect(atom.native.savePanel).toHaveBeenCalled()
|
2011-12-17 02:42:38 +04:00
|
|
|
|
2011-12-17 04:25:33 +04:00
|
|
|
describe "when a url is chosen", ->
|
|
|
|
it "saves the buffer to the chosen url", ->
|
|
|
|
selectedFilePath = '/tmp/temp.txt'
|
2011-12-17 02:42:38 +04:00
|
|
|
|
2011-12-17 04:25:33 +04:00
|
|
|
editor.save()
|
2011-12-17 02:42:38 +04:00
|
|
|
|
2011-12-17 04:25:33 +04:00
|
|
|
expect(fs.exists(selectedFilePath)).toBeTruthy()
|
|
|
|
expect(fs.read(selectedFilePath)).toBe 'Save me to a new url'
|
2011-12-17 02:42:38 +04:00
|
|
|
|
2011-12-17 04:25:33 +04:00
|
|
|
describe "when dialog is cancelled", ->
|
|
|
|
it "does not save the buffer", ->
|
|
|
|
selectedFilePath = null
|
2011-12-17 02:42:38 +04:00
|
|
|
|
2011-12-17 04:25:33 +04:00
|
|
|
editor.save()
|
2011-12-17 02:42:38 +04:00
|
|
|
|
2011-12-17 04:25:33 +04:00
|
|
|
expect(fs.exists(selectedFilePath)).toBeFalsy()
|
2011-12-17 02:42:38 +04:00
|
|
|
|