import selectors from '../../helpers/selectors';
import getBrowser from '../../helpers/puppeteer';

describe('RecoverPassword path', async() => {
    let browser;
    let page;

    beforeAll(async() => {
        browser = await getBrowser();
        page = browser.page;

        await page.waitToClick(selectors.recoverPassword.recoverPasswordButton);
        await page.waitForState('recover-password');
    });

    afterAll(async() => {
        await browser.close();
    });

    it('should not throw error if not exist user', async() => {
        await page.write(selectors.recoverPassword.email, 'fakeEmail@mydomain.com');
        await page.waitToClick(selectors.recoverPassword.sendEmailButton);

        const message = await page.waitForSnackbar();

        expect(message.text).toContain('Notification sent!');
    });

    it('should send email using email', async() => {
        await page.waitForState('login');
        await page.waitToClick(selectors.recoverPassword.recoverPasswordButton);

        await page.write(selectors.recoverPassword.email, 'BruceWayne@mydomain.com');
        await page.waitToClick(selectors.recoverPassword.sendEmailButton);
        const message = await page.waitForSnackbar();
        await page.waitForState('login');

        expect(message.text).toContain('Notification sent!');
    });

    it('should send email using username', async() => {
        await page.waitForState('login');
        await page.waitToClick(selectors.recoverPassword.recoverPasswordButton);

        await page.write(selectors.recoverPassword.email, 'BruceWayne');
        await page.waitToClick(selectors.recoverPassword.sendEmailButton);
        const message = await page.waitForSnackbar();
        await page.waitForState('login');

        expect(message.text).toContain('Notification sent!');
    });
});