import selectors from '../../helpers/selectors'; import getBrowser from '../../helpers/puppeteer'; describe('User config', () => { let browser; let page; beforeAll(async() => { browser = await getBrowser(); page = browser.page; }); afterAll(async() => { await browser.close(); }); describe('as salesPerson', () => { it('should login', async() => { await page.login('salesPerson'); }); it('should now open the user config form to check the settings', async() => { await page.waitToClick(selectors.globalItems.userMenuButton); await page.waitForContentLoaded(); let expectedLocalWarehouse = await page .expectPropertyValue(selectors.globalItems.userLocalWarehouse, 'value', ''); let expectedLocalBank = await page .expectPropertyValue(selectors.globalItems.userLocalBank, 'value', ''); let expectedLocalCompany = await page .expectPropertyValue(selectors.globalItems.userLocalCompany, 'value', ''); let userWarehouse = await page .waitToGetProperty(selectors.globalItems.userWarehouse, 'value'); let userCompany = await page .waitToGetProperty(selectors.globalItems.userCompany, 'value'); expect(expectedLocalWarehouse).toBeTruthy(); expect(expectedLocalBank).toBeTruthy(); expect(expectedLocalCompany).toBeTruthy(); expect(userWarehouse).toEqual('Warehouse Three'); expect(userCompany).toEqual('VNH'); }); }); describe('as employee', () => { it('should log in', async() => { await page.login('employee'); }); it('should open the user config form to check the settings', async() => { await page.waitToClick(selectors.globalItems.userMenuButton); await page.waitForTimeout(1000); let expectedLocalWarehouse = await page .expectPropertyValue(selectors.globalItems.userLocalWarehouse, 'value', ''); let expectedLocalBank = await page .expectPropertyValue(selectors.globalItems.userLocalBank, 'value', ''); let expectedLocalCompany = await page .expectPropertyValue(selectors.globalItems.userLocalCompany, 'value', ''); let userWarehouse = await page .waitToGetProperty(selectors.globalItems.userWarehouse, 'value'); let userCompany = await page .waitToGetProperty(selectors.globalItems.userCompany, 'value'); expect(expectedLocalWarehouse).toBeTruthy(); expect(expectedLocalBank).toBeTruthy(); expect(expectedLocalCompany).toBeTruthy(); expect(userWarehouse).toEqual('Warehouse Two'); expect(userCompany).toEqual('CCs'); }); it('should now edit the user config data', async() => { await page.autocompleteSearch(selectors.globalItems.userLocalWarehouse, 'Warehouse Four'); await page.autocompleteSearch(selectors.globalItems.userLocalBank, 'Pay on receipt'); await page.autocompleteSearch(selectors.globalItems.userLocalCompany, 'VNL'); const message = await page.waitForSnackbar(); expect(message.type).toBe('success'); }); }); describe('as salesPerson 2nd run', () => { it('should log in once more', async() => { await page.login('salesPerson'); }); it('should again open the user config form to check the local settings', async() => { await page.waitToClick(selectors.globalItems.userMenuButton); let userLocalWarehouse = await page .waitToGetProperty(selectors.globalItems.userLocalWarehouse, 'value'); let userLocalBank = await page .waitToGetProperty(selectors.globalItems.userLocalBank, 'value'); let userLocalCompany = await page .waitToGetProperty(selectors.globalItems.userLocalCompany, 'value'); let userWarehouse = await page .waitToGetProperty(selectors.globalItems.userWarehouse, 'value'); let userCompany = await page .waitToGetProperty(selectors.globalItems.userCompany, 'value'); expect(userLocalWarehouse).toContain('Warehouse Four'); expect(userLocalBank).toContain('Pay on receipt'); expect(userLocalCompany).toContain('VNL'); expect(userWarehouse).toEqual('Warehouse Three'); expect(userCompany).toEqual('VNH'); }); it('should now clear the local settings', async() => { await page.clearInput(selectors.globalItems.userConfigFirstAutocomplete); await page.clearInput(selectors.globalItems.userConfigSecondAutocomplete); await page.clearInput(selectors.globalItems.userConfigThirdAutocomplete); const message = await page.waitForSnackbar(); expect(message.type).toBe('success'); }); }); });