mirror of
https://github.com/atom/atom.git
synced 2026-02-11 23:25:03 -05:00
82 lines
2.4 KiB
JavaScript
82 lines
2.4 KiB
JavaScript
/** @babel */
|
|
|
|
import path from 'path'
|
|
import IncompatiblePackagesComponent from '../lib/incompatible-packages-component'
|
|
import StatusIconComponent from '../lib/status-icon-component'
|
|
|
|
// This exists only so that CI passes on both Atom 1.6 and Atom 1.8+.
|
|
function findStatusBar () {
|
|
if (typeof atom.workspace.getFooterPanels === 'function') {
|
|
const footerPanels = atom.workspace.getFooterPanels()
|
|
if (footerPanels.length > 0) {
|
|
return footerPanels[0].getItem()
|
|
}
|
|
}
|
|
|
|
return atom.workspace.getBottomPanels()[0].getItem()
|
|
}
|
|
|
|
describe('Incompatible packages', () => {
|
|
let statusBar
|
|
|
|
beforeEach(() => {
|
|
atom.views.getView(atom.workspace)
|
|
|
|
waitsForPromise(() => atom.packages.activatePackage('status-bar'))
|
|
|
|
runs(() => {
|
|
statusBar = findStatusBar()
|
|
})
|
|
})
|
|
|
|
describe('when there are packages with incompatible native modules', () => {
|
|
beforeEach(() => {
|
|
let incompatiblePackage = atom.packages.loadPackage(
|
|
path.join(__dirname, 'fixtures', 'incompatible-package')
|
|
)
|
|
spyOn(incompatiblePackage, 'isCompatible').andReturn(false)
|
|
incompatiblePackage.incompatibleModules = []
|
|
waitsForPromise(() =>
|
|
atom.packages.activatePackage('incompatible-packages')
|
|
)
|
|
|
|
waits(1)
|
|
})
|
|
|
|
it('adds an icon to the status bar', () => {
|
|
let statusBarIcon = statusBar.getRightTiles()[0].getItem()
|
|
expect(statusBarIcon.constructor).toBe(StatusIconComponent)
|
|
})
|
|
|
|
describe('clicking the icon', () => {
|
|
it('displays the incompatible packages view in a pane', () => {
|
|
let statusBarIcon = statusBar.getRightTiles()[0].getItem()
|
|
statusBarIcon.element.dispatchEvent(new MouseEvent('click'))
|
|
|
|
let activePaneItem
|
|
waitsFor(() => (activePaneItem = atom.workspace.getActivePaneItem()))
|
|
|
|
runs(() => {
|
|
expect(activePaneItem.constructor).toBe(IncompatiblePackagesComponent)
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('when there are no packages with incompatible native modules', () => {
|
|
beforeEach(() => {
|
|
waitsForPromise(() =>
|
|
atom.packages.activatePackage('incompatible-packages')
|
|
)
|
|
})
|
|
|
|
it('does not add an icon to the status bar', () => {
|
|
let statusBarItemClasses = statusBar
|
|
.getRightTiles()
|
|
.map(tile => tile.getItem().className)
|
|
|
|
expect(statusBarItemClasses).not.toContain('incompatible-packages')
|
|
})
|
|
})
|
|
})
|