Files
atom/packages/dev-live-reload/spec/dev-live-reload-spec.js
2019-02-25 12:19:44 +01:00

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)
})
})
})