const invariant = (truthy, error) => { if (!truthy) throw new Error(error); }; export function getCodeMirrorInstance(container) { return function(selector) { const cmService = container.lookup('service:code-mirror'); const element = document.querySelector(selector); invariant(element, `Selector ${selector} matched no elements`); const cm = cmService.instanceFor(element.id); invariant(cm, `No registered CodeMirror instance for ${selector}`); return cm; }; } export default function setupCodeMirror(hooks) { hooks.beforeEach(function() { this.getCodeMirrorInstance = getCodeMirrorInstance(this.owner); // Expose to window for access from page objects window.getCodeMirrorInstance = this.getCodeMirrorInstance; }); hooks.afterEach(function() { delete window.getCodeMirrorInstance; delete this.getCodeMirrorInstance; }); }