const TitleBar = require('../src/title-bar'); const temp = require('temp').track(); describe('TitleBar', () => { it('updates its title when document.title changes', () => { const titleBar = new TitleBar({ workspace: atom.workspace, themes: atom.themes, applicationDelegate: atom.applicationDelegate }); expect(titleBar.element.querySelector('.title').textContent).toBe( document.title ); const paneItem = new FakePaneItem('Title 1'); atom.workspace.getActivePane().activateItem(paneItem); expect(document.title).toMatch('Title 1'); expect(titleBar.element.querySelector('.title').textContent).toBe( document.title ); paneItem.setTitle('Title 2'); expect(document.title).toMatch('Title 2'); expect(titleBar.element.querySelector('.title').textContent).toBe( document.title ); atom.project.setPaths([temp.mkdirSync('project-1')]); expect(document.title).toMatch('project-1'); expect(titleBar.element.querySelector('.title').textContent).toBe( document.title ); }); it('can update the sheet offset for the current window based on its height', () => { const titleBar = new TitleBar({ workspace: atom.workspace, themes: atom.themes, applicationDelegate: atom.applicationDelegate }); expect(() => titleBar.updateWindowSheetOffset()).not.toThrow(); }); }); class FakePaneItem { constructor(title) { this.title = title; } getTitle() { return this.title; } onDidChangeTitle(callback) { this.didChangeTitleCallback = callback; return { dispose: () => { this.didChangeTitleCallback = null; } }; } setTitle(title) { this.title = title; if (this.didChangeTitleCallback) this.didChangeTitleCallback(title); } }