/* eslint max-len: ["error", { "code": 150 }]*/
import selectors from '../../helpers/selectors.js';
import getBrowser from '../../helpers/puppeteer';

describe('Worker time control path', () => {
    let browser;
    let page;
    beforeAll(async() => {
        browser = await getBrowser();
        page = browser.page;
        await page.loginAndModule('salesBoss', 'worker');
        await page.accessToSearchResult('HankPym');
        await page.accessToSection('worker.card.timeControl');
    });

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

    const eightAm = '08:00';
    const fourPm = '16:00';
    const hankPymId = 1107;

    it('should go to the next month, go to current month and go 1 month in the past', async() => {
        let date = Date.vnNew();
        date.setDate(1);
        date.setMonth(date.getMonth() + 1);
        let month = date.toLocaleString('default', {month: 'long'});

        await page.waitToClick(selectors.workerTimeControl.nextMonthButton);
        let result = await page.getProperty(selectors.workerTimeControl.monthName, 'innerText');

        expect(result).toContain(month);

        date = Date.vnNew();
        date.setDate(1);
        month = date.toLocaleString('default', {month: 'long'});

        await page.waitToClick(selectors.workerTimeControl.previousMonthButton);
        result = await page.getProperty(selectors.workerTimeControl.monthName, 'innerText');

        expect(result).toContain(month);

        date = Date.vnNew();
        date.setDate(1);
        date.setMonth(date.getMonth() - 1);
        const timestamp = Math.round(date.getTime() / 1000);
        month = date.toLocaleString('default', {month: 'long'});

        await page.loginAndModule('salesBoss', 'worker');
        await page.goto(`http://localhost:5000/#!/worker/${hankPymId}/time-control?timestamp=${timestamp}`);
        await page.waitToClick(selectors.workerTimeControl.secondWeekDay);

        result = await page.getProperty(selectors.workerTimeControl.monthName, 'innerText');

        expect(result).toContain(month);
    });

    it('should change week of month', async() => {
        await page.click(selectors.workerTimeControl.thrirdWeekDay);
        const result = await page.getProperty(selectors.workerTimeControl.mondayWorkedHours, 'innerText');

        expect(result).toEqual('00:00 h.');
    });
});