pulsar/spec/gutter-spec.js
2019-05-31 18:33:56 +02:00

83 lines
2.5 KiB
JavaScript

const Gutter = require('../src/gutter');
describe('Gutter', () => {
const fakeGutterContainer = {
scheduleComponentUpdate() {}
};
const name = 'name';
describe('::hide', () =>
it('hides the gutter if it is visible.', () => {
const options = {
name,
visible: true
};
const gutter = new Gutter(fakeGutterContainer, options);
const events = [];
gutter.onDidChangeVisible(gutter => events.push(gutter.isVisible()));
expect(gutter.isVisible()).toBe(true);
gutter.hide();
expect(gutter.isVisible()).toBe(false);
expect(events).toEqual([false]);
gutter.hide();
expect(gutter.isVisible()).toBe(false);
// An event should only be emitted when the visibility changes.
expect(events.length).toBe(1);
}));
describe('::show', () =>
it('shows the gutter if it is hidden.', () => {
const options = {
name,
visible: false
};
const gutter = new Gutter(fakeGutterContainer, options);
const events = [];
gutter.onDidChangeVisible(gutter => events.push(gutter.isVisible()));
expect(gutter.isVisible()).toBe(false);
gutter.show();
expect(gutter.isVisible()).toBe(true);
expect(events).toEqual([true]);
gutter.show();
expect(gutter.isVisible()).toBe(true);
// An event should only be emitted when the visibility changes.
expect(events.length).toBe(1);
}));
describe('::destroy', () => {
let mockGutterContainer, mockGutterContainerRemovedGutters;
beforeEach(() => {
mockGutterContainerRemovedGutters = [];
mockGutterContainer = {
removeGutter(destroyedGutter) {
mockGutterContainerRemovedGutters.push(destroyedGutter);
}
};
});
it('removes the gutter from its container.', () => {
const gutter = new Gutter(mockGutterContainer, { name });
gutter.destroy();
expect(mockGutterContainerRemovedGutters).toEqual([gutter]);
});
it('calls all callbacks registered on ::onDidDestroy.', () => {
const gutter = new Gutter(mockGutterContainer, { name });
let didDestroy = false;
gutter.onDidDestroy(() => {
didDestroy = true;
});
gutter.destroy();
expect(didDestroy).toBe(true);
});
it('does not allow destroying the line-number gutter', () => {
const gutter = new Gutter(mockGutterContainer, { name: 'line-number' });
expect(gutter.destroy).toThrow();
});
});
});