import test from 'ava';
import * as robot from 'robotjs';

import { Application } from 'spectron';

import { getDemoFilePath, loadURL, startApplication, stopApplication, Timeouts } from './fixtures/spectron-setup';

let app;

test.before(async (t) => {
    app = await startApplication() as Application;
    t.true(app.isRunning());
});

test.after.always(async () => {
    await stopApplication(app);
});

test('spell-checker: verify application spell checking feature', async (t) => {
    robot.setKeyboardDelay(Timeouts.oneSec);
    const missSpelledWord = 'teest ';

    await loadURL(app, getDemoFilePath());
    await app.client.waitUntilWindowLoaded(Timeouts.fiveSec);
    await app.client.electron.remote.clipboard.writeText(missSpelledWord);
    await app.client.click('#tag');
    await app.client.webContents.paste();
    await app.client.waitForValue('#tag', Timeouts.fiveSec);

    t.is(await app.client.getValue('#tag'), missSpelledWord);

    await app.client.rightClick('#tag', 10, 10);
    robot.keyTap('down');
    robot.keyTap('enter');

    t.not(await app.client.getValue('#tag'), missSpelledWord);
});
