import fs from 'fs';
import path from 'path';
import {Spellchecker, Message} from 'nylas-exports';
import SpellcheckComposerExtension from '../lib/spellcheck-composer-extension';
const initialPath = path.join(__dirname, 'fixtures', 'california-with-misspellings-before.html');
const initialHTML = fs.readFileSync(initialPath).toString();
const afterPath = path.join(__dirname, 'fixtures', 'california-with-misspellings-after.html');
const afterHTML = fs.readFileSync(afterPath).toString();
describe('SpellcheckComposerExtension', function spellcheckComposerExtension() {
beforeEach(() => {
// Avoid differences between node-spellcheck on different platforms
const lookupPath = path.join(__dirname, 'fixtures', 'california-spelling-lookup.json');
const spellings = JSON.parse(fs.readFileSync(lookupPath));
spyOn(Spellchecker, 'isMisspelled').andCallFake(word => spellings[word])
spyOn(Spellchecker.handler, 'provideHintText').andReturn({
then(cb) {
cb()
},
})
});
describe("onContentChanged", () => {
it("correctly walks a DOM tree and surrounds mispelled words", () => {
const node = document.createElement('div');
node.innerHTML = initialHTML;
const editor = {
rootNode: node,
whilePreservingSelection: (cb) => cb(),
};
SpellcheckComposerExtension.onContentChanged({editor});
advanceClock(1000) // Wait for debounce
advanceClock(1) // Wait for defer
expect(node.innerHTML).toEqual(afterHTML);
});
it("does not mark misspelled words inside A, CODE and PRE tags", () => {
const node = document.createElement('div');
node.innerHTML = `
This is a testst! I have a few misspellled words.
myvariable
fragmen = document.applieed();I like appples!
myvariable
fragmen = document.applieed();I like appples!