mirror of
https://github.com/atom/atom.git
synced 2026-02-06 12:44:59 -05:00
131 lines
4.6 KiB
JavaScript
131 lines
4.6 KiB
JavaScript
const { it, fit, ffit, afterEach, beforeEach } = require('./async-spec-helpers') // eslint-disable-line no-unused-vars
|
|
|
|
describe('Dev Live Reload', () => {
|
|
describe('package activation', () => {
|
|
let [pack, mainModule] = []
|
|
|
|
beforeEach(() => {
|
|
pack = atom.packages.loadPackage('dev-live-reload')
|
|
pack.requireMainModule()
|
|
mainModule = pack.mainModule
|
|
spyOn(mainModule, 'startWatching')
|
|
})
|
|
|
|
describe('when the window is not in dev mode', () => {
|
|
beforeEach(() => spyOn(atom, 'inDevMode').andReturn(false))
|
|
|
|
it('does not watch files', async () => {
|
|
spyOn(atom.packages, 'hasActivatedInitialPackages').andReturn(true)
|
|
|
|
await atom.packages.activatePackage('dev-live-reload')
|
|
expect(mainModule.startWatching).not.toHaveBeenCalled()
|
|
})
|
|
})
|
|
|
|
describe('when the window is in spec mode', () => {
|
|
beforeEach(() => spyOn(atom, 'inSpecMode').andReturn(true))
|
|
|
|
it('does not watch files', async () => {
|
|
spyOn(atom.packages, 'hasActivatedInitialPackages').andReturn(true)
|
|
|
|
await atom.packages.activatePackage('dev-live-reload')
|
|
expect(mainModule.startWatching).not.toHaveBeenCalled()
|
|
})
|
|
})
|
|
|
|
describe('when the window is in dev mode', () => {
|
|
beforeEach(() => {
|
|
spyOn(atom, 'inDevMode').andReturn(true)
|
|
spyOn(atom, 'inSpecMode').andReturn(false)
|
|
})
|
|
|
|
it('watches files', async () => {
|
|
spyOn(atom.packages, 'hasActivatedInitialPackages').andReturn(true)
|
|
|
|
await atom.packages.activatePackage('dev-live-reload')
|
|
expect(mainModule.startWatching).toHaveBeenCalled()
|
|
})
|
|
})
|
|
|
|
describe('when the window is in both dev mode and spec mode', () => {
|
|
beforeEach(() => {
|
|
spyOn(atom, 'inDevMode').andReturn(true)
|
|
spyOn(atom, 'inSpecMode').andReturn(true)
|
|
})
|
|
|
|
it('does not watch files', async () => {
|
|
spyOn(atom.packages, 'hasActivatedInitialPackages').andReturn(true)
|
|
|
|
await atom.packages.activatePackage('dev-live-reload')
|
|
expect(mainModule.startWatching).not.toHaveBeenCalled()
|
|
})
|
|
})
|
|
|
|
describe('when the package is activated before initial packages have been activated', () => {
|
|
beforeEach(() => {
|
|
spyOn(atom, 'inDevMode').andReturn(true)
|
|
spyOn(atom, 'inSpecMode').andReturn(false)
|
|
})
|
|
|
|
it('waits until all initial packages have been activated before watching files', async () => {
|
|
await atom.packages.activatePackage('dev-live-reload')
|
|
expect(mainModule.startWatching).not.toHaveBeenCalled()
|
|
|
|
atom.packages.emitter.emit('did-activate-initial-packages')
|
|
expect(mainModule.startWatching).toHaveBeenCalled()
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('package deactivation', () => {
|
|
beforeEach(() => {
|
|
spyOn(atom, 'inDevMode').andReturn(true)
|
|
spyOn(atom, 'inSpecMode').andReturn(false)
|
|
})
|
|
|
|
it('stops watching all files', async () => {
|
|
spyOn(atom.packages, 'hasActivatedInitialPackages').andReturn(true)
|
|
const { mainModule } = await atom.packages.activatePackage(
|
|
'dev-live-reload'
|
|
)
|
|
expect(mainModule.uiWatcher).not.toBeNull()
|
|
|
|
spyOn(mainModule.uiWatcher, 'destroy')
|
|
|
|
await atom.packages.deactivatePackage('dev-live-reload')
|
|
expect(mainModule.uiWatcher.destroy).toHaveBeenCalled()
|
|
})
|
|
|
|
it('unsubscribes from the onDidActivateInitialPackages subscription if it is disabled before all initial packages are activated', async () => {
|
|
const { mainModule } = await atom.packages.activatePackage(
|
|
'dev-live-reload'
|
|
)
|
|
expect(mainModule.activatedDisposable.disposed).toBe(false)
|
|
|
|
await atom.packages.deactivatePackage('dev-live-reload')
|
|
expect(mainModule.activatedDisposable.disposed).toBe(true)
|
|
|
|
spyOn(mainModule, 'startWatching')
|
|
atom.packages.emitter.emit('did-activate-initial-packages')
|
|
expect(mainModule.startWatching).not.toHaveBeenCalled()
|
|
})
|
|
|
|
it('removes its commands', async () => {
|
|
spyOn(atom.packages, 'hasActivatedInitialPackages').andReturn(true)
|
|
await atom.packages.activatePackage('dev-live-reload')
|
|
expect(
|
|
atom.commands
|
|
.findCommands({ target: atom.views.getView(atom.workspace) })
|
|
.filter(command => command.name.startsWith('dev-live-reload')).length
|
|
).toBeGreaterThan(0)
|
|
|
|
await atom.packages.deactivatePackage('dev-live-reload')
|
|
expect(
|
|
atom.commands
|
|
.findCommands({ target: atom.views.getView(atom.workspace) })
|
|
.filter(command => command.name.startsWith('dev-live-reload')).length
|
|
).toBe(0)
|
|
})
|
|
})
|
|
})
|