2018-08-16 17:56:37 +00:00
|
|
|
const invariant = (truthy, error) => {
|
|
|
|
if (!truthy) throw new Error(error);
|
|
|
|
};
|
|
|
|
|
2018-08-23 00:34:25 +00:00
|
|
|
export function getCodeMirrorInstance(container) {
|
2021-12-28 14:45:20 +00:00
|
|
|
return function (selector) {
|
2018-08-23 00:34:25 +00:00
|
|
|
const cmService = container.lookup('service:code-mirror');
|
2018-08-16 17:56:37 +00:00
|
|
|
|
|
|
|
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;
|
2018-08-23 00:34:25 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2019-03-14 06:44:17 +00:00
|
|
|
export default function setupCodeMirror(hooks) {
|
2021-12-28 14:45:20 +00:00
|
|
|
hooks.beforeEach(function () {
|
2019-03-14 06:44:17 +00:00
|
|
|
this.getCodeMirrorInstance = getCodeMirrorInstance(this.owner);
|
|
|
|
|
|
|
|
// Expose to window for access from page objects
|
|
|
|
window.getCodeMirrorInstance = this.getCodeMirrorInstance;
|
|
|
|
});
|
|
|
|
|
2021-12-28 14:45:20 +00:00
|
|
|
hooks.afterEach(function () {
|
2019-03-14 06:44:17 +00:00
|
|
|
delete window.getCodeMirrorInstance;
|
|
|
|
delete this.getCodeMirrorInstance;
|
2018-08-16 17:56:37 +00:00
|
|
|
});
|
|
|
|
}
|