mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-10-26 11:08:40 +03:00
83 lines
2.5 KiB
JavaScript
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();
|
|
});
|
|
});
|
|
});
|