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

describe('Worker basic data path', () => {
    const workerId = 1106;
    let browser;
    let page;
    beforeAll(async() => {
        browser = await getBrowser();
        page = browser.page;
        await page.loginAndModule('hr', 'worker');
        const httpDataResponse = page.waitForResponse(response => {
            return response.status() === 200 && response.url().includes(`Workers/${workerId}`);
        });
        await page.accessToSearchResult('David Charles Haller');
        await httpDataResponse;
        await page.accessToSection('worker.card.basicData');
    });

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

    it('should edit the form and then reload the section and check the data was edited', async() => {
        await page.overwrite(selectors.workerBasicData.name, 'David C.');
        await page.overwrite(selectors.workerBasicData.surname, 'H.');
        await page.overwrite(selectors.workerBasicData.phone, '444332211');
        await page.overwrite(selectors.workerBasicData.locker, '1');
        await page.click(selectors.workerBasicData.saveButton);

        const message = await page.waitForSnackbar();

        expect(message.text).toContain('Data saved!');

        await page.reloadSection('worker.card.basicData');

        expect(await page.waitToGetProperty(selectors.workerBasicData.name, 'value')).toEqual('David C.');
        expect(await page.waitToGetProperty(selectors.workerBasicData.surname, 'value')).toEqual('H.');
        expect(await page.waitToGetProperty(selectors.workerBasicData.phone, 'value')).toEqual('444332211');
        expect(await page.waitToGetProperty(selectors.workerBasicData.locker, 'value')).toEqual('1');
    });
});