From 341b93c2fa8daed35eddf945c2186d402fd0ad28 Mon Sep 17 00:00:00 2001 From: Adina Parpalita Date: Tue, 25 Sep 2018 15:43:23 +0300 Subject: [PATCH] [ACA-1759] use async / await in test suites (#667) * use async / await in authentication suites * use async / await on application suites * use async / await in navigation suites * use async / await in actions suites --- .../context-menu-multiple-selection.test.ts | 634 ++++----- .../context-menu-single-selection.test.ts | 586 ++++---- e2e/suites/actions/create-folder.test.ts | 459 +++---- e2e/suites/actions/delete-undo-delete.test.ts | 1190 ++++++++--------- e2e/suites/actions/edit-folder.test.ts | 256 ++-- e2e/suites/actions/mark-favorite.test.ts | 534 ++++---- e2e/suites/actions/permanently-delete.test.ts | 10 +- e2e/suites/actions/restore.test.ts | 291 ++-- e2e/suites/actions/single-click.test.ts | 286 ++-- .../toolbar-multiple-selection.test.ts | 533 ++------ .../actions/toolbar-single-selection.test.ts | 507 ++++--- e2e/suites/actions/upload-file.test.ts | 66 +- e2e/suites/application/general.test.ts | 86 +- e2e/suites/application/page-titles.test.ts | 227 ++-- e2e/suites/authentication/login.test.ts | 332 +++-- e2e/suites/authentication/logout.test.ts | 75 +- e2e/suites/navigation/breadcrumb.test.ts | 369 +++-- e2e/suites/navigation/sidebar.test.ts | 174 ++- 18 files changed, 3049 insertions(+), 3566 deletions(-) diff --git a/e2e/suites/actions/context-menu-multiple-selection.test.ts b/e2e/suites/actions/context-menu-multiple-selection.test.ts index 9c1fe4810..2c136f7f0 100755 --- a/e2e/suites/actions/context-menu-multiple-selection.test.ts +++ b/e2e/suites/actions/context-menu-multiple-selection.test.ts @@ -30,352 +30,352 @@ import { RepoClient } from '../../utilities/repo-client/repo-client'; import { Utils } from '../../utilities/utils'; describe('Context menu actions - multiple selection : ', () => { - const username = `user-${Utils.random()}`; + const username = `user-${Utils.random()}`; - const file1 = `file1-${Utils.random()}.txt`; let file1Id; - const file2 = `file2-${Utils.random()}.txt`; let file2Id; + const file1 = `file1-${Utils.random()}.txt`; let file1Id; + const file2 = `file2-${Utils.random()}.txt`; let file2Id; - const folder1 = `folder1-${Utils.random()}`; let folder1Id; - const folder2 = `folder2-${Utils.random()}`; let folder2Id; + const folder1 = `folder1-${Utils.random()}`; let folder1Id; + const folder2 = `folder2-${Utils.random()}`; let folder2Id; - const fileInTrash1 = `deletedFile1-${Utils.random()}.txt`; let fileInTrash1Id; - const fileInTrash2 = `deletedFile2-${Utils.random()}.txt`; let fileInTrash2Id; - const folderInTrash1 = `deletedFolder1-${Utils.random()}`; let folderInTrash1Id; - const folderInTrash2 = `deletedFolder2-${Utils.random()}`; let folderInTrash2Id; + const fileInTrash1 = `deletedFile1-${Utils.random()}.txt`; let fileInTrash1Id; + const fileInTrash2 = `deletedFile2-${Utils.random()}.txt`; let fileInTrash2Id; + const folderInTrash1 = `deletedFolder1-${Utils.random()}`; let folderInTrash1Id; + const folderInTrash2 = `deletedFolder2-${Utils.random()}`; let folderInTrash2Id; - const siteName = `site-${Utils.random()}`; - const file1Site = `file1-${Utils.random()}.txt`; - const file2Site = `file2-${Utils.random()}.txt`; - const folder1Site = `folder1-${Utils.random()}`; - const folder2Site = `folder2-${Utils.random()}`; + const siteName = `site-${Utils.random()}`; + const file1Site = `file1-${Utils.random()}.txt`; + const file2Site = `file2-${Utils.random()}.txt`; + const folder1Site = `folder1-${Utils.random()}`; + const folder2Site = `folder2-${Utils.random()}`; - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; + const apis = { + admin: new RepoClient(), + user: new RepoClient(username, username) + }; - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const page = new BrowsingPage(); - const { dataTable } = page; - const contextMenu = dataTable.menu; + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const page = new BrowsingPage(); + const { dataTable } = page; + const contextMenu = dataTable.menu; - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); - file1Id = (await apis.user.nodes.createFile(file1)).entry.id; - file2Id = (await apis.user.nodes.createFile(file2)).entry.id; - folder1Id = (await apis.user.nodes.createFolder(folder1)).entry.id; - folder2Id = (await apis.user.nodes.createFolder(folder2)).entry.id; + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); + file1Id = (await apis.user.nodes.createFile(file1)).entry.id; + file2Id = (await apis.user.nodes.createFile(file2)).entry.id; + folder1Id = (await apis.user.nodes.createFolder(folder1)).entry.id; + folder2Id = (await apis.user.nodes.createFolder(folder2)).entry.id; - await apis.user.sites.createSite(siteName, SITE_VISIBILITY.PUBLIC); - const docLibId = (await apis.user.sites.getDocLibId(siteName)); - await apis.user.nodes.createFile(file1Site, docLibId); - await apis.user.nodes.createFile(file2Site, docLibId); - await apis.user.nodes.createFolder(folder1Site, docLibId); - await apis.user.nodes.createFile(folder2Site, docLibId); + await apis.user.sites.createSite(siteName, SITE_VISIBILITY.PUBLIC); + const docLibId = (await apis.user.sites.getDocLibId(siteName)); + await apis.user.nodes.createFile(file1Site, docLibId); + await apis.user.nodes.createFile(file2Site, docLibId); + await apis.user.nodes.createFolder(folder1Site, docLibId); + await apis.user.nodes.createFile(folder2Site, docLibId); - await apis.user.shared.shareFilesByIds([ file1Id, file2Id ]); - await apis.user.shared.waitForApi({ expect: 2 }); + await apis.user.shared.shareFilesByIds([ file1Id, file2Id ]); + await apis.user.shared.waitForApi({ expect: 2 }); - await apis.user.favorites.addFavoritesByIds('file', [ file1Id, file2Id ]); - await apis.user.favorites.addFavoritesByIds('folder', [ folder1Id, folder2Id ]); - await apis.user.favorites.waitForApi({ expect: 4 }); + await apis.user.favorites.addFavoritesByIds('file', [ file1Id, file2Id ]); + await apis.user.favorites.addFavoritesByIds('folder', [ folder1Id, folder2Id ]); + await apis.user.favorites.waitForApi({ expect: 4 }); - fileInTrash1Id = (await apis.user.nodes.createFile(fileInTrash1)).entry.id; - fileInTrash2Id = (await apis.user.nodes.createFile(fileInTrash2)).entry.id; - folderInTrash1Id = (await apis.user.nodes.createFolder(folderInTrash1)).entry.id; - folderInTrash2Id = (await apis.user.nodes.createFolder(folderInTrash2)).entry.id; - await apis.user.nodes.deleteNodesById([ fileInTrash1Id, fileInTrash2Id, folderInTrash1Id, folderInTrash2Id ], false); + fileInTrash1Id = (await apis.user.nodes.createFile(fileInTrash1)).entry.id; + fileInTrash2Id = (await apis.user.nodes.createFile(fileInTrash2)).entry.id; + folderInTrash1Id = (await apis.user.nodes.createFolder(folderInTrash1)).entry.id; + folderInTrash2Id = (await apis.user.nodes.createFolder(folderInTrash2)).entry.id; + await apis.user.nodes.deleteNodesById([ fileInTrash1Id, fileInTrash2Id, folderInTrash1Id, folderInTrash2Id ], false); - await loginPage.loginWith(username); - done(); + await loginPage.loginWith(username); + done(); + }); + + afterAll(async (done) => { + await Promise.all([ + apis.user.nodes.deleteNodesById([ file1Id, file2Id, folder1Id, folder2Id ]), + apis.user.sites.deleteSite(siteName), + apis.user.trashcan.emptyTrash(), + logoutPage.load() + ]); + done(); + }); + + xit(''); + + describe('Generic tests', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + await dataTable.clearSelection(); + done(); }); - afterAll(async (done) => { - await Promise.all([ - apis.user.nodes.deleteNodesById([ file1Id, file2Id, folder1Id, folder2Id ]), - apis.user.sites.deleteSite(siteName), - apis.user.trashcan.emptyTrash(), - logoutPage.load() - ]); - done(); + it('Context menu appears on right click on a multiple selection of items - [C286268]', async () => { + await dataTable.selectMultipleItems([ file1, file2 ]); + // await dataTable.rightClickOnItem(file1); + await dataTable.rightClickOnMultipleSelection(); + expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed'); }); - xit(''); + it('Context menu appears when right clicking on a single item while having multiple items selected - [C286269]', async () => { + await dataTable.selectMultipleItems([ file2, folder1 ]); + await dataTable.rightClickOnItem(file1); + expect(await dataTable.hasContextMenu()).toBe(true, `Context menu is not displayed for ${file1}`); + expect(await dataTable.countSelectedRows()).toEqual(1, 'incorrect number of selected rows'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${file1}`); + expect(await dataTable.hasCheckMarkIcon(file1)).toBe(true, `${file1} is not selected`); + expect(await dataTable.hasCheckMarkIcon(file2)).toBe(false, `${file2} is selected`); + expect(await dataTable.hasCheckMarkIcon(folder1)).toBe(false, `${folder1} is selected`); + }); + }); - describe('Generic tests', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); - await dataTable.waitForHeader(); - await dataTable.clearSelection(); - done(); - }); - - it('Context menu appears on right click on a multiple selection of items - [C286268]', async () => { - await dataTable.selectMultipleItems([ file1, file2 ]); - // await dataTable.rightClickOnItem(file1); - await dataTable.rightClickOnMultipleSelection(); - expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed'); - }); - - it('Context menu appears when right clicking on a single item while having multiple items selected - [C286269]', async () => { - await dataTable.selectMultipleItems([ file2, folder1 ]); - await dataTable.rightClickOnItem(file1); - expect(await dataTable.hasContextMenu()).toBe(true, `Context menu is not displayed for ${file1}`); - expect(await dataTable.countSelectedRows()).toEqual(1, 'incorrect number of selected rows'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${file1}`); - expect(await dataTable.hasCheckMarkIcon(file1)).toBe(true, `${file1} is not selected`); - expect(await dataTable.hasCheckMarkIcon(file2)).toBe(false, `${file2} is selected`); - expect(await dataTable.hasCheckMarkIcon(folder1)).toBe(false, `${folder1} is selected`); - }); + describe('on Personal Files', () => { + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + await dataTable.clearSelection(); + done(); }); - describe('on Personal Files', () => { - beforeEach(async (done) => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); - await dataTable.waitForHeader(); - await dataTable.clearSelection(); - done(); - }); - - it('correct actions appear when multiple files are selected - [C280661]', async () => { - await dataTable.selectMultipleItems([file1, file2]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); - }); - - it('correct actions appear when multiple folders are selected - [C280632]', async () => { - await dataTable.selectMultipleItems([folder1, folder2]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); - }); - - it('correct actions appear when both files and folders are selected - [C280631]', async () => { - await dataTable.selectMultipleItems([file1, file2, folder1, folder2]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); - }); + it('correct actions appear when multiple files are selected - [C280661]', async () => { + await dataTable.selectMultipleItems([file1, file2]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); }); - describe('on File Libraries', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await dataTable.clearSelection(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); - await dataTable.waitForHeader(); - await dataTable.doubleClickOnRowByName(siteName); - await dataTable.waitForHeader(); - done(); - }); - - it('correct actions appear when multiple files are selected - [C280641]', async () => { - await dataTable.selectMultipleItems([ file1Site, file2Site ]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); - }); - - it('correct actions appear when multiple folders are selected - [C280574]', async () => { - await dataTable.selectMultipleItems([ folder1Site, folder2Site ]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); - }); - - it('correct actions appear when both files and folders are selected - [C280642]', async () => { - await dataTable.selectMultipleItems([ file1Site, file2Site, folder1Site, folder2Site ]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); - }); + it('correct actions appear when multiple folders are selected - [C280632]', async () => { + await dataTable.selectMultipleItems([folder1, folder2]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); }); - describe('on Shared Files', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await dataTable.clearSelection(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); - await dataTable.waitForHeader(); - done(); - }); + it('correct actions appear when both files and folders are selected - [C280631]', async () => { + await dataTable.selectMultipleItems([file1, file2, folder1, folder2]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); + }); + }); - it('correct actions appear when multiple files are selected - [C280648]', async () => { - await dataTable.selectMultipleItems([ file1, file2 ]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); - }); + describe('on File Libraries', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await dataTable.clearSelection(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); + await dataTable.waitForHeader(); + await dataTable.doubleClickOnRowByName(siteName); + await dataTable.waitForHeader(); + done(); }); - describe('Recent Files', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await dataTable.clearSelection(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); - await dataTable.waitForHeader(); - done(); - }); - - it('correct actions appear when multiple files are selected - [C280652]', async () => { - await dataTable.selectMultipleItems([ file1, file2 ]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); - }); + it('correct actions appear when multiple files are selected - [C280641]', async () => { + await dataTable.selectMultipleItems([ file1Site, file2Site ]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); }); - describe('Favorites', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await dataTable.clearSelection(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); - await dataTable.waitForHeader(); - done(); - }); - - it('correct actions appear when multiple files are selected - [C280656]', async () => { - await dataTable.selectMultipleItems([ file1, file2 ]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); - // TODO: enable when ACA-1794 is fixed - // expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); - }); - - it('correct actions appear when multiple folders are selected - [C280664]', async () => { - await dataTable.selectMultipleItems([ folder1, folder2 ]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); - // TODO: enable when ACA-1794 is fixed - // expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); - }); - - it('correct actions appear when both files and folders are selected - [C280657]', async () => { - await dataTable.selectMultipleItems([ file1, file2, folder1, folder2 ]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); - // TODO: enable when ACA-1794 is fixed - // expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); - }); + it('correct actions appear when multiple folders are selected - [C280574]', async () => { + await dataTable.selectMultipleItems([ folder1Site, folder2Site ]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); }); - describe('Trash', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await dataTable.clearSelection(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - await dataTable.waitForHeader(); - done(); - }); - - it('correct actions appear when multiple files are selected - [C286273]', async () => { - await dataTable.selectMultipleItems([ fileInTrash1, fileInTrash2 ]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('Permanently delete')).toBe(true, 'Permanently delete is not displayed'); - expect(await contextMenu.isMenuItemPresent('Restore')).toBe(true, 'Restore is not displayed'); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(false, 'Download is displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(false, `Copy is displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(false, `Delete is displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(false, `Move is displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(false, `Favorite is displayed`); - }); - - it('correct actions appear when multiple folders are selected - [C286274]', async () => { - await dataTable.selectMultipleItems([ folderInTrash1, folderInTrash2 ]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('Permanently delete')).toBe(true, 'Permanently delete is not displayed'); - expect(await contextMenu.isMenuItemPresent('Restore')).toBe(true, 'Restore is not displayed'); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(false, 'Download is displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(false, `Copy is displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(false, `Delete is displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(false, `Move is displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(false, `Favorite is displayed`); - }); - - it('correct actions appear when both files and folders are selected - [C286275]', async () => { - await dataTable.selectMultipleItems([ fileInTrash1, fileInTrash2, folderInTrash1, folderInTrash2 ]); - await dataTable.rightClickOnMultipleSelection(); - expect(await contextMenu.isMenuItemPresent('Permanently delete')).toBe(true, 'Permanently delete is not displayed'); - expect(await contextMenu.isMenuItemPresent('Restore')).toBe(true, 'Restore is not displayed'); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(false, 'Download is displayed'); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(false, `Copy is displayed`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(false, `Delete is displayed`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(false, `Move is displayed`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(false, `Favorite is displayed`); - }); + it('correct actions appear when both files and folders are selected - [C280642]', async () => { + await dataTable.selectMultipleItems([ file1Site, file2Site, folder1Site, folder2Site ]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); }); + }); + + describe('on Shared Files', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await dataTable.clearSelection(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); + await dataTable.waitForHeader(); + done(); + }); + + it('correct actions appear when multiple files are selected - [C280648]', async () => { + await dataTable.selectMultipleItems([ file1, file2 ]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); + }); + }); + + describe('Recent Files', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await dataTable.clearSelection(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); + await dataTable.waitForHeader(); + done(); + }); + + it('correct actions appear when multiple files are selected - [C280652]', async () => { + await dataTable.selectMultipleItems([ file1, file2 ]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); + }); + }); + + describe('Favorites', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await dataTable.clearSelection(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); + await dataTable.waitForHeader(); + done(); + }); + + it('correct actions appear when multiple files are selected - [C280656]', async () => { + await dataTable.selectMultipleItems([ file1, file2 ]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); + // TODO: enable when ACA-1794 is fixed + // expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); + }); + + it('correct actions appear when multiple folders are selected - [C280664]', async () => { + await dataTable.selectMultipleItems([ folder1, folder2 ]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); + // TODO: enable when ACA-1794 is fixed + // expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); + }); + + it('correct actions appear when both files and folders are selected - [C280657]', async () => { + await dataTable.selectMultipleItems([ file1, file2, folder1, folder2 ]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed`); + // TODO: enable when ACA-1794 is fixed + // expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed`); + }); + }); + + describe('Trash', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await dataTable.clearSelection(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + await dataTable.waitForHeader(); + done(); + }); + + it('correct actions appear when multiple files are selected - [C286273]', async () => { + await dataTable.selectMultipleItems([ fileInTrash1, fileInTrash2 ]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('Permanently delete')).toBe(true, 'Permanently delete is not displayed'); + expect(await contextMenu.isMenuItemPresent('Restore')).toBe(true, 'Restore is not displayed'); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(false, 'Download is displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(false, `Copy is displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(false, `Delete is displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(false, `Move is displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(false, `Favorite is displayed`); + }); + + it('correct actions appear when multiple folders are selected - [C286274]', async () => { + await dataTable.selectMultipleItems([ folderInTrash1, folderInTrash2 ]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('Permanently delete')).toBe(true, 'Permanently delete is not displayed'); + expect(await contextMenu.isMenuItemPresent('Restore')).toBe(true, 'Restore is not displayed'); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(false, 'Download is displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(false, `Copy is displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(false, `Delete is displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(false, `Move is displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(false, `Favorite is displayed`); + }); + + it('correct actions appear when both files and folders are selected - [C286275]', async () => { + await dataTable.selectMultipleItems([ fileInTrash1, fileInTrash2, folderInTrash1, folderInTrash2 ]); + await dataTable.rightClickOnMultipleSelection(); + expect(await contextMenu.isMenuItemPresent('Permanently delete')).toBe(true, 'Permanently delete is not displayed'); + expect(await contextMenu.isMenuItemPresent('Restore')).toBe(true, 'Restore is not displayed'); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, 'View is displayed'); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(false, 'Download is displayed'); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, 'Edit is displayed'); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(false, `Copy is displayed`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(false, `Delete is displayed`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(false, `Move is displayed`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(false, `Favorite is displayed`); + }); + }); }); diff --git a/e2e/suites/actions/context-menu-single-selection.test.ts b/e2e/suites/actions/context-menu-single-selection.test.ts index 7d8408c3a..b86447ecb 100755 --- a/e2e/suites/actions/context-menu-single-selection.test.ts +++ b/e2e/suites/actions/context-menu-single-selection.test.ts @@ -30,326 +30,326 @@ import { RepoClient } from '../../utilities/repo-client/repo-client'; import { Utils } from '../../utilities/utils'; describe('Context menu actions - single selection : ', () => { - const username = `user-${Utils.random()}`; + const username = `user-${Utils.random()}`; - const fileUser = `fileUser-${Utils.random()}.txt`; let fileUserId; - const folderUser = `folderUser-${Utils.random()}`; let folderUserId; - const fileInTrash = `fileForDelete-${Utils.random()}.txt`; let fileInTrashId; - const folderInTrash = `folderForDelete-${Utils.random()}`; let folderInTrashId; + const fileUser = `fileUser-${Utils.random()}.txt`; let fileUserId; + const folderUser = `folderUser-${Utils.random()}`; let folderUserId; + const fileInTrash = `fileForDelete-${Utils.random()}.txt`; let fileInTrashId; + const folderInTrash = `folderForDelete-${Utils.random()}`; let folderInTrashId; - const siteName = `userSite-${Utils.random()}`; - const fileSiteUser = `fileUser-${Utils.random()}.txt`; - const folderSiteUser = `folderUser-${Utils.random()}`; + const siteName = `userSite-${Utils.random()}`; + const fileSiteUser = `fileUser-${Utils.random()}.txt`; + const folderSiteUser = `folderUser-${Utils.random()}`; - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; + const apis = { + admin: new RepoClient(), + user: new RepoClient(username, username) + }; - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const page = new BrowsingPage(); - const { dataTable } = page; - const contextMenu = dataTable.menu; + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const page = new BrowsingPage(); + const { dataTable } = page; + const contextMenu = dataTable.menu; - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); - fileUserId = (await apis.user.nodes.createFile(fileUser)).entry.id; - folderUserId = (await apis.user.nodes.createFolder(folderUser)).entry.id; + fileUserId = (await apis.user.nodes.createFile(fileUser)).entry.id; + folderUserId = (await apis.user.nodes.createFolder(folderUser)).entry.id; - await apis.user.sites.createSite(siteName, SITE_VISIBILITY.PUBLIC); - const docLibId = await apis.user.sites.getDocLibId(siteName); - await apis.user.nodes.createFile(fileSiteUser, docLibId); - await apis.user.nodes.createFolder(folderSiteUser, docLibId); + await apis.user.sites.createSite(siteName, SITE_VISIBILITY.PUBLIC); + const docLibId = await apis.user.sites.getDocLibId(siteName); + await apis.user.nodes.createFile(fileSiteUser, docLibId); + await apis.user.nodes.createFolder(folderSiteUser, docLibId); - fileInTrashId = (await apis.user.nodes.createFiles([fileInTrash])).entry.id; - folderInTrashId = (await apis.user.nodes.createFolders([ folderInTrash ])).entry.id; - await apis.user.nodes.deleteNodeById(fileInTrashId, false); - await apis.user.nodes.deleteNodeById(folderInTrashId, false); + fileInTrashId = (await apis.user.nodes.createFiles([fileInTrash])).entry.id; + folderInTrashId = (await apis.user.nodes.createFolders([ folderInTrash ])).entry.id; + await apis.user.nodes.deleteNodeById(fileInTrashId, false); + await apis.user.nodes.deleteNodeById(folderInTrashId, false); - await apis.user.shared.shareFileById(fileUserId); - await apis.user.shared.waitForApi({ expect: 1 }); + await apis.user.shared.shareFileById(fileUserId); + await apis.user.shared.waitForApi({ expect: 1 }); - await apis.user.favorites.addFavoriteById('file', fileUserId); - await apis.user.favorites.addFavoriteById('folder', folderUserId); - await apis.user.favorites.waitForApi({ expect: 2 }); + await apis.user.favorites.addFavoriteById('file', fileUserId); + await apis.user.favorites.addFavoriteById('folder', folderUserId); + await apis.user.favorites.waitForApi({ expect: 2 }); - await loginPage.loginWith(username); - done(); + await loginPage.loginWith(username); + done(); + }); + + afterAll(async (done) => { + await Promise.all([ + apis.user.nodes.deleteNodeById(fileUserId), + apis.user.nodes.deleteNodeById(folderUserId), + apis.user.sites.deleteSite(siteName), + apis.user.trashcan.emptyTrash(), + logoutPage.load() + ]); + done(); + }); + + xit(''); + + describe('Generic tests', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + done(); }); - afterAll(async (done) => { - await Promise.all([ - apis.user.nodes.deleteNodeById(fileUserId), - apis.user.nodes.deleteNodeById(folderUserId), - apis.user.sites.deleteSite(siteName), - apis.user.trashcan.emptyTrash(), - logoutPage.load() - ]); - done(); + it('Row is marked with a check circle icon on direct right click - [C286252]', async () => { + await dataTable.rightClickOnItem(fileUser); + expect(await dataTable.hasCheckMarkIcon(fileUser)).toBe(true, 'check mark missing'); }); - xit(''); - - describe('Generic tests', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); - await dataTable.waitForHeader(); - done(); - }); - - it('Row is marked with a check circle icon on direct right click - [C286252]', async () => { - await dataTable.rightClickOnItem(fileUser); - expect(await dataTable.hasCheckMarkIcon(fileUser)).toBe(true, 'check mark missing'); - }); - - it('Context menu appears on direct right click on an item - [C286253]', async () => { - await dataTable.rightClickOnItem(fileUser); - expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed'); - }); - - it('Context menu appears when selecting an item and then right clicking on it - [C286254]', async () => { - await dataTable.selectItem(fileUser); - await dataTable.rightClickOnItem(fileUser); - expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed'); - }); - - it('Context menu appears correctly when right clicking on another item - [C284666]', async () => { - await dataTable.selectItem(fileUser); - await dataTable.rightClickOnItem(folderUser); - expect(await dataTable.hasContextMenu()).toBe(true, `Context menu is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(true, `Edit is not displayed for ${folderUser}`); - expect(await dataTable.hasCheckMarkIcon(folderUser)).toBe(true, `${folderUser} is not selected`); - expect(await dataTable.hasCheckMarkIcon(fileUser)).toBe(false, `${fileUser} is not selected`); - }); - - it('Context menu closes when clicking away from it - [C280619]', async () => { - await dataTable.rightClickOnItem(fileUser); - expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed'); - await page.sidenav.activeLink.click(); - expect(await dataTable.hasContextMenu()).toBe(false, 'Context menu is displayed'); - }); - - it('Context menu does not appear for a library - [C286276]', async () => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); - await dataTable.waitForHeader(); - await dataTable.rightClickOnItem(siteName); - expect(await dataTable.hasContextMenu()).toBe(false, 'Context menu is displayed for a site'); - }); + it('Context menu appears on direct right click on an item - [C286253]', async () => { + await dataTable.rightClickOnItem(fileUser); + expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed'); }); - describe('on Personal Files', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await dataTable.clearSelection(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); - await dataTable.waitForHeader(); - done(); - }); - - it('Context menu has the correct actions for a file - [C280615]', async () => { - await dataTable.rightClickOnItem(fileUser); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Share')).toBe(true, `Share is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(true, `Manage Versions is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileUser}`); - }); - - it('Context menu has the correct actions for a folder - [C280616]', async () => { - await dataTable.rightClickOnItem(folderUser); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not enabled for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(true, `Edit is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, `View is displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(false, `Manage Versions is displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Share')).toBe(false, `Share is displayed for ${folderUser}`); - }); + it('Context menu appears when selecting an item and then right clicking on it - [C286254]', async () => { + await dataTable.selectItem(fileUser); + await dataTable.rightClickOnItem(fileUser); + expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed'); }); - describe('File Libraries', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); - await dataTable.waitForHeader(); - await dataTable.doubleClickOnRowByName(siteName); - await dataTable.waitForHeader(); - done(); - }); - - it('Context menu has the correct actions for a file - [C280594]', async () => { - await dataTable.rightClickOnItem(fileSiteUser); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not displayed for ${fileSiteUser}`); - expect(await contextMenu.isMenuItemPresent('View')).toBe(true, `View is not displayed for ${fileSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Share')).toBe(true, `Share is not displayed for ${fileSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(true, `Manage Versions not displayed for ${fileSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${fileSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileSiteUser}`); - expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileSiteUser}`); - }); - - it('Context menu has the correct actions for a folder - [C280595]', async () => { - await dataTable.rightClickOnItem(folderSiteUser); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not enabled for ${folderSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(true, `Edit is not displayed for ${folderSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${folderSiteUser}`); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, `View is displayed for ${folderSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(false, `Manage Versions displayed for ${folderSiteUser}`); - expect(await contextMenu.isMenuItemPresent('Share')).toBe(false, `Share is displayed for ${folderSiteUser}`); - }); + it('Context menu appears correctly when right clicking on another item - [C284666]', async () => { + await dataTable.selectItem(fileUser); + await dataTable.rightClickOnItem(folderUser); + expect(await dataTable.hasContextMenu()).toBe(true, `Context menu is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(true, `Edit is not displayed for ${folderUser}`); + expect(await dataTable.hasCheckMarkIcon(folderUser)).toBe(true, `${folderUser} is not selected`); + expect(await dataTable.hasCheckMarkIcon(fileUser)).toBe(false, `${fileUser} is not selected`); }); - describe('Shared Files', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); - await dataTable.waitForHeader(); - done(); - }); - - it('Context menu has the correct actions for a file - [C280601]', async () => { - await dataTable.rightClickOnItem(fileUser); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); - // TODO: enable this when the action is properly implemented: ACA-92 - // expect(await contextMenu.isMenuItemPresent('Share')).toBe(true, `Share is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(true, `Manage Versions not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileUser}`); - }); + it('Context menu closes when clicking away from it - [C280619]', async () => { + await dataTable.rightClickOnItem(fileUser); + expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed'); + await page.sidenav.activeLink.click(); + expect(await dataTable.hasContextMenu()).toBe(false, 'Context menu is displayed'); }); - describe('Recent Files', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); - await dataTable.waitForHeader(); - done(); - }); + it('Context menu does not appear for a library - [C286276]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); + await dataTable.waitForHeader(); + await dataTable.rightClickOnItem(siteName); + expect(await dataTable.hasContextMenu()).toBe(false, 'Context menu is displayed for a site'); + }); + }); - it('Context menu has the correct actions for a file - [C280622]', async () => { - await dataTable.rightClickOnItem(fileUser); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Share')).toBe(true, `Share is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(true, `Manage Versions not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileUser}`); - }); + describe('on Personal Files', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await dataTable.clearSelection(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + done(); }); - describe('Favorites', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); - await dataTable.waitForHeader(); - done(); - }); - - it('Context menu has the correct actions for a file - [C280608]', async () => { - await dataTable.rightClickOnItem(fileUser); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Share')).toBe(true, `Share is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(true, `Manage Versions is not displayed for ${fileUser}`); - // TODO: enable when ACA-1794 is fixed - // expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); - expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileUser}`); - }); - - it('Context menu has the correct actions for a folder - [C280609]', async () => { - await dataTable.rightClickOnItem(folderUser); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not enabled for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(true, `Edit is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderUser}`); - // TODO: enable when ACA-1794 is fixed - // expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, `View is displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(false, `Manage Versions is displayed for ${folderUser}`); - expect(await contextMenu.isMenuItemPresent('Share')).toBe(false, `Share is displayed for ${folderUser}`); - }); + it('Context menu has the correct actions for a file - [C280615]', async () => { + await dataTable.rightClickOnItem(fileUser); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Share')).toBe(true, `Share is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(true, `Manage Versions is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileUser}`); }); - describe('Trash', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - await dataTable.waitForHeader(); - done(); - }); - - it('Context menu has the correct actions for a file - [C286258]', async () => { - await dataTable.rightClickOnItem(fileInTrash); - expect(await contextMenu.isMenuItemPresent('Permanently delete')) - .toBe(true, `Permanently delete is not displayed for ${fileInTrash}`); - expect(await contextMenu.isMenuItemPresent('Restore')).toBe(true, `Restore is not displayed for ${fileInTrash}`); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(false, `Download is not displayed for ${fileInTrash}`); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, `View is not displayed for ${fileInTrash}`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(false, `Favorite is not displayed for ${fileInTrash}`); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(false, `Copy is not displayed for ${fileInTrash}`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(false, `Move is not displayed for ${fileInTrash}`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(false, `Delete is not displayed for ${fileInTrash}`); - expect(await contextMenu.isMenuItemPresent('Share')).toBe(false, `Share is not displayed for ${fileInTrash}`); - expect(await contextMenu.isMenuItemPresent('Manage Versions')) - .toBe(false, `Manage Versions is not displayed for ${fileInTrash}`); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileInTrash}`); - expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileInTrash}`); - }); - - it('Context menu has the correct actions for a folder - [C286259]', async () => { - await dataTable.rightClickOnItem(folderInTrash); - expect(await contextMenu.isMenuItemPresent('Permanently delete')) - .toBe(true, `Permanently delete is not displayed for ${folderInTrash}`); - expect(await contextMenu.isMenuItemPresent('Restore')).toBe(true, `Restore is not displayed for ${folderInTrash}`); - expect(await contextMenu.isMenuItemPresent('Download')).toBe(false, `Download is not displayed for ${folderInTrash}`); - expect(await contextMenu.isMenuItemPresent('View')).toBe(false, `View is not displayed for ${folderInTrash}`); - expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(false, `Favorite is not displayed for ${folderInTrash}`); - expect(await contextMenu.isMenuItemPresent('Copy')).toBe(false, `Copy is not displayed for ${folderInTrash}`); - expect(await contextMenu.isMenuItemPresent('Move')).toBe(false, `Move is not displayed for ${folderInTrash}`); - expect(await contextMenu.isMenuItemPresent('Delete')).toBe(false, `Delete is not displayed for ${folderInTrash}`); - expect(await contextMenu.isMenuItemPresent('Share')).toBe(false, `Share is not displayed for ${folderInTrash}`); - expect(await contextMenu.isMenuItemPresent('Manage Versions')) - .toBe(false, `Manage Versions is not displayed for ${folderInTrash}`); - expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${folderInTrash}`); - expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${folderInTrash}`); - }); + it('Context menu has the correct actions for a folder - [C280616]', async () => { + await dataTable.rightClickOnItem(folderUser); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not enabled for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(true, `Edit is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, `View is displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(false, `Manage Versions is displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Share')).toBe(false, `Share is displayed for ${folderUser}`); }); + }); + + describe('File Libraries', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); + await dataTable.waitForHeader(); + await dataTable.doubleClickOnRowByName(siteName); + await dataTable.waitForHeader(); + done(); + }); + + it('Context menu has the correct actions for a file - [C280594]', async () => { + await dataTable.rightClickOnItem(fileSiteUser); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not displayed for ${fileSiteUser}`); + expect(await contextMenu.isMenuItemPresent('View')).toBe(true, `View is not displayed for ${fileSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Share')).toBe(true, `Share is not displayed for ${fileSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(true, `Manage Versions not displayed for ${fileSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${fileSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileSiteUser}`); + expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileSiteUser}`); + }); + + it('Context menu has the correct actions for a folder - [C280595]', async () => { + await dataTable.rightClickOnItem(folderSiteUser); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not enabled for ${folderSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(true, `Edit is not displayed for ${folderSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${folderSiteUser}`); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, `View is displayed for ${folderSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(false, `Manage Versions displayed for ${folderSiteUser}`); + expect(await contextMenu.isMenuItemPresent('Share')).toBe(false, `Share is displayed for ${folderSiteUser}`); + }); + }); + + describe('Shared Files', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); + await dataTable.waitForHeader(); + done(); + }); + + it('Context menu has the correct actions for a file - [C280601]', async () => { + await dataTable.rightClickOnItem(fileUser); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); + // TODO: enable this when the action is properly implemented: ACA-92 + // expect(await contextMenu.isMenuItemPresent('Share')).toBe(true, `Share is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(true, `Manage Versions not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileUser}`); + }); + }); + + describe('Recent Files', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); + await dataTable.waitForHeader(); + done(); + }); + + it('Context menu has the correct actions for a file - [C280622]', async () => { + await dataTable.rightClickOnItem(fileUser); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Share')).toBe(true, `Share is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(true, `Manage Versions not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileUser}`); + }); + }); + + describe('Favorites', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); + await dataTable.waitForHeader(); + done(); + }); + + it('Context menu has the correct actions for a file - [C280608]', async () => { + await dataTable.rightClickOnItem(fileUser); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Share')).toBe(true, `Share is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(true, `Manage Versions is not displayed for ${fileUser}`); + // TODO: enable when ACA-1794 is fixed + // expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); + expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileUser}`); + }); + + it('Context menu has the correct actions for a folder - [C280609]', async () => { + await dataTable.rightClickOnItem(folderUser); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(true, `Download is not enabled for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(true, `Edit is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderUser}`); + // TODO: enable when ACA-1794 is fixed + // expect(await contextMenu.isMenuItemPresent('Permissions')).toBe(true, `Permissions is not displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, `View is displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Manage Versions')).toBe(false, `Manage Versions is displayed for ${folderUser}`); + expect(await contextMenu.isMenuItemPresent('Share')).toBe(false, `Share is displayed for ${folderUser}`); + }); + }); + + describe('Trash', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + await dataTable.waitForHeader(); + done(); + }); + + it('Context menu has the correct actions for a file - [C286258]', async () => { + await dataTable.rightClickOnItem(fileInTrash); + expect(await contextMenu.isMenuItemPresent('Permanently delete')) + .toBe(true, `Permanently delete is not displayed for ${fileInTrash}`); + expect(await contextMenu.isMenuItemPresent('Restore')).toBe(true, `Restore is not displayed for ${fileInTrash}`); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(false, `Download is not displayed for ${fileInTrash}`); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, `View is not displayed for ${fileInTrash}`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(false, `Favorite is not displayed for ${fileInTrash}`); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(false, `Copy is not displayed for ${fileInTrash}`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(false, `Move is not displayed for ${fileInTrash}`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(false, `Delete is not displayed for ${fileInTrash}`); + expect(await contextMenu.isMenuItemPresent('Share')).toBe(false, `Share is not displayed for ${fileInTrash}`); + expect(await contextMenu.isMenuItemPresent('Manage Versions')) + .toBe(false, `Manage Versions is not displayed for ${fileInTrash}`); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${fileInTrash}`); + expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${fileInTrash}`); + }); + + it('Context menu has the correct actions for a folder - [C286259]', async () => { + await dataTable.rightClickOnItem(folderInTrash); + expect(await contextMenu.isMenuItemPresent('Permanently delete')) + .toBe(true, `Permanently delete is not displayed for ${folderInTrash}`); + expect(await contextMenu.isMenuItemPresent('Restore')).toBe(true, `Restore is not displayed for ${folderInTrash}`); + expect(await contextMenu.isMenuItemPresent('Download')).toBe(false, `Download is not displayed for ${folderInTrash}`); + expect(await contextMenu.isMenuItemPresent('View')).toBe(false, `View is not displayed for ${folderInTrash}`); + expect(await contextMenu.isMenuItemPresent('Favorite')).toBe(false, `Favorite is not displayed for ${folderInTrash}`); + expect(await contextMenu.isMenuItemPresent('Copy')).toBe(false, `Copy is not displayed for ${folderInTrash}`); + expect(await contextMenu.isMenuItemPresent('Move')).toBe(false, `Move is not displayed for ${folderInTrash}`); + expect(await contextMenu.isMenuItemPresent('Delete')).toBe(false, `Delete is not displayed for ${folderInTrash}`); + expect(await contextMenu.isMenuItemPresent('Share')).toBe(false, `Share is not displayed for ${folderInTrash}`); + expect(await contextMenu.isMenuItemPresent('Manage Versions')) + .toBe(false, `Manage Versions is not displayed for ${folderInTrash}`); + expect(await contextMenu.isMenuItemPresent('Edit')).toBe(false, `Edit is displayed for ${folderInTrash}`); + expect(await contextMenu.isMenuItemPresent('View details')).toBe(false, `View details is displayed for ${folderInTrash}`); + }); + }); }); diff --git a/e2e/suites/actions/create-folder.test.ts b/e2e/suites/actions/create-folder.test.ts index 2be7427d0..0a2c09388 100755 --- a/e2e/suites/actions/create-folder.test.ts +++ b/e2e/suites/actions/create-folder.test.ts @@ -32,259 +32,234 @@ import { Utils } from '../../utilities/utils'; import { RepoClient } from '../../utilities/repo-client/repo-client'; describe('Create folder', () => { - const username = `user-${Utils.random()}`; + const username = `user-${Utils.random()}`; - const parent = `parent-${Utils.random()}`; - const folderName1 = `folder-${Utils.random()}`; - const folderName2 = `folder-${Utils.random()}`; - const folderDescription = 'description of my folder'; - const duplicateFolderName = `folder-${Utils.random()}`; - const nameWithSpaces = ` folder-${Utils.random()} `; + const parent = `parent-${Utils.random()}`; let parentId; + const folderName1 = `folder-${Utils.random()}`; + const folderName2 = `folder-${Utils.random()}`; + const folderDescription = 'description of my folder'; + const duplicateFolderName = `folder-${Utils.random()}`; + const nameWithSpaces = ` folder-${Utils.random()} `; - const siteName = `site-private-${Utils.random()}`; + const siteName = `site-private-${Utils.random()}`; - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; + const apis = { + admin: new RepoClient(), + user: new RepoClient(username, username) + }; - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const personalFilesPage = new BrowsingPage(); - const createDialog = new CreateOrEditFolderDialog(); - const { dataTable } = personalFilesPage; + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const personalFilesPage = new BrowsingPage(); + const createDialog = new CreateOrEditFolderDialog(); + const { dataTable } = personalFilesPage; - beforeAll(done => { - apis.admin.people.createUser({ username }) - .then(() => apis.admin.sites.createSite(siteName, SITE_VISIBILITY.PRIVATE)) - .then(() => apis.admin.nodes.createFolders([ folderName1 ], `Sites/${siteName}/documentLibrary`)) - .then(() => apis.admin.sites.addSiteMember(siteName, username, SITE_ROLES.SITE_CONSUMER)) - .then(() => apis.user.nodes.createFolders([ duplicateFolderName ], parent)) - .then(() => loginPage.loginWith(username)) - .then(done); + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); + await apis.admin.sites.createSite(siteName, SITE_VISIBILITY.PRIVATE); + const docLibId = (await apis.admin.sites.getDocLibId(siteName)); + await apis.admin.nodes.createFolder(folderName1, docLibId); + await apis.admin.sites.addSiteMember(siteName, username, SITE_ROLES.SITE_CONSUMER); + parentId = (await apis.user.nodes.createFolder(parent)).entry.id; + await apis.user.nodes.createFolder(duplicateFolderName, parentId); + await loginPage.loginWith(username); + done(); + }); + + afterAll(async (done) => { + await Promise.all([ + apis.admin.sites.deleteSite(siteName), + apis.user.nodes.deleteNodeById(parentId), + logoutPage.load() + ]); + done(); + }); + + describe('on Personal Files', () => { + beforeEach(async (done) => { + await personalFilesPage.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + done(); }); - afterAll(done => { - Promise - .all([ - apis.admin.sites.deleteSite(siteName), - apis.user.nodes.deleteNodes([ parent ]), - logoutPage.load() - ]) - .then(done); + afterEach(async (done) => { + await browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform(); + done(); }); - describe('on Personal Files', () => { - beforeEach(done => { - personalFilesPage.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => dataTable.waitForHeader()) - .then(done); - }); - - afterEach(done => { - browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform().then(done); - }); - - it('option is enabled when having enough permissions - [C216339]', () => { - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openNewMenu()) - .then(menu => { - const isEnabled = menu.getItemByLabel('Create folder').isEnabled(); - expect(isEnabled).toBe(true, 'Create folder is not enabled'); - }); - }); - - it('creates new folder with name - [C216341]', () => { - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openCreateDialog()) - .then(() => createDialog.waitForDialogToOpen()) - .then(() => createDialog.enterName(folderName1)) - .then(() => createDialog.clickCreate()) - .then(() => createDialog.waitForDialogToClose()) - .then(() => dataTable.waitForHeader()) - .then(() => { - const isPresent = dataTable.getRowByName(folderName1).isPresent(); - expect(isPresent).toBe(true, 'Folder not displayed in list view'); - }); - }); - - it('creates new folder with name and description - [C216340]', () => { - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openCreateDialog()) - .then(() => createDialog.waitForDialogToOpen()) - .then(() => createDialog.enterName(folderName2)) - .then(() => createDialog.enterDescription(folderDescription)) - .then(() => createDialog.clickCreate()) - .then(() => createDialog.waitForDialogToClose()) - .then(() => dataTable.waitForHeader()) - .then(() => expect(dataTable.getRowByName(folderName2).isPresent()).toBe(true, 'Folder not displayed')) - .then(() => apis.user.nodes.getNodeDescription(folderName2, parent)) - .then(desc => expect(desc).toEqual(folderDescription)); - }); - - it('enabled option tooltip - [C216342]', () => { - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openNewMenu()) - .then(menu => browser.actions().mouseMove(menu.getItemByLabel('Create folder')).perform() - .then(() => menu)) - .then(menu => { - expect(menu.getItemTooltip('Create folder')).toContain('Create new folder'); - }); - }); - - it('dialog UI elements - [C216345]', () => { - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openCreateDialog()) - .then(() => createDialog.waitForDialogToOpen()) - .then(() => { - const dialogTitle = createDialog.getTitle(); - const isFolderNameDisplayed = createDialog.nameInput.isDisplayed(); - const isDescriptionDisplayed = createDialog.descriptionTextArea.isDisplayed(); - const isCreateEnabled = createDialog.createButton.isEnabled(); - const isCancelEnabled = createDialog.cancelButton.isEnabled(); - - expect(dialogTitle).toMatch('Create new folder'); - expect(isFolderNameDisplayed).toBe(true, 'Name input is not displayed'); - expect(isDescriptionDisplayed).toBe(true, 'Description field is not displayed'); - expect(isCreateEnabled).toBe(false, 'Create button is not disabled'); - expect(isCancelEnabled).toBe(true, 'Cancel button is not enabled'); - }); - }); - - it('with empty folder name - [C216346]', () => { - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openCreateDialog()) - .then(() => createDialog.waitForDialogToOpen()) - .then(() => createDialog.deleteNameWithBackspace()) - .then(() => { - const isCreateEnabled = createDialog.createButton.isEnabled(); - const validationMessage = createDialog.getValidationMessage(); - - expect(isCreateEnabled).toBe(false, 'Create button is enabled'); - expect(validationMessage).toMatch('Folder name is required'); - }); - }); - - it('with folder name ending with a dot "." - [C216348]', () => { - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openCreateDialog()) - .then(() => createDialog.waitForDialogToOpen()) - .then(() => createDialog.enterName('folder-name.')) - .then(() => { - const isCreateEnabled = createDialog.createButton.isEnabled(); - const validationMessage = createDialog.getValidationMessage(); - - expect(isCreateEnabled).toBe(false, 'Create button is not disabled'); - expect(validationMessage).toMatch(`Folder name can't end with a period .`); - }); - }); - - it('with folder name containing special characters - [C216347]', () => { - const namesWithSpecialChars = [ 'a*a', 'a"a', 'aa', `a\\a`, 'a/a', 'a?a', 'a:a', 'a|a' ]; - - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openCreateDialog()) - .then(() => createDialog.waitForDialogToOpen()) - .then(() => namesWithSpecialChars.forEach(name => { - createDialog.enterName(name); - - const isCreateEnabled = createDialog.createButton.isEnabled(); - const validationMessage = createDialog.getValidationMessage(); - - expect(isCreateEnabled).toBe(false, 'Create button is not disabled'); - expect(validationMessage).toContain(`Folder name can't contain these characters`); - })); - }); - - it('with folder name containing only spaces - [C280406]', () => { - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openCreateDialog()) - .then(() => createDialog.waitForDialogToOpen()) - .then(() => createDialog.enterName(' ')) - .then(() => { - const isCreateEnabled = createDialog.createButton.isEnabled(); - const validationMessage = createDialog.getValidationMessage(); - - expect(isCreateEnabled).toBe(false, 'Create button is not disabled'); - expect(validationMessage).toMatch(`Folder name can't contain only spaces`); - }); - }); - - it('cancel folder creation - [C216349]', () => { - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openCreateDialog()) - .then(() => createDialog.waitForDialogToOpen()) - .then(() => createDialog.enterName('test')) - .then(() => createDialog.enterDescription('test description')) - .then(() => createDialog.clickCancel()) - .then(() => { - expect(createDialog.component.isPresent()).not.toBe(true, 'dialog is not closed'); - }); - }); - - it('duplicate folder name - [C216350]', () => { - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openCreateDialog()) - .then(() => createDialog.waitForDialogToOpen()) - .then(() => createDialog.enterName(duplicateFolderName)) - .then(() => createDialog.clickCreate()) - .then(() => personalFilesPage.getSnackBarMessage()) - .then(message => { - expect(message).toEqual(`There's already a folder with this name. Try a different name.`); - expect(createDialog.component.isPresent()).toBe(true, 'dialog is not present'); - }); - }); - - it('trim ending spaces from folder name - [C216351]', () => { - personalFilesPage.dataTable.doubleClickOnRowByName(parent) - .then(() => personalFilesPage.sidenav.openCreateDialog()) - .then(() => createDialog.waitForDialogToOpen()) - .then(() => createDialog.enterName(nameWithSpaces)) - .then(() => createDialog.clickCreate()) - .then(() => createDialog.waitForDialogToClose()) - .then(() => dataTable.waitForHeader()) - .then(() => { - const isPresent = dataTable.getRowByName(nameWithSpaces.trim()).isPresent(); - expect(isPresent).toBe(true, 'Folder not displayed in list view'); - }); - }); + it('option is enabled when having enough permissions - [C216339]', async () => { + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + const menu = await personalFilesPage.sidenav.openNewMenu(); + const isEnabled = await menu.getItemByLabel('Create folder').isEnabled(); + expect(isEnabled).toBe(true, 'Create folder is not enabled'); }); - describe('on File Libraries', () => { - const fileLibrariesPage = new BrowsingPage(); - - beforeEach(done => { - fileLibrariesPage.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES) - .then(() => dataTable.waitForHeader()) - .then(done); - }); - - afterEach(done => { - browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform().then(done); - }); - - it('option is disabled when not enough permissions - [C280397]', () => { - fileLibrariesPage.dataTable.doubleClickOnRowByName(siteName) - .then(() => fileLibrariesPage.dataTable.doubleClickOnRowByName(folderName1)) - .then(() => fileLibrariesPage.sidenav.openNewMenu()) - .then(menu => { - const isEnabled = menu.getItemByLabel('Create folder').isEnabled(); - expect(isEnabled).toBe(false, 'Create folder is not disabled'); - }); - }); - - it('disabled option tooltip - [C280398]', () => { - fileLibrariesPage.dataTable.doubleClickOnRowByName(siteName) - .then(() => fileLibrariesPage.dataTable.doubleClickOnRowByName(folderName1)) - .then(() => fileLibrariesPage.sidenav.openNewMenu()) - .then(menu => browser.actions().mouseMove(menu.getItemByLabel('Create folder')).perform() - .then(() => menu)) - .then(menu => { - const tooltip = menu.getItemTooltip('Create folder'); - expect(tooltip).toContain(`Folders cannot be created whilst viewing the current items`); - }); - }); + it('creates new folder with name - [C216341]', async () => { + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + await personalFilesPage.sidenav.openCreateDialog(); + await createDialog.waitForDialogToOpen(); + await createDialog.enterName(folderName1); + await createDialog.clickCreate(); + await createDialog.waitForDialogToClose(); + await dataTable.waitForHeader(); + const isPresent = await dataTable.getRowByName(folderName1).isPresent(); + expect(isPresent).toBe(true, 'Folder not displayed in list view'); }); - xit(''); + it('creates new folder with name and description - [C216340]', async (done) => { + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + await personalFilesPage.sidenav.openCreateDialog(); + await createDialog.waitForDialogToOpen(); + await createDialog.enterName(folderName2); + await createDialog.enterDescription(folderDescription); + await createDialog.clickCreate(); + await createDialog.waitForDialogToClose(); + await dataTable.waitForHeader(); + expect(await dataTable.getRowByName(folderName2).isPresent()).toBe(true, 'Folder not displayed'); + const desc = await apis.user.nodes.getNodeDescription(folderName2, parent); + expect(desc).toEqual(folderDescription); + done(); + }); + + it('enabled option tooltip - [C216342]', async () => { + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + const menu = await personalFilesPage.sidenav.openNewMenu(); + await browser.actions().mouseMove(menu.getItemByLabel('Create folder')).perform(); + expect(await menu.getItemTooltip('Create folder')).toContain('Create new folder'); + }); + + it('dialog UI elements - [C216345]', async () => { + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + await personalFilesPage.sidenav.openCreateDialog(); + await createDialog.waitForDialogToOpen(); + const dialogTitle = await createDialog.getTitle(); + const isFolderNameDisplayed = await createDialog.nameInput.isDisplayed(); + const isDescriptionDisplayed = await createDialog.descriptionTextArea.isDisplayed(); + const isCreateEnabled = await createDialog.createButton.isEnabled(); + const isCancelEnabled = await createDialog.cancelButton.isEnabled(); + + expect(dialogTitle).toMatch('Create new folder'); + expect(isFolderNameDisplayed).toBe(true, 'Name input is not displayed'); + expect(isDescriptionDisplayed).toBe(true, 'Description field is not displayed'); + expect(isCreateEnabled).toBe(false, 'Create button is not disabled'); + expect(isCancelEnabled).toBe(true, 'Cancel button is not enabled'); + }); + + it('with empty folder name - [C216346]', async () => { + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + await personalFilesPage.sidenav.openCreateDialog(); + await createDialog.waitForDialogToOpen(); + await createDialog.deleteNameWithBackspace(); + const isCreateEnabled = await createDialog.createButton.isEnabled(); + const validationMessage = await createDialog.getValidationMessage(); + + expect(isCreateEnabled).toBe(false, 'Create button is enabled'); + expect(validationMessage).toMatch('Folder name is required'); + }); + + it('with folder name ending with a dot "." - [C216348]', async () => { + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + await personalFilesPage.sidenav.openCreateDialog(); + await createDialog.waitForDialogToOpen(); + await createDialog.enterName('folder-name.'); + const isCreateEnabled = await createDialog.createButton.isEnabled(); + const validationMessage = await createDialog.getValidationMessage(); + + expect(isCreateEnabled).toBe(false, 'Create button is not disabled'); + expect(validationMessage).toMatch(`Folder name can't end with a period .`); + }); + + it('with folder name containing special characters - [C216347]', async () => { + const namesWithSpecialChars = [ 'a*a', 'a"a', 'aa', `a\\a`, 'a/a', 'a?a', 'a:a', 'a|a' ]; + + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + await personalFilesPage.sidenav.openCreateDialog(); + await createDialog.waitForDialogToOpen(); + + for (const name of namesWithSpecialChars) { + await createDialog.enterName(name); + expect(await createDialog.createButton.isEnabled()).toBe(false, 'Create button is not disabled'); + expect(await createDialog.getValidationMessage()).toContain(`Folder name can't contain these characters`); + } + }); + + it('with folder name containing only spaces - [C280406]', async () => { + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + await personalFilesPage.sidenav.openCreateDialog(); + await createDialog.waitForDialogToOpen(); + await createDialog.enterName(' '); + const isCreateEnabled = await createDialog.createButton.isEnabled(); + const validationMessage = await createDialog.getValidationMessage(); + + expect(isCreateEnabled).toBe(false, 'Create button is not disabled'); + expect(validationMessage).toMatch(`Folder name can't contain only spaces`); + }); + + it('cancel folder creation - [C216349]', async () => { + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + await personalFilesPage.sidenav.openCreateDialog(); + await createDialog.waitForDialogToOpen(); + await createDialog.enterName('test'); + await createDialog.enterDescription('test description'); + await createDialog.clickCancel(); + expect(await createDialog.component.isPresent()).not.toBe(true, 'dialog is not closed'); + }); + + it('duplicate folder name - [C216350]', async () => { + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + await personalFilesPage.sidenav.openCreateDialog(); + await createDialog.waitForDialogToOpen(); + await createDialog.enterName(duplicateFolderName); + await createDialog.clickCreate(); + const message = await personalFilesPage.getSnackBarMessage(); + expect(message).toEqual(`There's already a folder with this name. Try a different name.`); + expect(await createDialog.component.isPresent()).toBe(true, 'dialog is not present'); + }); + + it('trim ending spaces from folder name - [C216351]', async () => { + await personalFilesPage.dataTable.doubleClickOnRowByName(parent); + await personalFilesPage.sidenav.openCreateDialog(); + await createDialog.waitForDialogToOpen(); + await createDialog.enterName(nameWithSpaces); + await createDialog.clickCreate(); + await createDialog.waitForDialogToClose(); + await dataTable.waitForHeader(); + const isPresent = await dataTable.getRowByName(nameWithSpaces.trim()).isPresent(); + expect(isPresent).toBe(true, 'Folder not displayed in list view'); + }); + }); + + describe('on File Libraries', () => { + const fileLibrariesPage = new BrowsingPage(); + + beforeEach(async (done) => { + await fileLibrariesPage.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); + await dataTable.waitForHeader(); + done(); + }); + + afterEach(async (done) => { + await browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform(); + done(); + }); + + it('option is disabled when not enough permissions - [C280397]', async () => { + await fileLibrariesPage.dataTable.doubleClickOnRowByName(siteName); + await fileLibrariesPage.dataTable.doubleClickOnRowByName(folderName1); + const menu = await fileLibrariesPage.sidenav.openNewMenu(); + const isEnabled = await menu.getItemByLabel('Create folder').isEnabled(); + expect(isEnabled).toBe(false, 'Create folder is not disabled'); + }); + + it('disabled option tooltip - [C280398]', async () => { + await fileLibrariesPage.dataTable.doubleClickOnRowByName(siteName); + await fileLibrariesPage.dataTable.doubleClickOnRowByName(folderName1); + const menu = await fileLibrariesPage.sidenav.openNewMenu(); + await browser.actions().mouseMove(menu.getItemByLabel('Create folder')).perform(); + const tooltip = await menu.getItemTooltip('Create folder'); + expect(tooltip).toContain(`Folders cannot be created whilst viewing the current items`); + }); + }); + + xit(''); }); diff --git a/e2e/suites/actions/delete-undo-delete.test.ts b/e2e/suites/actions/delete-undo-delete.test.ts index 1d3b1082d..6e868df23 100755 --- a/e2e/suites/actions/delete-undo-delete.test.ts +++ b/e2e/suites/actions/delete-undo-delete.test.ts @@ -30,621 +30,621 @@ import { RepoClient } from '../../utilities/repo-client/repo-client'; import { Utils } from '../../utilities/utils'; describe('Delete and undo delete', () => { - const username = `user-${Utils.random()}`; + const username = `user-${Utils.random()}`; - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; + const apis = { + admin: new RepoClient(), + user: new RepoClient(username, username) + }; - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const page = new BrowsingPage(); - const { dataTable, toolbar } = page; + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const page = new BrowsingPage(); + const { dataTable, toolbar } = page; + + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); + done(); + }); + + afterAll(async (done) => { + await apis.admin.trashcan.emptyTrash(); + done(); + }); + + xit(''); + + describe('on Personal Files', () => { + const file1 = `file1-${Utils.random()}.txt`; let file1Id; + const file2 = `file2-${Utils.random()}.txt`; let file2Id; + const file3 = `file3-${Utils.random()}.txt`; + const file4 = `file4-${Utils.random()}.txt`; let file4Id; + const folder1 = `folder1-${Utils.random()}`; let folder1Id; + const folder2 = `folder2-${Utils.random()}`; let folder2Id; + const fileLocked1 = `fileLocked-${Utils.random()}.txt`; let fileLocked1Id; beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); - done(); + file1Id = (await apis.user.nodes.createFile(file1)).entry.id; + file2Id = (await apis.user.nodes.createFile(file2)).entry.id; + folder1Id = (await apis.user.nodes.createFolder(folder1)).entry.id; + folder2Id = (await apis.user.nodes.createFolder(folder2)).entry.id; + await apis.user.nodes.createFile(file3, folder1Id); + file4Id = (await apis.user.nodes.createFile(file4, folder2Id)).entry.id; + await apis.user.nodes.lockFile(file4Id); + + fileLocked1Id = (await apis.user.nodes.createFile(fileLocked1)).entry.id; + await apis.user.nodes.lockFile(fileLocked1Id); + + await loginPage.loginWith(username); + done(); + }); + + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + done(); + }); + + afterEach(async (done) => { + await page.refresh(); + done(); }); afterAll(async (done) => { - await apis.admin.trashcan.emptyTrash(); - done(); + await Promise.all([ + apis.user.nodes.unlockFile(file4Id), + apis.user.nodes.unlockFile(fileLocked1Id) + ]); + await Promise.all([ + logoutPage.load(), + apis.user.nodes.deleteNodesById([file1Id, file2Id, folder1Id, folder2Id, fileLocked1Id]) + ]); + await apis.user.search.waitForApi(username, {expect: 0}); + done(); }); - xit(''); + xit('delete a file and check notification - [C217125]', async () => { + let items = await page.dataTable.countRows(); - describe('on Personal Files', () => { - const file1 = `file1-${Utils.random()}.txt`; let file1Id; - const file2 = `file2-${Utils.random()}.txt`; let file2Id; - const file3 = `file3-${Utils.random()}.txt`; - const file4 = `file4-${Utils.random()}.txt`; let file4Id; - const folder1 = `folder1-${Utils.random()}`; let folder1Id; - const folder2 = `folder2-${Utils.random()}`; let folder2Id; - const fileLocked1 = `fileLocked-${Utils.random()}.txt`; let fileLocked1Id; + await dataTable.selectItem(file1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`${file1} deleted`); + expect(await dataTable.getRowByName(file1).isPresent()).toBe(false, 'Item was not removed from list'); + items--; + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(file1).isPresent()).toBe(true, 'Item is not in trash'); - beforeAll(async (done) => { - file1Id = (await apis.user.nodes.createFile(file1)).entry.id; - file2Id = (await apis.user.nodes.createFile(file2)).entry.id; - folder1Id = (await apis.user.nodes.createFolder(folder1)).entry.id; - folder2Id = (await apis.user.nodes.createFolder(folder2)).entry.id; - await apis.user.nodes.createFile(file3, folder1Id); - file4Id = (await apis.user.nodes.createFile(file4, folder2Id)).entry.id; - await apis.user.nodes.lockFile(file4Id); - - fileLocked1Id = (await apis.user.nodes.createFile(fileLocked1)).entry.id; - await apis.user.nodes.lockFile(fileLocked1Id); - - await loginPage.loginWith(username); - done(); - }); - - beforeEach(async (done) => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); - await dataTable.waitForHeader(); - done(); - }); - - afterEach(async (done) => { - await page.refresh(); - done(); - }); - - afterAll(async (done) => { - await Promise.all([ - apis.user.nodes.unlockFile(file4Id), - apis.user.nodes.unlockFile(fileLocked1Id) - ]); - await Promise.all([ - logoutPage.load(), - apis.user.nodes.deleteNodesById([file1Id, file2Id, folder1Id, folder2Id, fileLocked1Id]) - ]); - await apis.user.search.waitForApi(username, {expect: 0}); - done(); - }); - - xit('delete a file and check notification - [C217125]', async () => { - let items = await page.dataTable.countRows(); - - await dataTable.selectItem(file1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`${file1} deleted`); - expect(dataTable.getRowByName(file1).isPresent()).toBe(false, 'Item was not removed from list'); - items--; - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(file1).isPresent()).toBe(true, 'Item is not in trash'); - - await apis.user.trashcan.restore(file1Id); - }); - - xit('delete multiple files and check notification - [C280502]', async () => { - let items = await page.dataTable.countRows(); - - await dataTable.selectMultipleItems([file1, file2]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`Deleted 2 items`); - expect(dataTable.getRowByName(file1).isPresent()).toBe(false, `${file1} was not removed from list`); - expect(dataTable.getRowByName(file2).isPresent()).toBe(false, `${file2} was not removed from list`); - items = items - 2; - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(file1).isPresent()).toBe(true, `${file1} is not in trash`); - expect(dataTable.getRowByName(file2).isPresent()).toBe(true, `${file2} is not in trash`); - - await apis.user.trashcan.restore(file1Id); - await apis.user.trashcan.restore(file2Id); - }); - - it('delete a folder with content - [C217126]', async () => { - let items = await page.dataTable.countRows(); - - await dataTable.selectItem(folder1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - expect(dataTable.getRowByName(folder1).isPresent()).toBe(false, 'Item was not removed from list'); - items--; - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(folder1).isPresent()).toBe(true, 'Item is not in trash'); - expect(dataTable.getRowByName(file3).isPresent()).toBe(false, 'Item is in trash'); - - await apis.user.trashcan.restore(folder1Id); - }); - - it('delete a folder containing locked files - [C217127]', async () => { - await dataTable.selectItem(folder2); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`${folder2} couldn't be deleted`); - expect(dataTable.getRowByName(folder2).isPresent()).toBe(true, 'Item was removed from list'); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(folder2).isPresent()).toBe(false, 'Item is in trash'); - expect(dataTable.getRowByName(file4).isPresent()).toBe(false, 'Item is in trash'); - }); - - it('notification on multiple items deletion - some items fail to delete - [C217129]', async () => { - await dataTable.selectMultipleItems([file1, folder2]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`Deleted 1 item, 1 couldn't be deleted`); - - await apis.user.trashcan.restore(file1Id); - }); - - it('notification on multiple items deletion - all items fail to delete - [C217130]', async () => { - await dataTable.selectMultipleItems([fileLocked1, folder2]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toEqual(`2 items couldn't be deleted`); - }); - - it('successful delete notification shows Undo action - [C217131]', async () => { - await dataTable.selectItem(file1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`Undo`); - - await apis.user.trashcan.restore(file1Id); - }); - - it('unsuccessful delete notification does not show Undo action - [C217134]', async () => { - await dataTable.selectItem(folder2); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).not.toContain(`Undo`); - }); - - it('undo delete of file - [C217132]', async () => { - const items = await page.dataTable.countRows(); - - await dataTable.selectItem(file1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - await page.clickSnackBarAction(); - expect(dataTable.getRowByName(file1).isPresent()).toBe(true, 'Item was not restored'); - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - }); - - it('undo delete of folder with content - [C280503]', async () => { - const items = await page.dataTable.countRows(); - - await dataTable.selectItem(folder1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - await page.clickSnackBarAction(); - expect(dataTable.getRowByName(folder1).isPresent()).toBe(true, 'Item was not restored'); - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - await dataTable.doubleClickOnRowByName(folder1); - expect(dataTable.getRowByName(file3).isPresent()).toBe(true, 'file from folder not restored'); - }); - - xit('undo delete of multiple files - [C280504]', async () => { - const items = await page.dataTable.countRows(); - - await dataTable.selectMultipleItems([file1, file2]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - await page.clickSnackBarAction(); - expect(dataTable.getRowByName(file1).isPresent()).toBe(true, `${file1} was not removed from list`); - expect(dataTable.getRowByName(file2).isPresent()).toBe(true, `${file2} was not removed from list`); - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - }); + await apis.user.trashcan.restore(file1Id); }); - describe('on Shared Files', () => { - const sharedFile1 = `sharedFile1-${Utils.random()}.txt`; let sharedFile1Id; - const sharedFile2 = `sharedFile2-${Utils.random()}.txt`; let sharedFile2Id; - const sharedFile3 = `sharedFile3-${Utils.random()}.txt`; let sharedFile3Id; - const sharedFile4 = `sharedFile4-${Utils.random()}.txt`; let sharedFile4Id; + xit('delete multiple files and check notification - [C280502]', async () => { + let items = await page.dataTable.countRows(); - beforeAll(async (done) => { - sharedFile1Id = (await apis.user.nodes.createFile(sharedFile1)).entry.id; - sharedFile2Id = (await apis.user.nodes.createFile(sharedFile2)).entry.id; - sharedFile3Id = (await apis.user.nodes.createFile(sharedFile3)).entry.id; - sharedFile4Id = (await apis.user.nodes.createFile(sharedFile4)).entry.id; - await apis.user.shared.shareFilesByIds([sharedFile1Id, sharedFile2Id, sharedFile3Id, sharedFile4Id]); - await apis.user.shared.waitForApi({ expect: 4 }); + await dataTable.selectMultipleItems([file1, file2]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`Deleted 2 items`); + expect(await dataTable.getRowByName(file1).isPresent()).toBe(false, `${file1} was not removed from list`); + expect(await dataTable.getRowByName(file2).isPresent()).toBe(false, `${file2} was not removed from list`); + items = items - 2; + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(file1).isPresent()).toBe(true, `${file1} is not in trash`); + expect(await dataTable.getRowByName(file2).isPresent()).toBe(true, `${file2} is not in trash`); - await loginPage.loginWith(username); - done(); - }); - - beforeEach(async (done) => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); - await dataTable.waitForHeader(); - done(); - }); - - afterEach(async (done) => { - await page.refresh(); - done(); - }); - - afterAll(async (done) => { - await Promise.all([ - logoutPage.load(), - apis.user.nodes.deleteNodesById([sharedFile1Id, sharedFile2Id, sharedFile3Id, sharedFile4Id]) - ]); - await apis.user.search.waitForApi(username, {expect: 0}); - done(); - }); - - xit('delete a file and check notification - [C280316]', async () => { - await dataTable.selectItem(sharedFile1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`${sharedFile1} deleted`); - expect(dataTable.getRowByName(sharedFile1).isPresent()).toBe(false, 'Item was not removed from list'); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(sharedFile1).isPresent()).toBe(true, 'Item is not in trash'); - - await apis.user.trashcan.restore(sharedFile1Id); - await apis.user.shared.shareFilesByIds([ sharedFile1Id ]); - await apis.user.shared.waitForApi({ expect: 4 }); - }); - - xit('delete multiple files and check notification - [C280513]', async () => { - await dataTable.selectMultipleItems([sharedFile2, sharedFile3]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`Deleted 2 items`); - expect(dataTable.getRowByName(sharedFile2).isPresent()).toBe(false, `${sharedFile2} was not removed from list`); - expect(dataTable.getRowByName(sharedFile3).isPresent()).toBe(false, `${sharedFile3} was not removed from list`); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(sharedFile2).isPresent()).toBe(true, `${sharedFile2} is not in trash`); - expect(dataTable.getRowByName(sharedFile3).isPresent()).toBe(true, `${sharedFile3} is not in trash`); - - await apis.user.trashcan.restore(sharedFile2Id); - await apis.user.trashcan.restore(sharedFile3Id); - await apis.user.shared.shareFilesByIds([ sharedFile2Id, sharedFile3Id ]); - await apis.user.shared.waitForApi({ expect: 4 }); - }); - - xit('successful delete notification shows Undo action - [C280323]', async () => { - await dataTable.selectItem(sharedFile1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`Undo`); - - await apis.user.trashcan.restore(sharedFile1Id); - }); - - xit('undo delete of file - [C280324]', async () => { - await dataTable.selectItem(sharedFile2); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - await page.clickSnackBarAction(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(sharedFile2).isPresent()).toBe(false, 'Item was not restored'); - }); - - xit('undo delete of multiple files - [C280514]', async () => { - await dataTable.selectMultipleItems([sharedFile3, sharedFile4]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - await page.clickSnackBarAction(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(sharedFile3).isPresent()).toBe(false, `${sharedFile3} was not restored`); - expect(dataTable.getRowByName(sharedFile4).isPresent()).toBe(false, `${sharedFile4} was not restored`); - }); + await apis.user.trashcan.restore(file1Id); + await apis.user.trashcan.restore(file2Id); }); - describe('on Favorites', () => { - const favoriteFile1 = `favFile1-${Utils.random()}.txt`; let favoriteFile1Id; - const favoriteFile2 = `favFile2-${Utils.random()}.txt`; let favoriteFile2Id; - const favoriteFile3 = `favFile3-${Utils.random()}.txt`; - const favoriteFile4 = `favFile4-${Utils.random()}.txt`; let favoriteFile4Id; - const favoriteFolder1 = `favFolder1-${Utils.random()}`; let favoriteFolder1Id; - const favoriteFolder2 = `favFolder2-${Utils.random()}`; let favoriteFolder2Id; - const favoriteFileLocked1 = `favFileLocked-${Utils.random()}.txt`; let favoriteFileLocked1Id; + it('delete a folder with content - [C217126]', async () => { + let items = await page.dataTable.countRows(); - beforeAll(async (done) => { - favoriteFile1Id = (await apis.user.nodes.createFile(favoriteFile1)).entry.id; - favoriteFile2Id = (await apis.user.nodes.createFile(favoriteFile2)).entry.id; - favoriteFolder1Id = (await apis.user.nodes.createFolder(favoriteFolder1)).entry.id; - favoriteFolder2Id = (await apis.user.nodes.createFolder(favoriteFolder2)).entry.id; - await apis.user.nodes.createFile(favoriteFile3, favoriteFolder1Id); - favoriteFile4Id = (await apis.user.nodes.createFile(favoriteFile4, favoriteFolder2Id)).entry.id; - await apis.user.nodes.lockFile(favoriteFile4Id); + await dataTable.selectItem(folder1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + expect(await dataTable.getRowByName(folder1).isPresent()).toBe(false, 'Item was not removed from list'); + items--; + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(folder1).isPresent()).toBe(true, 'Item is not in trash'); + expect(await dataTable.getRowByName(file3).isPresent()).toBe(false, 'Item is in trash'); - favoriteFileLocked1Id = (await apis.user.nodes.createFile(favoriteFileLocked1)).entry.id; - await apis.user.nodes.lockFile(favoriteFileLocked1Id); - - await apis.user.favorites.addFavoritesByIds('file', [ favoriteFile1Id, favoriteFile2Id, favoriteFileLocked1Id ]); - await apis.user.favorites.addFavoritesByIds('folder', [ favoriteFolder1Id, favoriteFolder2Id ]); - await apis.user.favorites.waitForApi({ expect: 5 }); - - await loginPage.loginWith(username); - done(); - }); - - beforeEach(async (done) => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); - await dataTable.waitForHeader(); - done(); - }); - - afterEach(async (done) => { - await page.refresh(); - done(); - }); - - afterAll(async (done) => { - await Promise.all([ - apis.user.nodes.unlockFile(favoriteFile4Id), - apis.user.nodes.unlockFile(favoriteFileLocked1Id) - ]); - await Promise.all([ - logoutPage.load(), - apis.user.nodes.deleteNodesById([ - favoriteFile1Id, favoriteFile2Id, favoriteFolder1Id, favoriteFolder2Id, favoriteFileLocked1Id - ]) - ]); - await apis.user.search.waitForApi(username, {expect: 0}); - done(); - }); - - xit('delete a file and check notification - [C280516]', async () => { - let items = await page.dataTable.countRows(); - - await dataTable.selectItem(favoriteFile1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`${favoriteFile1} deleted`); - expect(dataTable.getRowByName(favoriteFile1).isPresent()).toBe(false, 'Item was not removed from list'); - items--; - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(favoriteFile1).isPresent()).toBe(true, 'Item is not in trash'); - - await apis.user.trashcan.restore(favoriteFile1Id); - }); - - xit('delete multiple files and check notification - [C280517]', async () => { - let items = await page.dataTable.countRows(); - - await dataTable.selectMultipleItems([favoriteFile1, favoriteFile2]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`Deleted 2 items`); - expect(dataTable.getRowByName(favoriteFile1).isPresent()).toBe(false, `${favoriteFile1} was not removed from list`); - expect(dataTable.getRowByName(favoriteFile2).isPresent()).toBe(false, `${favoriteFile2} was not removed from list`); - items = items - 2; - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(favoriteFile1).isPresent()).toBe(true, `${favoriteFile1} is not in trash`); - expect(dataTable.getRowByName(favoriteFile2).isPresent()).toBe(true, `${favoriteFile2} is not in trash`); - - await apis.user.trashcan.restore(favoriteFile1Id); - await apis.user.trashcan.restore(favoriteFile2Id); - }); - - it('delete a folder with content - [C280518]', async () => { - let items = await page.dataTable.countRows(); - await dataTable.selectItem(favoriteFolder1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - expect(dataTable.getRowByName(favoriteFolder1).isPresent()).toBe(false, 'Item was not removed from list'); - items--; - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(favoriteFolder1).isPresent()).toBe(true, 'Item is not in trash'); - expect(dataTable.getRowByName(favoriteFile3).isPresent()).toBe(false, 'Item is in trash'); - - await apis.user.trashcan.restore(favoriteFolder1Id); - }); - - it('delete a folder containing locked files - [C280519]', async () => { - await dataTable.selectItem(favoriteFolder2); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`${favoriteFolder2} couldn't be deleted`); - expect(dataTable.getRowByName(favoriteFolder2).isPresent()).toBe(true, 'Item was removed from list'); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(favoriteFolder2).isPresent()).toBe(false, 'Item is in trash'); - expect(dataTable.getRowByName(favoriteFile4).isPresent()).toBe(false, 'Item is in trash'); - }); - - it('notification on multiple items deletion - some items fail to delete - [C280520]', async () => { - await dataTable.selectMultipleItems([favoriteFile1, favoriteFolder2]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`Deleted 1 item, 1 couldn't be deleted`); - - await apis.user.trashcan.restore(favoriteFile1Id); - }); - - it('notification on multiple items deletion - all items fail to delete - [C280521]', async () => { - await dataTable.selectMultipleItems([favoriteFileLocked1, favoriteFolder2]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toEqual(`2 items couldn't be deleted`); - }); - - it('successful delete notification shows Undo action - [C280522]', async () => { - await dataTable.selectItem(favoriteFile1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`Undo`); - - await apis.user.trashcan.restore(favoriteFile1Id); - }); - - it('unsuccessful delete notification does not show Undo action - [C280523]', async () => { - await dataTable.selectItem(favoriteFolder2); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).not.toContain(`Undo`); - }); - - it('undo delete of file - [C280524]', async () => { - const items = await page.dataTable.countRows(); - - await dataTable.selectItem(favoriteFile1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - await page.clickSnackBarAction(); - expect(dataTable.getRowByName(favoriteFile1).isPresent()).toBe(true, 'Item was not restored'); - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - }); - - it('undo delete of folder with content - [C280526]', async () => { - const items = await page.dataTable.countRows(); - - await dataTable.selectItem(favoriteFolder1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - await page.clickSnackBarAction(); - expect(dataTable.getRowByName(favoriteFolder1).isPresent()).toBe(true, 'Item was not restored'); - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - await dataTable.doubleClickOnRowByName(favoriteFolder1); - expect(dataTable.getRowByName(favoriteFile3).isPresent()).toBe(true, 'file from folder not restored'); - }); - - it('undo delete of multiple files - [C280525]', async () => { - const items = await page.dataTable.countRows(); - - await dataTable.selectMultipleItems([favoriteFile1, favoriteFile2]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - await page.clickSnackBarAction(); - expect(dataTable.getRowByName(favoriteFile1).isPresent()).toBe(true, `${favoriteFile1} was not removed from list`); - expect(dataTable.getRowByName(favoriteFile2).isPresent()).toBe(true, `${favoriteFile2} was not removed from list`); - expect(page.pagination.range.getText()).toContain(`1-${items} of ${items}`); - }); + await apis.user.trashcan.restore(folder1Id); }); - // TODO: try to change search.waitForApi to wait for exact number of items - xdescribe('on Recent Files', () => { - const recentFile1 = `recentFile1-${Utils.random()}.txt`; let recentFile1Id; - const recentFile2 = `recentFile2-${Utils.random()}.txt`; let recentFile2Id; - const recentFile3 = `recentFile3-${Utils.random()}.txt`; let recentFile3Id; - const recentFile4 = `recentFile4-${Utils.random()}.txt`; let recentFile4Id; - - beforeAll(async (done) => { - recentFile1Id = (await apis.user.nodes.createFile(recentFile1)).entry.id; - recentFile2Id = (await apis.user.nodes.createFile(recentFile2)).entry.id; - recentFile3Id = (await apis.user.nodes.createFile(recentFile3)).entry.id; - recentFile4Id = (await apis.user.nodes.createFile(recentFile4)).entry.id; - await apis.user.search.waitForApi(username, { expect: 4 }); - - await loginPage.loginWith(username); - - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); - const empty = await dataTable.isEmptyList(); - if (empty) { - await browser.sleep(6000); - await browser.refresh(); - } - done(); - }); - - beforeEach(async (done) => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); - await dataTable.waitForHeader(); - done(); - }); - - afterEach(async (done) => { - await page.refresh(); - done(); - }); - - afterAll(async (done) => { - await Promise.all([ - logoutPage.load(), - apis.user.nodes.deleteNodesById([recentFile1Id, recentFile2Id, recentFile3Id, recentFile4Id]) - ]); - done(); - }); - - xit('delete a file and check notification - [C280528]', async () => { - await dataTable.selectItem(recentFile1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`${recentFile1} deleted`); - expect(dataTable.getRowByName(recentFile1).isPresent()).toBe(false, 'Item was not removed from list'); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(recentFile1).isPresent()).toBe(true, 'Item is not in trash'); - - await apis.user.trashcan.restore(recentFile1Id); - await apis.user.search.waitForApi(username, { expect: 4 }); - }); - - xit('delete multiple files and check notification - [C280529]', async () => { - await dataTable.selectMultipleItems([recentFile2, recentFile3]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`Deleted 2 items`); - expect(dataTable.getRowByName(recentFile2).isPresent()).toBe(false, `${recentFile2} was not removed from list`); - expect(dataTable.getRowByName(recentFile3).isPresent()).toBe(false, `${recentFile3} was not removed from list`); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(recentFile2).isPresent()).toBe(true, `${recentFile2} is not in trash`); - expect(dataTable.getRowByName(recentFile3).isPresent()).toBe(true, `${recentFile3} is not in trash`); - - await apis.user.trashcan.restore(recentFile2Id); - await apis.user.trashcan.restore(recentFile3Id); - await apis.user.search.waitForApi(username, { expect: 4 }); - }); - - xit('successful delete notification shows Undo action - [C280534]', async () => { - await dataTable.selectItem(recentFile1); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - const message = await page.getSnackBarMessage(); - expect(message).toContain(`Undo`); - - await apis.user.trashcan.restore(recentFile1Id); - await apis.user.search.waitForApi(username, { expect: 4 }); - }); - - // due to the fact that the search api is slow to update, - // we cannot test that the restored file is displayed in the Recent Files list - // without adding a very big browser.sleep followed by a page.refresh - // so for the moment we're testing that the restored file is not displayed in the Trash - xit('undo delete of file - [C280536]', async () => { - await dataTable.selectItem(recentFile2); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - await page.clickSnackBarAction(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(recentFile2).isPresent()).toBe(false, 'Item is in Trash'); - }); - - // due to the fact that the search api is slow to update, - // we cannot test that the restored file is displayed in the Recent Files list - // without adding a very big browser.sleep followed by a page.refresh - // so for the moment we're testing that the restored file is not displayed in the Trash - xit('undo delete of multiple files - [C280537]', async () => { - await dataTable.selectMultipleItems([recentFile3, recentFile4]); - await toolbar.openMoreMenu(); - await toolbar.menu.clickMenuItem('Delete'); - await page.clickSnackBarAction(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - expect(dataTable.getRowByName(recentFile3).isPresent()).toBe(false, `${recentFile3} is in Trash`); - expect(dataTable.getRowByName(recentFile4).isPresent()).toBe(false, `${recentFile4} is in Trash`); - }); + it('delete a folder containing locked files - [C217127]', async () => { + await dataTable.selectItem(folder2); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`${folder2} couldn't be deleted`); + expect(await dataTable.getRowByName(folder2).isPresent()).toBe(true, 'Item was removed from list'); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(folder2).isPresent()).toBe(false, 'Item is in trash'); + expect(await dataTable.getRowByName(file4).isPresent()).toBe(false, 'Item is in trash'); }); + + it('notification on multiple items deletion - some items fail to delete - [C217129]', async () => { + await dataTable.selectMultipleItems([file1, folder2]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`Deleted 1 item, 1 couldn't be deleted`); + + await apis.user.trashcan.restore(file1Id); + }); + + it('notification on multiple items deletion - all items fail to delete - [C217130]', async () => { + await dataTable.selectMultipleItems([fileLocked1, folder2]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toEqual(`2 items couldn't be deleted`); + }); + + it('successful delete notification shows Undo action - [C217131]', async () => { + await dataTable.selectItem(file1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`Undo`); + + await apis.user.trashcan.restore(file1Id); + }); + + it('unsuccessful delete notification does not show Undo action - [C217134]', async () => { + await dataTable.selectItem(folder2); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).not.toContain(`Undo`); + }); + + it('undo delete of file - [C217132]', async () => { + const items = await page.dataTable.countRows(); + + await dataTable.selectItem(file1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + await page.clickSnackBarAction(); + expect(await dataTable.getRowByName(file1).isPresent()).toBe(true, 'Item was not restored'); + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + }); + + it('undo delete of folder with content - [C280503]', async () => { + const items = await page.dataTable.countRows(); + + await dataTable.selectItem(folder1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + await page.clickSnackBarAction(); + expect(await dataTable.getRowByName(folder1).isPresent()).toBe(true, 'Item was not restored'); + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + await dataTable.doubleClickOnRowByName(folder1); + expect(await dataTable.getRowByName(file3).isPresent()).toBe(true, 'file from folder not restored'); + }); + + xit('undo delete of multiple files - [C280504]', async () => { + const items = await page.dataTable.countRows(); + + await dataTable.selectMultipleItems([file1, file2]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + await page.clickSnackBarAction(); + expect(await dataTable.getRowByName(file1).isPresent()).toBe(true, `${file1} was not removed from list`); + expect(await dataTable.getRowByName(file2).isPresent()).toBe(true, `${file2} was not removed from list`); + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + }); + }); + + describe('on Shared Files', () => { + const sharedFile1 = `sharedFile1-${Utils.random()}.txt`; let sharedFile1Id; + const sharedFile2 = `sharedFile2-${Utils.random()}.txt`; let sharedFile2Id; + const sharedFile3 = `sharedFile3-${Utils.random()}.txt`; let sharedFile3Id; + const sharedFile4 = `sharedFile4-${Utils.random()}.txt`; let sharedFile4Id; + + beforeAll(async (done) => { + sharedFile1Id = (await apis.user.nodes.createFile(sharedFile1)).entry.id; + sharedFile2Id = (await apis.user.nodes.createFile(sharedFile2)).entry.id; + sharedFile3Id = (await apis.user.nodes.createFile(sharedFile3)).entry.id; + sharedFile4Id = (await apis.user.nodes.createFile(sharedFile4)).entry.id; + await apis.user.shared.shareFilesByIds([sharedFile1Id, sharedFile2Id, sharedFile3Id, sharedFile4Id]); + await apis.user.shared.waitForApi({ expect: 4 }); + + await loginPage.loginWith(username); + done(); + }); + + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); + await dataTable.waitForHeader(); + done(); + }); + + afterEach(async (done) => { + await page.refresh(); + done(); + }); + + afterAll(async (done) => { + await Promise.all([ + logoutPage.load(), + apis.user.nodes.deleteNodesById([sharedFile1Id, sharedFile2Id, sharedFile3Id, sharedFile4Id]) + ]); + await apis.user.search.waitForApi(username, {expect: 0}); + done(); + }); + + xit('delete a file and check notification - [C280316]', async () => { + await dataTable.selectItem(sharedFile1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`${sharedFile1} deleted`); + expect(await dataTable.getRowByName(sharedFile1).isPresent()).toBe(false, 'Item was not removed from list'); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(sharedFile1).isPresent()).toBe(true, 'Item is not in trash'); + + await apis.user.trashcan.restore(sharedFile1Id); + await apis.user.shared.shareFilesByIds([ sharedFile1Id ]); + await apis.user.shared.waitForApi({ expect: 4 }); + }); + + xit('delete multiple files and check notification - [C280513]', async () => { + await dataTable.selectMultipleItems([sharedFile2, sharedFile3]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`Deleted 2 items`); + expect(await dataTable.getRowByName(sharedFile2).isPresent()).toBe(false, `${sharedFile2} was not removed from list`); + expect(await dataTable.getRowByName(sharedFile3).isPresent()).toBe(false, `${sharedFile3} was not removed from list`); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(sharedFile2).isPresent()).toBe(true, `${sharedFile2} is not in trash`); + expect(await dataTable.getRowByName(sharedFile3).isPresent()).toBe(true, `${sharedFile3} is not in trash`); + + await apis.user.trashcan.restore(sharedFile2Id); + await apis.user.trashcan.restore(sharedFile3Id); + await apis.user.shared.shareFilesByIds([ sharedFile2Id, sharedFile3Id ]); + await apis.user.shared.waitForApi({ expect: 4 }); + }); + + xit('successful delete notification shows Undo action - [C280323]', async () => { + await dataTable.selectItem(sharedFile1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`Undo`); + + await apis.user.trashcan.restore(sharedFile1Id); + }); + + xit('undo delete of file - [C280324]', async () => { + await dataTable.selectItem(sharedFile2); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + await page.clickSnackBarAction(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(sharedFile2).isPresent()).toBe(false, 'Item was not restored'); + }); + + xit('undo delete of multiple files - [C280514]', async () => { + await dataTable.selectMultipleItems([sharedFile3, sharedFile4]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + await page.clickSnackBarAction(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(sharedFile3).isPresent()).toBe(false, `${sharedFile3} was not restored`); + expect(await dataTable.getRowByName(sharedFile4).isPresent()).toBe(false, `${sharedFile4} was not restored`); + }); + }); + + describe('on Favorites', () => { + const favoriteFile1 = `favFile1-${Utils.random()}.txt`; let favoriteFile1Id; + const favoriteFile2 = `favFile2-${Utils.random()}.txt`; let favoriteFile2Id; + const favoriteFile3 = `favFile3-${Utils.random()}.txt`; + const favoriteFile4 = `favFile4-${Utils.random()}.txt`; let favoriteFile4Id; + const favoriteFolder1 = `favFolder1-${Utils.random()}`; let favoriteFolder1Id; + const favoriteFolder2 = `favFolder2-${Utils.random()}`; let favoriteFolder2Id; + const favoriteFileLocked1 = `favFileLocked-${Utils.random()}.txt`; let favoriteFileLocked1Id; + + beforeAll(async (done) => { + favoriteFile1Id = (await apis.user.nodes.createFile(favoriteFile1)).entry.id; + favoriteFile2Id = (await apis.user.nodes.createFile(favoriteFile2)).entry.id; + favoriteFolder1Id = (await apis.user.nodes.createFolder(favoriteFolder1)).entry.id; + favoriteFolder2Id = (await apis.user.nodes.createFolder(favoriteFolder2)).entry.id; + await apis.user.nodes.createFile(favoriteFile3, favoriteFolder1Id); + favoriteFile4Id = (await apis.user.nodes.createFile(favoriteFile4, favoriteFolder2Id)).entry.id; + await apis.user.nodes.lockFile(favoriteFile4Id); + + favoriteFileLocked1Id = (await apis.user.nodes.createFile(favoriteFileLocked1)).entry.id; + await apis.user.nodes.lockFile(favoriteFileLocked1Id); + + await apis.user.favorites.addFavoritesByIds('file', [ favoriteFile1Id, favoriteFile2Id, favoriteFileLocked1Id ]); + await apis.user.favorites.addFavoritesByIds('folder', [ favoriteFolder1Id, favoriteFolder2Id ]); + await apis.user.favorites.waitForApi({ expect: 5 }); + + await loginPage.loginWith(username); + done(); + }); + + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); + await dataTable.waitForHeader(); + done(); + }); + + afterEach(async (done) => { + await page.refresh(); + done(); + }); + + afterAll(async (done) => { + await Promise.all([ + apis.user.nodes.unlockFile(favoriteFile4Id), + apis.user.nodes.unlockFile(favoriteFileLocked1Id) + ]); + await Promise.all([ + logoutPage.load(), + apis.user.nodes.deleteNodesById([ + favoriteFile1Id, favoriteFile2Id, favoriteFolder1Id, favoriteFolder2Id, favoriteFileLocked1Id + ]) + ]); + await apis.user.search.waitForApi(username, {expect: 0}); + done(); + }); + + xit('delete a file and check notification - [C280516]', async () => { + let items = await page.dataTable.countRows(); + + await dataTable.selectItem(favoriteFile1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`${favoriteFile1} deleted`); + expect(await dataTable.getRowByName(favoriteFile1).isPresent()).toBe(false, 'Item was not removed from list'); + items--; + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(favoriteFile1).isPresent()).toBe(true, 'Item is not in trash'); + + await apis.user.trashcan.restore(favoriteFile1Id); + }); + + xit('delete multiple files and check notification - [C280517]', async () => { + let items = await page.dataTable.countRows(); + + await dataTable.selectMultipleItems([favoriteFile1, favoriteFile2]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`Deleted 2 items`); + expect(await dataTable.getRowByName(favoriteFile1).isPresent()).toBe(false, `${favoriteFile1} was not removed from list`); + expect(await dataTable.getRowByName(favoriteFile2).isPresent()).toBe(false, `${favoriteFile2} was not removed from list`); + items = items - 2; + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(favoriteFile1).isPresent()).toBe(true, `${favoriteFile1} is not in trash`); + expect(await dataTable.getRowByName(favoriteFile2).isPresent()).toBe(true, `${favoriteFile2} is not in trash`); + + await apis.user.trashcan.restore(favoriteFile1Id); + await apis.user.trashcan.restore(favoriteFile2Id); + }); + + it('delete a folder with content - [C280518]', async () => { + let items = await page.dataTable.countRows(); + await dataTable.selectItem(favoriteFolder1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + expect(await dataTable.getRowByName(favoriteFolder1).isPresent()).toBe(false, 'Item was not removed from list'); + items--; + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(favoriteFolder1).isPresent()).toBe(true, 'Item is not in trash'); + expect(await dataTable.getRowByName(favoriteFile3).isPresent()).toBe(false, 'Item is in trash'); + + await apis.user.trashcan.restore(favoriteFolder1Id); + }); + + it('delete a folder containing locked files - [C280519]', async () => { + await dataTable.selectItem(favoriteFolder2); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`${favoriteFolder2} couldn't be deleted`); + expect(await dataTable.getRowByName(favoriteFolder2).isPresent()).toBe(true, 'Item was removed from list'); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(favoriteFolder2).isPresent()).toBe(false, 'Item is in trash'); + expect(await dataTable.getRowByName(favoriteFile4).isPresent()).toBe(false, 'Item is in trash'); + }); + + it('notification on multiple items deletion - some items fail to delete - [C280520]', async () => { + await dataTable.selectMultipleItems([favoriteFile1, favoriteFolder2]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`Deleted 1 item, 1 couldn't be deleted`); + + await apis.user.trashcan.restore(favoriteFile1Id); + }); + + it('notification on multiple items deletion - all items fail to delete - [C280521]', async () => { + await dataTable.selectMultipleItems([favoriteFileLocked1, favoriteFolder2]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toEqual(`2 items couldn't be deleted`); + }); + + it('successful delete notification shows Undo action - [C280522]', async () => { + await dataTable.selectItem(favoriteFile1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`Undo`); + + await apis.user.trashcan.restore(favoriteFile1Id); + }); + + it('unsuccessful delete notification does not show Undo action - [C280523]', async () => { + await dataTable.selectItem(favoriteFolder2); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).not.toContain(`Undo`); + }); + + it('undo delete of file - [C280524]', async () => { + const items = await page.dataTable.countRows(); + + await dataTable.selectItem(favoriteFile1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + await page.clickSnackBarAction(); + expect(await dataTable.getRowByName(favoriteFile1).isPresent()).toBe(true, 'Item was not restored'); + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + }); + + it('undo delete of folder with content - [C280526]', async () => { + const items = await page.dataTable.countRows(); + + await dataTable.selectItem(favoriteFolder1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + await page.clickSnackBarAction(); + expect(await dataTable.getRowByName(favoriteFolder1).isPresent()).toBe(true, 'Item was not restored'); + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + await dataTable.doubleClickOnRowByName(favoriteFolder1); + expect(await dataTable.getRowByName(favoriteFile3).isPresent()).toBe(true, 'file from folder not restored'); + }); + + it('undo delete of multiple files - [C280525]', async () => { + const items = await page.dataTable.countRows(); + + await dataTable.selectMultipleItems([favoriteFile1, favoriteFile2]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + await page.clickSnackBarAction(); + expect(await dataTable.getRowByName(favoriteFile1).isPresent()).toBe(true, `${favoriteFile1} was not removed from list`); + expect(await dataTable.getRowByName(favoriteFile2).isPresent()).toBe(true, `${favoriteFile2} was not removed from list`); + expect(await page.pagination.range.getText()).toContain(`1-${items} of ${items}`); + }); + }); + + // TODO: try to change search.waitForApi to wait for exact number of items + xdescribe('on Recent Files', () => { + const recentFile1 = `recentFile1-${Utils.random()}.txt`; let recentFile1Id; + const recentFile2 = `recentFile2-${Utils.random()}.txt`; let recentFile2Id; + const recentFile3 = `recentFile3-${Utils.random()}.txt`; let recentFile3Id; + const recentFile4 = `recentFile4-${Utils.random()}.txt`; let recentFile4Id; + + beforeAll(async (done) => { + recentFile1Id = (await apis.user.nodes.createFile(recentFile1)).entry.id; + recentFile2Id = (await apis.user.nodes.createFile(recentFile2)).entry.id; + recentFile3Id = (await apis.user.nodes.createFile(recentFile3)).entry.id; + recentFile4Id = (await apis.user.nodes.createFile(recentFile4)).entry.id; + await apis.user.search.waitForApi(username, { expect: 4 }); + + await loginPage.loginWith(username); + + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); + const empty = await dataTable.isEmptyList(); + if (empty) { + await browser.sleep(6000); + await browser.refresh(); + } + done(); + }); + + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); + await dataTable.waitForHeader(); + done(); + }); + + afterEach(async (done) => { + await page.refresh(); + done(); + }); + + afterAll(async (done) => { + await Promise.all([ + logoutPage.load(), + apis.user.nodes.deleteNodesById([recentFile1Id, recentFile2Id, recentFile3Id, recentFile4Id]) + ]); + done(); + }); + + xit('delete a file and check notification - [C280528]', async () => { + await dataTable.selectItem(recentFile1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`${recentFile1} deleted`); + expect(await dataTable.getRowByName(recentFile1).isPresent()).toBe(false, 'Item was not removed from list'); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(recentFile1).isPresent()).toBe(true, 'Item is not in trash'); + + await apis.user.trashcan.restore(recentFile1Id); + await apis.user.search.waitForApi(username, { expect: 4 }); + }); + + xit('delete multiple files and check notification - [C280529]', async () => { + await dataTable.selectMultipleItems([recentFile2, recentFile3]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`Deleted 2 items`); + expect(await dataTable.getRowByName(recentFile2).isPresent()).toBe(false, `${recentFile2} was not removed from list`); + expect(await dataTable.getRowByName(recentFile3).isPresent()).toBe(false, `${recentFile3} was not removed from list`); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(recentFile2).isPresent()).toBe(true, `${recentFile2} is not in trash`); + expect(await dataTable.getRowByName(recentFile3).isPresent()).toBe(true, `${recentFile3} is not in trash`); + + await apis.user.trashcan.restore(recentFile2Id); + await apis.user.trashcan.restore(recentFile3Id); + await apis.user.search.waitForApi(username, { expect: 4 }); + }); + + xit('successful delete notification shows Undo action - [C280534]', async () => { + await dataTable.selectItem(recentFile1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + const message = await page.getSnackBarMessage(); + expect(message).toContain(`Undo`); + + await apis.user.trashcan.restore(recentFile1Id); + await apis.user.search.waitForApi(username, { expect: 4 }); + }); + + // due to the fact that the search api is slow to update, + // we cannot test that the restored file is displayed in the Recent Files list + // without adding a very big browser.sleep followed by a page.refresh + // so for the moment we're testing that the restored file is not displayed in the Trash + xit('undo delete of file - [C280536]', async () => { + await dataTable.selectItem(recentFile2); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + await page.clickSnackBarAction(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(recentFile2).isPresent()).toBe(false, 'Item is in Trash'); + }); + + // due to the fact that the search api is slow to update, + // we cannot test that the restored file is displayed in the Recent Files list + // without adding a very big browser.sleep followed by a page.refresh + // so for the moment we're testing that the restored file is not displayed in the Trash + xit('undo delete of multiple files - [C280537]', async () => { + await dataTable.selectMultipleItems([recentFile3, recentFile4]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Delete'); + await page.clickSnackBarAction(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await dataTable.getRowByName(recentFile3).isPresent()).toBe(false, `${recentFile3} is in Trash`); + expect(await dataTable.getRowByName(recentFile4).isPresent()).toBe(false, `${recentFile4} is in Trash`); + }); + }); }); diff --git a/e2e/suites/actions/edit-folder.test.ts b/e2e/suites/actions/edit-folder.test.ts index e5962698f..aabceefa9 100755 --- a/e2e/suites/actions/edit-folder.test.ts +++ b/e2e/suites/actions/edit-folder.test.ts @@ -31,157 +31,151 @@ import { CreateOrEditFolderDialog } from '../../components/dialog/create-edit-fo import { Utils } from '../../utilities/utils'; describe('Edit folder', () => { - const username = `user-${Utils.random()}`; + const username = `user-${Utils.random()}`; - const parent = `parent-${Utils.random()}`; - const folderName = `folder-${Utils.random()}`; - const folderDescription = 'my folder description'; + const parent = `parent-${Utils.random()}`; let parentId; + const folderName = `folder-${Utils.random()}`; + const folderDescription = 'my folder description'; - const folderNameToEdit = `folder-${Utils.random()}`; - const duplicateFolderName = `folder-${Utils.random()}`; + const folderNameToEdit = `folder-${Utils.random()}`; + const duplicateFolderName = `folder-${Utils.random()}`; - const folderNameEdited = `folder-${Utils.random()}`; - const folderDescriptionEdited = 'description edited'; + const folderNameEdited = `folder-${Utils.random()}`; + const folderDescriptionEdited = 'description edited'; - const siteName = `site-private-${Utils.random()}`; + const siteName = `site-private-${Utils.random()}`; - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; + const apis = { + admin: new RepoClient(), + user: new RepoClient(username, username) + }; - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const personalFilesPage = new BrowsingPage(); - const editDialog = new CreateOrEditFolderDialog(); - const { dataTable } = personalFilesPage; - const editButton = personalFilesPage.toolbar.getButtonByTitleAttribute('Edit'); + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const personalFilesPage = new BrowsingPage(); + const editDialog = new CreateOrEditFolderDialog(); + const { dataTable } = personalFilesPage; + const editButton = personalFilesPage.toolbar.getButtonByTitleAttribute('Edit'); - beforeAll(done => { - apis.admin.people.createUser({ username }) - .then(() => apis.admin.sites.createSite(siteName, SITE_VISIBILITY.PRIVATE)) - .then(() => apis.admin.nodes.createFolders([ folderName ], `Sites/${siteName}/documentLibrary`)) - .then(() => apis.admin.sites.addSiteMember(siteName, username, SITE_ROLES.SITE_CONSUMER)) + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); + await apis.admin.sites.createSite(siteName, SITE_VISIBILITY.PRIVATE); + const docLibId = await apis.admin.sites.getDocLibId(siteName); + await apis.admin.nodes.createFolder(folderName, docLibId); + await apis.admin.sites.addSiteMember(siteName, username, SITE_ROLES.SITE_CONSUMER); - .then(() => apis.user.nodes.createFolder( parent )) - .then(resp => apis.user.nodes.createFolder( folderName, resp.entry.id, '', folderDescription )) - .then(() => apis.user.nodes.createFolders([ folderNameToEdit, duplicateFolderName ], parent)) + parentId = (await apis.user.nodes.createFolder(parent)).entry.id; + await apis.user.nodes.createFolder(folderName, parentId, '', folderDescription); + await apis.user.nodes.createFolder(folderNameToEdit, parentId); + await apis.user.nodes.createFolder(duplicateFolderName, parentId); - .then(() => loginPage.loginWith(username)) - .then(done); - }); + await loginPage.loginWith(username); + done(); + }); - beforeEach(done => { - personalFilesPage.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => dataTable.waitForHeader()) - .then(() => dataTable.doubleClickOnRowByName(parent)) - .then(() => dataTable.waitForHeader()) - .then(done); - }); + beforeEach(async (done) => { + await personalFilesPage.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + await dataTable.doubleClickOnRowByName(parent); + await dataTable.waitForHeader(); + done(); + }); - afterEach(done => { - browser.actions().sendKeys(protractor.Key.ESCAPE).perform().then(done); - }); + afterEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + done(); + }); - afterAll(done => { - Promise - .all([ - apis.admin.sites.deleteSite(siteName), - apis.user.nodes.deleteNodes([ parent ]), - logoutPage.load() - ]) - .then(done); - }); + afterAll(async (done) => { + await Promise.all([ + apis.admin.sites.deleteSite(siteName), + apis.user.nodes.deleteNodeById(parentId), + logoutPage.load() + ]); + done(); + }); - it('dialog UI defaults - [C216331]', () => { - dataTable.selectItem(folderName) - .then(() => editButton.click()) - .then(() => { - expect(editDialog.getTitle()).toEqual('Edit folder'); - expect(editDialog.nameInput.getAttribute('value')).toBe(folderName); - expect(editDialog.descriptionTextArea.getAttribute('value')).toBe(folderDescription); - expect(editDialog.updateButton.isEnabled()).toBe(true, 'upload button is not enabled'); - expect(editDialog.cancelButton.isEnabled()).toBe(true, 'cancel button is not enabled'); - }); - }); + it('dialog UI defaults - [C216331]', async () => { + await dataTable.selectItem(folderName); + await editButton.click(); + expect(await editDialog.getTitle()).toEqual('Edit folder'); + expect(await editDialog.nameInput.getAttribute('value')).toBe(folderName); + expect(await editDialog.descriptionTextArea.getAttribute('value')).toBe(folderDescription); + expect(await editDialog.updateButton.isEnabled()).toBe(true, 'upload button is not enabled'); + expect(await editDialog.cancelButton.isEnabled()).toBe(true, 'cancel button is not enabled'); + }); - it('properties are modified when pressing OK - [C216335]', () => { - dataTable.selectItem(folderNameToEdit) - .then(() => editButton.click()) - .then(() => editDialog.waitForDialogToOpen()) - .then(() => editDialog.enterDescription(folderDescriptionEdited)) - .then(() => editDialog.enterName(folderNameEdited)) - .then(() => editDialog.clickUpdate()) - .then(() => editDialog.waitForDialogToClose()) - .then(() => dataTable.waitForHeader()) - .then(() => expect(dataTable.getRowByName(folderNameEdited).isPresent()).toBe(true, 'Folder not displayed')) - .then(() => apis.user.nodes.getNodeDescription(folderNameEdited, parent)) - .then(desc => expect(desc).toEqual(folderDescriptionEdited)); - }); + it('properties are modified when pressing OK - [C216335]', async (done) => { + await dataTable.selectItem(folderNameToEdit); + await editButton.click(); + await editDialog.waitForDialogToOpen(); + await editDialog.enterDescription(folderDescriptionEdited); + await editDialog.enterName(folderNameEdited); + await editDialog.clickUpdate(); + await editDialog.waitForDialogToClose(); + await dataTable.waitForHeader(); + expect(await dataTable.getRowByName(folderNameEdited).isPresent()).toBe(true, 'Folder not displayed'); + const desc = await apis.user.nodes.getNodeDescription(folderNameEdited, parent); + expect(desc).toEqual(folderDescriptionEdited); + done(); + }); - it('with empty folder name - [C216332]', () => { - dataTable.selectItem(folderName) - .then(() => editButton.click()) - .then(() => editDialog.deleteNameWithBackspace()) - .then(() => { - expect(editDialog.updateButton.isEnabled()).toBe(false, 'upload button is not enabled'); - expect(editDialog.getValidationMessage()).toMatch('Folder name is required'); - }); - }); + it('with empty folder name - [C216332]', async () => { + await dataTable.selectItem(folderName); + await editButton.click(); + await editDialog.deleteNameWithBackspace(); + expect(await editDialog.updateButton.isEnabled()).toBe(false, 'upload button is not enabled'); + expect(await editDialog.getValidationMessage()).toMatch('Folder name is required'); + }); - it('with name with special characters - [C216333]', () => { - const namesWithSpecialChars = [ 'a*a', 'a"a', 'aa', `a\\a`, 'a/a', 'a?a', 'a:a', 'a|a' ]; + it('with name with special characters - [C216333]', async () => { + const namesWithSpecialChars = [ 'a*a', 'a"a', 'aa', `a\\a`, 'a/a', 'a?a', 'a:a', 'a|a' ]; - dataTable.selectItem(folderName) - .then(() => editButton.click()) - .then(() => namesWithSpecialChars.forEach(name => { - editDialog.enterName(name); + await dataTable.selectItem(folderName); + await editButton.click(); - expect(editDialog.updateButton.isEnabled()).toBe(false, 'upload button is not disabled'); - expect(editDialog.getValidationMessage()).toContain(`Folder name can't contain these characters`); - })); - }); + for (const name of namesWithSpecialChars) { + await editDialog.enterName(name); + expect(await editDialog.updateButton.isEnabled()).toBe(false, 'upload button is not disabled'); + expect(await editDialog.getValidationMessage()).toContain(`Folder name can't contain these characters`); + } + }); - it('with name ending with a dot - [C216334]', () => { - dataTable.selectItem(folderName) - .then(() => editButton.click()) - .then(() => editDialog.nameInput.sendKeys('.')) - .then(() => { - expect(editDialog.updateButton.isEnabled()).toBe(false, 'upload button is not enabled'); - expect(editDialog.getValidationMessage()).toMatch(`Folder name can't end with a period .`); - }); - }); + it('with name ending with a dot - [C216334]', async () => { + await dataTable.selectItem(folderName); + await editButton.click(); + await editDialog.waitForDialogToOpen(); + await editDialog.nameInput.sendKeys('.'); + expect(await editDialog.updateButton.isEnabled()).toBe(false, 'upload button is not enabled'); + expect(await editDialog.getValidationMessage()).toMatch(`Folder name can't end with a period .`); + }); - it('Cancel button - [C216336]', () => { - dataTable.selectItem(folderName) - .then(() => editButton.click()) - .then(() => editDialog.clickCancel()) - .then(() => { - expect(editDialog.component.isPresent()).not.toBe(true, 'dialog is not closed'); - }); - }); + it('Cancel button - [C216336]', async () => { + await dataTable.selectItem(folderName); + await editButton.click(); + await editDialog.waitForDialogToOpen(); + await editDialog.clickCancel(); + expect(await editDialog.component.isPresent()).not.toBe(true, 'dialog is not closed'); + }); - it('with duplicate folder name - [C216337]', () => { - dataTable.selectItem(folderName) - .then(() => editButton.click()) - .then(() => editDialog.enterName(duplicateFolderName)) - .then(() => editDialog.clickUpdate()) - .then(() => personalFilesPage.getSnackBarMessage()) - .then(message => { - expect(message).toEqual(`There's already a folder with this name. Try a different name.`); - expect(editDialog.component.isPresent()).toBe(true, 'dialog is not present'); - }); - }); + it('with duplicate folder name - [C216337]', async () => { + await dataTable.selectItem(folderName); + await editButton.click(); + await editDialog.waitForDialogToOpen(); + await editDialog.enterName(duplicateFolderName); + await editDialog.clickUpdate(); + const message = await personalFilesPage.getSnackBarMessage(); + expect(message).toEqual(`There's already a folder with this name. Try a different name.`); + expect(await editDialog.component.isPresent()).toBe(true, 'dialog is not present'); + }); - it('trim ending spaces - [C216338]', () => { - dataTable.selectItem(folderName) - .then(() => editButton.click()) - .then(() => editDialog.nameInput.sendKeys(' ')) - .then(() => editDialog.clickUpdate()) - .then(() => editDialog.waitForDialogToClose()) - .then(() => { - expect(personalFilesPage.snackBar.isPresent()).not.toBe(true, 'notification appears'); - expect(dataTable.getRowByName(folderName).isPresent()).toBe(true, 'Folder not displayed in list view'); - }); - }); + it('trim ending spaces - [C216338]', async () => { + await dataTable.selectItem(folderName); + await editButton.click(); + await editDialog.nameInput.sendKeys(' '); + await editDialog.clickUpdate(); + await editDialog.waitForDialogToClose(); + expect(await personalFilesPage.snackBar.isPresent()).not.toBe(true, 'notification appears'); + expect(await dataTable.getRowByName(folderName).isPresent()).toBe(true, 'Folder not displayed in list view'); + }); }); diff --git a/e2e/suites/actions/mark-favorite.test.ts b/e2e/suites/actions/mark-favorite.test.ts index 85b9ec140..c1b5ca28b 100644 --- a/e2e/suites/actions/mark-favorite.test.ts +++ b/e2e/suites/actions/mark-favorite.test.ts @@ -56,377 +56,357 @@ describe('Mark items as favorites', () => { const page = new BrowsingPage(); const { dataTable, toolbar } = page; - beforeAll(done => { - apis.admin.people.createUser({ username }) - .then(() => apis.user.nodes.createFile( file1NotFav ).then(resp => file1Id = resp.entry.id)) - .then(() => apis.user.nodes.createFile( file2NotFav ).then(resp => file2Id = resp.entry.id)) - .then(() => apis.user.nodes.createFile( file3Fav ).then(resp => file3Id = resp.entry.id)) - .then(() => apis.user.nodes.createFile( file4Fav ).then(resp => file4Id = resp.entry.id)) - .then(() => apis.user.nodes.createFolder( folder1 ).then(resp => folder1Id = resp.entry.id)) + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); + file1Id = (await apis.user.nodes.createFile(file1NotFav)).entry.id; + file2Id = (await apis.user.nodes.createFile(file2NotFav)).entry.id; + file3Id = (await apis.user.nodes.createFile(file3Fav)).entry.id; + file4Id = (await apis.user.nodes.createFile(file4Fav)).entry.id; + folder1Id = (await apis.user.nodes.createFolder(folder1)).entry.id; - .then(() => apis.user.favorites.addFavoriteById('file', file3Id)) - .then(() => apis.user.favorites.addFavoriteById('file', file4Id)) + await apis.user.favorites.addFavoriteById('file', file3Id); + await apis.user.favorites.addFavoriteById('file', file4Id); - .then(() => apis.user.search.waitForApi(username, { expect: 4 })) - .then(() => apis.user.favorites.waitForApi({ expect: 2 })) + await apis.user.search.waitForApi(username, { expect: 4 }); + await apis.user.favorites.waitForApi({ expect: 2 }); - .then(() => loginPage.loginWith(username)) - .then(done); + await loginPage.loginWith(username); + done(); }); - afterAll(done => { - Promise.all([ + afterAll(async (done) => { + await Promise.all([ apis.user.nodes.deleteNodesById([ file1Id, file2Id, file3Id, file4Id, folder1Id]), apis.user.sites.deleteSite(siteName), logoutPage.load() - ]) - .then(done); + ]); + done(); }); xit(''); describe('on Personal Files', () => { - beforeAll(done => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => dataTable.waitForHeader()) - .then(done); + beforeAll(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + done(); }); - beforeEach(done => { - toolbar.closeMoreMenu().then(done); + beforeEach(async (done) => { + await toolbar.closeMoreMenu(); + done(); }); - it('Favorite action has empty star icon for an item not marked as favorite - [C217186]', () => { - dataTable.selectItem(file1NotFav) - .then(() => toolbar.openMoreMenu()) - .then(() => expect(toolbar.menu.getItemIconText('Favorite')).toEqual('star_border')); + it('Favorite action has empty star icon for an item not marked as favorite - [C217186]', async () => { + await dataTable.selectItem(file1NotFav); + await toolbar.openMoreMenu(); + expect(await toolbar.menu.getItemIconText('Favorite')).toEqual('star_border'); }); - it('Favorite action has empty star icon for multiple selection of items when some are not favorite - [C217187]', () => { - dataTable.selectMultipleItems([ file1NotFav, file3Fav ]) - .then(() => toolbar.openMoreMenu()) - .then(() => expect(toolbar.menu.getItemIconText('Favorite')).toEqual('star_border')); + it('Favorite action has empty star icon for multiple selection of items when some are not favorite - [C217187]', async () => { + await dataTable.selectMultipleItems([ file1NotFav, file3Fav ]); + await toolbar.openMoreMenu(); + expect(await toolbar.menu.getItemIconText('Favorite')).toEqual('star_border'); }); - it('Favorite action has full star icon for items marked as favorite - [C217188]', () => { - dataTable.selectItem(file3Fav) - .then(() => toolbar.openMoreMenu()) - .then(() => expect(toolbar.menu.getItemIconText('Favorite')).toEqual('star')); + it('Favorite action has full star icon for items marked as favorite - [C217188]', async () => { + await dataTable.selectItem(file3Fav); + await toolbar.openMoreMenu(); + expect(await toolbar.menu.getItemIconText('Favorite')).toEqual('star'); }); - it('favorite a file - [C217189]', () => { - dataTable.selectItem(file1NotFav) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 3 })) - .then(() => apis.user.favorites.isFavorite(file1Id)) - .then(isFavorite => expect(isFavorite).toBe(true, `${file1NotFav} not marked as favorite`)) + it('favorite a file - [C217189]', async () => { + await dataTable.selectItem(file1NotFav); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 3 }); + const isFavorite = await apis.user.favorites.isFavorite(file1Id); + expect(isFavorite).toBe(true, `${file1NotFav} not marked as favorite`); - .then(() => apis.user.favorites.removeFavoriteById(file1Id)); + await apis.user.favorites.removeFavoriteById(file1Id); }); - it('favorite a folder - [C280390]', () => { - dataTable.selectItem(folder1) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 3 })) - .then(() => apis.user.favorites.isFavorite(folder1Id)) - .then(isFavorite => expect(isFavorite).toBe(true, `${folder1} not marked as favorite`)) + it('favorite a folder - [C280390]', async () => { + await dataTable.selectItem(folder1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 3 }); + const isFavorite = await apis.user.favorites.isFavorite(folder1Id); + expect(isFavorite).toBe(true, `${folder1} not marked as favorite`); - .then(() => apis.user.favorites.removeFavoriteById(folder1Id)); + await apis.user.favorites.removeFavoriteById(folder1Id); }); - it('unfavorite an item - [C217190]', () => { - dataTable.selectItem(file3Fav) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 1 })) - .then(() => apis.user.favorites.isFavorite(file3Id)) - .then(isFavorite => expect(isFavorite).toBe(false, `${file3Fav} is marked as favorite`)) + it('unfavorite an item - [C217190]', async () => { + await dataTable.selectItem(file3Fav); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 1 }); + const isFavorite = await apis.user.favorites.isFavorite(file3Id); + expect(isFavorite).toBe(false, `${file3Fav} is marked as favorite`); - .then(() => apis.user.favorites.addFavoriteById('file', file3Id)); + await apis.user.favorites.addFavoriteById('file', file3Id); }); - it('favorite multiple items - all unfavorite - [C217192]', () => { - dataTable.selectMultipleItems([ file1NotFav, file2NotFav ]) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 4 })) - .then(() => Promise.all([ - apis.user.favorites.isFavorite(file1Id), - apis.user.favorites.isFavorite(file2Id) - ])) - .then(resp => { - expect(resp[0]).toBe(true, 'item not marked as favorite'); - expect(resp[1]).toBe(true, 'item not marked as favorite'); - }) + it('favorite multiple items - all unfavorite - [C217192]', async () => { + await dataTable.selectMultipleItems([ file1NotFav, file2NotFav ]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 4 }); + const resp = await Promise.all([ + apis.user.favorites.isFavorite(file1Id), + apis.user.favorites.isFavorite(file2Id) + ]); + expect(resp[0]).toBe(true, 'item not marked as favorite'); + expect(resp[1]).toBe(true, 'item not marked as favorite'); - .then(() => apis.user.favorites.removeFavoriteById(file1Id)) - .then(() => apis.user.favorites.removeFavoriteById(file2Id)); + await apis.user.favorites.removeFavoriteById(file1Id); + await apis.user.favorites.removeFavoriteById(file2Id); }); - it('favorite multiple items - some favorite and some unfavorite - [C217194]', () => { - dataTable.selectMultipleItems([ file1NotFav, file3Fav ]) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 3 })) - .then(() => Promise.all([ - apis.user.favorites.isFavorite(file1Id), - apis.user.favorites.isFavorite(file3Id) - ])) - .then(resp => { - expect(resp[0]).toBe(true, 'item not marked as favorite'); - expect(resp[1]).toBe(true, 'item not marked as favorite'); - }) + it('favorite multiple items - some favorite and some unfavorite - [C217194]', async () => { + await dataTable.selectMultipleItems([ file1NotFav, file3Fav ]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 3 }); + const resp = await Promise.all([ + apis.user.favorites.isFavorite(file1Id), + apis.user.favorites.isFavorite(file3Id) + ]); + expect(resp[0]).toBe(true, 'item not marked as favorite'); + expect(resp[1]).toBe(true, 'item not marked as favorite'); - .then(() => apis.user.favorites.removeFavoriteById(file1Id)); + await apis.user.favorites.removeFavoriteById(file1Id); }); - it('unfavorite multiple items - [C217193]', () => { - dataTable.selectMultipleItems([ file3Fav, file4Fav ]) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => browser.sleep(2000)) - .then(() => Promise.all([ - apis.user.favorites.isFavorite(file3Id), - apis.user.favorites.isFavorite(file4Id) - ])) - .then(resp => { - expect(resp[0]).toBe(false, 'item marked as favorite'); - expect(resp[1]).toBe(false, 'item marked as favorite'); - }) + it('unfavorite multiple items - [C217193]', async () => { + await dataTable.selectMultipleItems([ file3Fav, file4Fav ]) + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await browser.sleep(2000); + const resp = await Promise.all([ + apis.user.favorites.isFavorite(file3Id), + apis.user.favorites.isFavorite(file4Id) + ]); + expect(resp[0]).toBe(false, 'item marked as favorite'); + expect(resp[1]).toBe(false, 'item marked as favorite'); - .then(() => apis.user.favorites.addFavoriteById('file', file3Id)) - .then(() => apis.user.favorites.addFavoriteById('file', file4Id)); + await apis.user.favorites.addFavoriteById('file', file3Id); + await apis.user.favorites.addFavoriteById('file', file4Id); }); }); describe('on Recent Files', () => { - beforeAll(done => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES) - .then(() => dataTable.waitForHeader()) - .then(done); + beforeAll(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); + await dataTable.waitForHeader(); + done(); }); - beforeEach(done => { - toolbar.closeMoreMenu().then(done); + beforeEach(async (done) => { + await toolbar.closeMoreMenu(); + done(); }); - it('favorite a file - [C280352]', () => { - dataTable.selectItem(file1NotFav) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 3 })) - .then(() => apis.user.favorites.isFavorite(file1Id)) - .then(isFavorite => expect(isFavorite).toBe(true, `${file1NotFav} not marked as favorite`)) + it('favorite a file - [C280352]', async () => { + await dataTable.selectItem(file1NotFav); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 3 }); + const isFavorite = await apis.user.favorites.isFavorite(file1Id); + expect(isFavorite).toBe(true, `${file1NotFav} not marked as favorite`); - .then(() => apis.user.favorites.removeFavoriteById(file1Id)); + await apis.user.favorites.removeFavoriteById(file1Id); }); - it('unfavorite an item - [C280353]', () => { - dataTable.selectItem(file3Fav) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 1 })) - .then(() => apis.user.favorites.isFavorite(file3Id)) - .then(isFavorite => expect(isFavorite).toBe(false, `${file3Fav} is marked as favorite`)) + it('unfavorite an item - [C280353]', async () => { + await dataTable.selectItem(file3Fav); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 1 }); + const isFavorite = await apis.user.favorites.isFavorite(file3Id); + expect(isFavorite).toBe(false, `${file3Fav} is marked as favorite`); - .then(() => apis.user.favorites.addFavoriteById('file', file3Id)); + await apis.user.favorites.addFavoriteById('file', file3Id); }); - it('favorite multiple items - all unfavorite - [C280355]', () => { - dataTable.selectMultipleItems([ file1NotFav, file2NotFav ]) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 4 })) - .then(() => Promise.all([ - apis.user.favorites.isFavorite(file1Id), - apis.user.favorites.isFavorite(file2Id) - ])) - .then(resp => { - expect(resp[0]).toBe(true, 'item not marked as favorite'); - expect(resp[1]).toBe(true, 'item not marked as favorite'); - }) + it('favorite multiple items - all unfavorite - [C280355]', async () => { + await dataTable.selectMultipleItems([ file1NotFav, file2NotFav ]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 4 }); + const resp = await Promise.all([ + apis.user.favorites.isFavorite(file1Id), + apis.user.favorites.isFavorite(file2Id) + ]); + expect(resp[0]).toBe(true, 'item not marked as favorite'); + expect(resp[1]).toBe(true, 'item not marked as favorite'); - .then(() => apis.user.favorites.removeFavoriteById(file1Id)) - .then(() => apis.user.favorites.removeFavoriteById(file2Id)); + await apis.user.favorites.removeFavoriteById(file1Id); + await apis.user.favorites.removeFavoriteById(file2Id); }); - it('favorite multiple items - some favorite and some unfavorite - [C280357]', () => { - dataTable.selectMultipleItems([ file1NotFav, file3Fav ]) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 3 })) - .then(() => Promise.all([ - apis.user.favorites.isFavorite(file1Id), - apis.user.favorites.isFavorite(file3Id) - ])) - .then(resp => { - expect(resp[0]).toBe(true, 'item not marked as favorite'); - expect(resp[1]).toBe(true, 'item not marked as favorite'); - }) + it('favorite multiple items - some favorite and some unfavorite - [C280357]', async () => { + await dataTable.selectMultipleItems([ file1NotFav, file3Fav ]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 3 }); + const resp = await Promise.all([ + apis.user.favorites.isFavorite(file1Id), + apis.user.favorites.isFavorite(file3Id) + ]); + expect(resp[0]).toBe(true, 'item not marked as favorite'); + expect(resp[1]).toBe(true, 'item not marked as favorite'); - .then(() => apis.user.favorites.removeFavoriteById(file1Id)); + await apis.user.favorites.removeFavoriteById(file1Id); }); - it('unfavorite multiple items - [C280356]', () => { - dataTable.selectMultipleItems([ file3Fav, file4Fav ]) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => browser.sleep(2000)) - .then(() => Promise.all([ - apis.user.favorites.isFavorite(file3Id), - apis.user.favorites.isFavorite(file4Id) - ])) - .then(resp => { - expect(resp[0]).toBe(false, 'item marked as favorite'); - expect(resp[1]).toBe(false, 'item marked as favorite'); - }) + it('unfavorite multiple items - [C280356]', async () => { + await dataTable.selectMultipleItems([ file3Fav, file4Fav ]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await browser.sleep(2000); + const resp = await Promise.all([ + apis.user.favorites.isFavorite(file3Id), + apis.user.favorites.isFavorite(file4Id) + ]); + expect(resp[0]).toBe(false, 'item marked as favorite'); + expect(resp[1]).toBe(false, 'item marked as favorite'); - .then(() => apis.user.favorites.addFavoriteById('file', file3Id)) - .then(() => apis.user.favorites.addFavoriteById('file', file4Id)); + await apis.user.favorites.addFavoriteById('file', file3Id); + await apis.user.favorites.addFavoriteById('file', file4Id); }); }); describe('on Shared Files', () => { - beforeAll(done => { - apis.user.shared.shareFilesByIds([ file1Id, file2Id, file3Id, file4Id ]) - .then(() => apis.user.shared.waitForApi({ expect: 4 })) - .then(() => page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES)) - .then(() => dataTable.waitForHeader()) - .then(done); + beforeAll(async (done) => { + await apis.user.shared.shareFilesByIds([ file1Id, file2Id, file3Id, file4Id ]); + await apis.user.shared.waitForApi({ expect: 4 }); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); + await dataTable.waitForHeader(); + done(); }); - afterEach(done => { + afterEach(async (done) => { // browser.actions().sendKeys(protractor.Key.ESCAPE).perform().then(done); - browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform().then(done); + await browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform(); + done(); }); - it('favorite a file - [C280362]', () => { - dataTable.selectItem(file1NotFav) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 3 })) - .then(() => apis.user.favorites.isFavorite(file1Id)) - .then(isFavorite => expect(isFavorite).toBe(true, `${file1NotFav} not marked as favorite`)) + it('favorite a file - [C280362]', async () => { + await dataTable.selectItem(file1NotFav) + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 3 }); + const isFavorite = await apis.user.favorites.isFavorite(file1Id); + expect(isFavorite).toBe(true, `${file1NotFav} not marked as favorite`); - .then(() => apis.user.favorites.removeFavoriteById(file1Id)); + await apis.user.favorites.removeFavoriteById(file1Id); }); - it('unfavorite an item - [C280363]', () => { - dataTable.selectItem(file3Fav) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 1 })) - .then(() => apis.user.favorites.isFavorite(file3Id)) - .then(isFavorite => expect(isFavorite).toBe(false, `${file3Fav} is marked as favorite`)) + it('unfavorite an item - [C280363]', async () => { + await dataTable.selectItem(file3Fav); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 1 }); + const isFavorite = await apis.user.favorites.isFavorite(file3Id); + expect(isFavorite).toBe(false, `${file3Fav} is marked as favorite`); - .then(() => apis.user.favorites.addFavoriteById('file', file3Id)); + await apis.user.favorites.addFavoriteById('file', file3Id); }); - it('favorite multiple items - all unfavorite - [C280365]', () => { - dataTable.selectMultipleItems([ file1NotFav, file2NotFav ]) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 4 })) - .then(() => Promise.all([ - apis.user.favorites.isFavorite(file1Id), - apis.user.favorites.isFavorite(file2Id) - ])) - .then(resp => { - expect(resp[0]).toBe(true, 'item not marked as favorite'); - expect(resp[1]).toBe(true, 'item not marked as favorite'); - }) + it('favorite multiple items - all unfavorite - [C280365]', async () => { + await dataTable.selectMultipleItems([ file1NotFav, file2NotFav ]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 4 }); + const resp = await Promise.all([ + apis.user.favorites.isFavorite(file1Id), + apis.user.favorites.isFavorite(file2Id) + ]); + expect(resp[0]).toBe(true, 'item not marked as favorite'); + expect(resp[1]).toBe(true, 'item not marked as favorite'); - .then(() => apis.user.favorites.removeFavoriteById(file1Id)) - .then(() => apis.user.favorites.removeFavoriteById(file2Id)); + await apis.user.favorites.removeFavoriteById(file1Id); + await apis.user.favorites.removeFavoriteById(file2Id); }); - it('favorite multiple items - some favorite and some unfavorite - [C280367]', () => { - dataTable.selectMultipleItems([ file1NotFav, file3Fav ]) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 3 })) - .then(() => Promise.all([ + it('favorite multiple items - some favorite and some unfavorite - [C280367]', async () => { + await dataTable.selectMultipleItems([ file1NotFav, file3Fav ]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 3 }); + const resp = await Promise.all([ apis.user.favorites.isFavorite(file1Id), apis.user.favorites.isFavorite(file3Id) - ])) - .then(resp => { - expect(resp[0]).toBe(true, 'item not marked as favorite'); - expect(resp[1]).toBe(true, 'item not marked as favorite'); - }) + ]); + expect(resp[0]).toBe(true, 'item not marked as favorite'); + expect(resp[1]).toBe(true, 'item not marked as favorite'); - .then(() => apis.user.favorites.removeFavoriteById(file1Id)); + await apis.user.favorites.removeFavoriteById(file1Id); }); - it('unfavorite multiple items - [C280366]', () => { - dataTable.selectMultipleItems([ file3Fav, file4Fav ]) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => browser.sleep(2000)) - .then(() => Promise.all([ - apis.user.favorites.isFavorite(file3Id), - apis.user.favorites.isFavorite(file4Id) - ])) - .then(resp => { - expect(resp[0]).toBe(false, 'item marked as favorite'); - expect(resp[1]).toBe(false, 'item marked as favorite'); - }) + it('unfavorite multiple items - [C280366]', async () => { + await dataTable.selectMultipleItems([ file3Fav, file4Fav ]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await browser.sleep(2000); + const resp = await Promise.all([ + apis.user.favorites.isFavorite(file3Id), + apis.user.favorites.isFavorite(file4Id) + ]); + expect(resp[0]).toBe(false, 'item marked as favorite'); + expect(resp[1]).toBe(false, 'item marked as favorite'); - .then(() => apis.user.favorites.addFavoriteById('file', file3Id)) - .then(() => apis.user.favorites.addFavoriteById('file', file4Id)); + await apis.user.favorites.addFavoriteById('file', file3Id); + await apis.user.favorites.addFavoriteById('file', file4Id); }); }); describe('on Favorites', () => { - beforeAll(done => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES) - .then(() => dataTable.waitForHeader()) - .then(done); + beforeAll(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); + await dataTable.waitForHeader(); + done(); }); - afterEach(done => { - page.refresh().then(done); + afterEach(async (done) => { + await page.refresh(); + done(); }); - it('unfavorite an item - [C280368]', () => { - dataTable.selectItem(file3Fav) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => apis.user.favorites.waitForApi({ expect: 1 })) - .then(() => apis.user.favorites.isFavorite(file3Id)) - .then(isFavorite => { - expect(isFavorite).toBe(false, 'item is marked as favorite'); - expect(dataTable.getRowByName(file3Fav).isPresent()).toBe(false, 'item still displayed'); - }) + it('unfavorite an item - [C280368]', async () => { + await dataTable.selectItem(file3Fav); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await apis.user.favorites.waitForApi({ expect: 1 }); + const isFavorite = await apis.user.favorites.isFavorite(file3Id); + expect(isFavorite).toBe(false, 'item is marked as favorite'); + expect(await dataTable.getRowByName(file3Fav).isPresent()).toBe(false, 'item still displayed'); - .then(() => apis.user.favorites.addFavoriteById('file', file3Id)); + await apis.user.favorites.addFavoriteById('file', file3Id); }); - it('unfavorite multiple items - [C280374]', () => { - dataTable.selectMultipleItems([ file3Fav, file4Fav ]) - .then(() => toolbar.openMoreMenu()) - .then(() => toolbar.menu.clickMenuItem('Favorite')) - .then(() => browser.sleep(2000)) - .then(() => apis.user.favorites.isFavorite(file3Id)) - .then(resp => { - expect(resp).toBe(false, 'file3 marked as favorite'); - expect(dataTable.getRowByName(file3Fav).isPresent()).toBe(false, 'file3 still displayed'); - }) - .then(() => apis.user.favorites.isFavorite(file4Id)) - .then(resp => { - expect(resp).toBe(false, 'file4 marked as favorite'); - expect(dataTable.getRowByName(file4Fav).isPresent()).toBe(false, 'file4 still displayed'); - }) + it('unfavorite multiple items - [C280374]', async () => { + await dataTable.selectMultipleItems([ file3Fav, file4Fav ]); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + await browser.sleep(2000); + const isFavorite3 = await apis.user.favorites.isFavorite(file3Id); + expect(isFavorite3).toBe(false, 'file3 marked as favorite'); + expect(await dataTable.getRowByName(file3Fav).isPresent()).toBe(false, 'file3 still displayed'); + const isFavorite4 = await apis.user.favorites.isFavorite(file4Id); + expect(isFavorite4).toBe(false, 'file4 marked as favorite'); + expect(await dataTable.getRowByName(file4Fav).isPresent()).toBe(false, 'file4 still displayed'); - .then(() => apis.user.favorites.addFavoriteById('file', file3Id)) - .then(() => apis.user.favorites.addFavoriteById('file', file4Id)); + await apis.user.favorites.addFavoriteById('file', file3Id); + await apis.user.favorites.addFavoriteById('file', file4Id); }); - it('Favorite action has full star icon for items marked as favorite - [C280371]', () => { - dataTable.selectItem(file3Fav) - .then(() => toolbar.openMoreMenu()) - .then(() => expect(toolbar.menu.getItemIconText('Favorite')).toEqual('star')); + it('Favorite action has full star icon for items marked as favorite - [C280371]', async () => { + await dataTable.selectItem(file3Fav); + await toolbar.openMoreMenu(); + expect(await toolbar.menu.getItemIconText('Favorite')).toEqual('star'); }); }); @@ -435,7 +415,7 @@ describe('Mark items as favorites', () => { beforeAll(async (done) => { await apis.user.sites.createSite(siteName, SITE_VISIBILITY.PUBLIC); - const docLibId = (await apis.user.sites.getDocLibId(siteName)); + const docLibId = await apis.user.sites.getDocLibId(siteName); folderSiteId = (await apis.user.nodes.createFolder(folderSite, docLibId)).entry.id; fileSiteNotFav1Id = (await apis.user.nodes.createFile(fileSiteNotFav1, folderSiteId)).entry.id; fileSiteFav1Id = (await apis.user.nodes.createFile(fileSiteFav1, folderSiteId)).entry.id; @@ -501,7 +481,7 @@ describe('Mark items as favorites', () => { const listItems1 = await Promise.all([ apis.user.favorites.isFavorite(fileSiteNotFav1Id), apis.user.favorites.isFavorite(fileSiteNotFav2Id) - ]); + ]); expect(listItems1[0]).toBe(true, 'item not marked as favorite'); expect(listItems1[1]).toBe(true, 'item not marked as favorite'); await apis.user.favorites.removeFavoriteById(fileSiteNotFav1Id); @@ -516,7 +496,7 @@ describe('Mark items as favorites', () => { const listItems2 = await Promise.all([ apis.user.favorites.isFavorite(fileSiteFav1Id), apis.user.favorites.isFavorite(fileSiteFav2Id) - ]); + ]); expect(listItems2[0]).toBe(false, 'item marked as favorite'); expect(listItems2[1]).toBe(false, 'item marked as favorite'); await apis.user.favorites.addFavoriteById('file', fileSiteFav1Id); @@ -532,7 +512,7 @@ describe('Mark items as favorites', () => { const listItems3 = await Promise.all([ apis.user.favorites.isFavorite(fileSiteNotFav1Id), apis.user.favorites.isFavorite(fileSiteFav1) - ]); + ]); expect(listItems3[0]).toBe(true, 'item not marked as favorite'); expect(listItems3[1]).toBe(true, 'item not marked as favorite'); await apis.user.favorites.removeFavoriteById(fileSiteNotFav1Id); diff --git a/e2e/suites/actions/permanently-delete.test.ts b/e2e/suites/actions/permanently-delete.test.ts index f3e740e24..520a0d7bd 100755 --- a/e2e/suites/actions/permanently-delete.test.ts +++ b/e2e/suites/actions/permanently-delete.test.ts @@ -88,7 +88,7 @@ describe('Permanently delete from Trash', () => { const text = await trashPage.getSnackBarMessage(); expect(text).toEqual(`${file1} deleted`); - expect(dataTable.getRowByName(file1).isPresent()).toBe(false, 'Item was not deleted'); + expect(await dataTable.getRowByName(file1).isPresent()).toBe(false, 'Item was not deleted'); }); it('delete folder - [C280416]', async () => { @@ -100,7 +100,7 @@ describe('Permanently delete from Trash', () => { const text = await trashPage.getSnackBarMessage(); expect(text).toEqual(`${folder1} deleted`); - expect(dataTable.getRowByName(folder1).isPresent()).toBe(false, 'Item was not deleted'); + expect(await dataTable.getRowByName(folder1).isPresent()).toBe(false, 'Item was not deleted'); }); it('delete multiple items - [C280417]', async () => { @@ -112,8 +112,8 @@ describe('Permanently delete from Trash', () => { const text = await trashPage.getSnackBarMessage(); expect(text).toEqual(`2 items deleted`); - expect(dataTable.getRowByName(file2).isPresent()).toBe(false, 'Item was not deleted'); - expect(dataTable.getRowByName(folder2).isPresent()).toBe(false, 'Item was not deleted'); + expect(await dataTable.getRowByName(file2).isPresent()).toBe(false, 'Item was not deleted'); + expect(await dataTable.getRowByName(folder2).isPresent()).toBe(false, 'Item was not deleted'); }); it('Confirmation dialog UI - [C269113]', async () => { @@ -137,6 +137,6 @@ describe('Permanently delete from Trash', () => { expect(await confirmDialog.keepButton.isEnabled()).toBe(true, 'KEEP button is not enabled'); await confirmDialog.clickKeep(); - expect(dataTable.getRowByName(file3).isPresent()).toBe(true, 'Item was deleted'); + expect(await dataTable.getRowByName(file3).isPresent()).toBe(true, 'Item was deleted'); }); }); diff --git a/e2e/suites/actions/restore.test.ts b/e2e/suites/actions/restore.test.ts index 5625a5d56..609277564 100755 --- a/e2e/suites/actions/restore.test.ts +++ b/e2e/suites/actions/restore.test.ts @@ -42,15 +42,18 @@ describe('Restore from Trash', () => { const page = new BrowsingPage(); const { dataTable, toolbar } = page; - beforeAll(done => { - apis.admin.people - .createUser({ username }) - .then(() => loginPage.loginWith(username)) - .then(done); + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); + await loginPage.loginWith(username); + done(); }); - afterAll(done => { - Promise.all([apis.admin.trashcan.emptyTrash(), logoutPage.load()]).then(done); + afterAll(async (done) => { + await Promise.all([ + apis.admin.trashcan.emptyTrash(), + logoutPage.load() + ]); + done(); }); xit(''); @@ -61,97 +64,77 @@ describe('Restore from Trash', () => { const folder = `folder-${Utils.random()}`; let folderId; - beforeAll(done => { - apis.user.nodes - .createFile(file) - .then(resp => (fileId = resp.entry.id)) - .then(() => apis.user.nodes.createFolder(folder).then(resp => (folderId = resp.entry.id))) - .then(() => apis.user.nodes.deleteNodesById([fileId, folderId], false)) - .then(done); + beforeAll(async (done) => { + fileId = (await apis.user.nodes.createFile(file)).entry.id; + folderId = (await apis.user.nodes.createFolder(folder)).entry.id; + await apis.user.nodes.deleteNodesById([fileId, folderId], false); + done(); }); - beforeEach(done => { - page.sidenav - .navigateToLinkByLabel(SIDEBAR_LABELS.TRASH) - .then(() => dataTable.waitForHeader()) - .then(done); + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + await dataTable.waitForHeader(); + done(); }); - afterAll(done => { - apis.user.trashcan.emptyTrash().then(done); + afterAll(async (done) => { + await apis.user.trashcan.emptyTrash(); + done(); }); - it('restore file - [C217177]', () => { - dataTable - .selectItem(file) - .then(() => toolbar.getButtonByTitleAttribute('Restore').click()) - .then(() => page.getSnackBarMessage()) - .then(text => { - expect(text).toContain(`${file} restored`); - expect(text).toContain(`View`); - expect(dataTable.getRowByName(file).isPresent()).toBe(false, 'Item was not removed from list'); - }) - .then(() => page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES)) - .then(() => page.dataTable.waitForHeader()) - .then(() => { - expect(page.dataTable.getRowByName(file).isPresent()).toBe(true, 'Item not displayed in list'); - }) + it('restore file - [C217177]', async () => { + await dataTable.selectItem(file); + await toolbar.getButtonByTitleAttribute('Restore').click(); + const text = await page.getSnackBarMessage(); + expect(text).toContain(`${file} restored`); + expect(text).toContain(`View`); + expect(await dataTable.getRowByName(file).isPresent()).toBe(false, 'Item was not removed from list'); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await page.dataTable.waitForHeader(); + expect(await page.dataTable.getRowByName(file).isPresent()).toBe(true, 'Item not displayed in list'); - .then(() => apis.user.nodes.deleteNodeById(fileId, false)); + await apis.user.nodes.deleteNodeById(fileId, false); }); - it('restore folder - [C280438]', () => { - dataTable - .selectItem(folder) - .then(() => toolbar.getButtonByTitleAttribute('Restore').click()) - .then(() => page.getSnackBarMessage()) - .then(text => { - expect(text).toContain(`${folder} restored`); - expect(text).toContain(`View`); - expect(dataTable.getRowByName(folder).isPresent()).toBe(false, 'Item was not removed from list'); - }) - .then(() => page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES)) - .then(() => page.dataTable.waitForHeader()) - .then(() => { - expect(page.dataTable.getRowByName(folder).isPresent()).toBe(true, 'Item not displayed in list'); - }) + it('restore folder - [C280438]', async () => { + await dataTable.selectItem(folder); + await toolbar.getButtonByTitleAttribute('Restore').click(); + const text = await page.getSnackBarMessage(); + expect(text).toContain(`${folder} restored`); + expect(text).toContain(`View`); + expect(await dataTable.getRowByName(folder).isPresent()).toBe(false, 'Item was not removed from list'); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await page.dataTable.waitForHeader(); + expect(await page.dataTable.getRowByName(folder).isPresent()).toBe(true, 'Item not displayed in list'); - .then(() => apis.user.nodes.deleteNodeById(folderId, false)); + await apis.user.nodes.deleteNodeById(folderId, false); }); - it('restore multiple items - [C217182]', () => { - dataTable - .selectMultipleItems([file, folder]) - .then(() => toolbar.getButtonByTitleAttribute('Restore').click()) - .then(() => page.getSnackBarMessage()) - .then(text => { - expect(text).toContain(`Restore successful`); - expect(text).not.toContain(`View`); - expect(dataTable.getRowByName(file).isPresent()).toBe(false, 'Item was not removed from list'); - expect(dataTable.getRowByName(folder).isPresent()).toBe(false, 'Item was not removed from list'); - }) - .then(() => page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES)) - .then(() => page.dataTable.waitForHeader()) - .then(() => { - expect(page.dataTable.getRowByName(file).isPresent()).toBe(true, 'Item not displayed in list'); - expect(page.dataTable.getRowByName(folder).isPresent()).toBe(true, 'Item not displayed in list'); - }) + it('restore multiple items - [C217182]', async () => { + await dataTable.selectMultipleItems([file, folder]); + await toolbar.getButtonByTitleAttribute('Restore').click(); + const text = await page.getSnackBarMessage(); + expect(text).toContain(`Restore successful`); + expect(text).not.toContain(`View`); + expect(await dataTable.getRowByName(file).isPresent()).toBe(false, 'Item was not removed from list'); + expect(await dataTable.getRowByName(folder).isPresent()).toBe(false, 'Item was not removed from list'); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await page.dataTable.waitForHeader(); + expect(await page.dataTable.getRowByName(file).isPresent()).toBe(true, 'Item not displayed in list'); + expect(await page.dataTable.getRowByName(folder).isPresent()).toBe(true, 'Item not displayed in list'); - .then(() => apis.user.nodes.deleteNodesById([fileId, folderId], false)); + await apis.user.nodes.deleteNodesById([fileId, folderId], false); }); - it('View from notification - [C217181]', () => { - dataTable - .selectItem(file) - .then(() => toolbar.getButtonByTitleAttribute('Restore').click()) - .then(() => page.clickSnackBarAction()) - .then(() => page.dataTable.waitForHeader()) - .then(() => { - expect(page.sidenav.isActiveByLabel('Personal Files')).toBe(true, 'Personal Files sidebar link not active'); - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); - }) + it('View from notification - [C217181]', async () => { + await dataTable.selectItem(file); + await toolbar.getButtonByTitleAttribute('Restore').click(); + await page.clickSnackBarAction(); + await page.dataTable.waitForHeader(); + expect(await page.sidenav.isActiveByLabel('Personal Files')).toBe(true, 'Personal Files sidebar link not active'); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); - .then(() => apis.user.nodes.deleteNodeById(fileId, false)); + await apis.user.nodes.deleteNodeById(fileId, false); }); }); @@ -166,49 +149,48 @@ describe('Restore from Trash', () => { const folder2 = `folder-${Utils.random()}`; let folder2Id; - beforeAll(done => { - apis.user.nodes - .createFolder(folder1) - .then(resp => (folder1Id = resp.entry.id)) - .then(() => apis.user.nodes.createFile(file1, folder1Id).then(resp => (file1Id1 = resp.entry.id))) - .then(() => apis.user.nodes.deleteNodeById(file1Id1, false)) - .then(() => apis.user.nodes.createFile(file1, folder1Id).then(resp => (file1Id2 = resp.entry.id))) + beforeAll(async (done) => { + folder1Id = (await apis.user.nodes.createFolder(folder1)).entry.id; + file1Id1 = (await apis.user.nodes.createFile(file1, folder1Id)).entry.id; + await apis.user.nodes.deleteNodeById(file1Id1, false); + file1Id2 = (await apis.user.nodes.createFile(file1, folder1Id)).entry.id; - .then(() => apis.user.nodes.createFolder(folder2).then(resp => (folder2Id = resp.entry.id))) - .then(() => apis.user.nodes.createFile(file2, folder2Id).then(resp => (file2Id = resp.entry.id))) - .then(() => apis.user.nodes.deleteNodeById(file2Id, false)) - .then(() => apis.user.nodes.deleteNodeById(folder2Id, false)) + folder2Id = (await apis.user.nodes.createFolder(folder2)).entry.id; + file2Id = (await apis.user.nodes.createFile(file2, folder2Id)).entry.id; + await apis.user.nodes.deleteNodeById(file2Id, false); + await apis.user.nodes.deleteNodeById(folder2Id, false); - .then(done); + done(); }); - beforeEach(done => { - page.sidenav - .navigateToLinkByLabel(SIDEBAR_LABELS.TRASH) - .then(() => dataTable.waitForHeader()) - .then(done); + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + await dataTable.waitForHeader(); + done(); }); - afterAll(done => { - Promise.all([apis.user.nodes.deleteNodeById(file1Id2), apis.user.trashcan.emptyTrash()]).then(done); + afterAll(async (done) => { + await Promise.all([ + apis.user.nodes.deleteNodeById(file1Id2), + apis.user.trashcan.emptyTrash() + ]); + done(); }); - it('Restore a file when another file with same name exists on the restore location - [C217178]', () => { - page.sidenav - .navigateToLinkByLabel(SIDEBAR_LABELS.TRASH) - .then(() => dataTable.selectItem(file1)) - .then(() => toolbar.getButtonByTitleAttribute('Restore').click()) - .then(() => page.getSnackBarMessage()) - .then(text => expect(text).toEqual(`Can't restore, ${file1} already exists`)); + it('Restore a file when another file with same name exists on the restore location - [C217178]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + await dataTable.selectItem(file1); + await toolbar.getButtonByTitleAttribute('Restore').click(); + const text = await page.getSnackBarMessage(); + expect(text).toEqual(`Can't restore, ${file1} already exists`); }); - it('Restore a file when original location no longer exists - [C217179]', () => { - page.sidenav - .navigateToLinkByLabel(SIDEBAR_LABELS.TRASH) - .then(() => dataTable.selectItem(file2)) - .then(() => toolbar.getButtonByTitleAttribute('Restore').click()) - .then(() => page.getSnackBarMessage()) - .then(text => expect(text).toEqual(`Can't restore ${file2}, the original location no longer exists`)); + it('Restore a file when original location no longer exists - [C217179]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + await dataTable.selectItem(file2); + await toolbar.getButtonByTitleAttribute('Restore').click(); + const text = await page.getSnackBarMessage(); + expect(text).toEqual(`Can't restore ${file2}, the original location no longer exists`); }); }); @@ -233,56 +215,55 @@ describe('Restore from Trash', () => { const file5 = `file5-${Utils.random()}.txt`; let file5Id; - beforeAll(done => { - apis.user.nodes - .createFolder(folder1) - .then(resp => (folder1Id = resp.entry.id)) - .then(() => apis.user.nodes.createFile(file1, folder1Id).then(resp => (file1Id = resp.entry.id))) - .then(() => apis.user.nodes.createFolder(folder2).then(resp => (folder2Id = resp.entry.id))) - .then(() => apis.user.nodes.createFile(file2, folder2Id).then(resp => (file2Id = resp.entry.id))) - .then(() => apis.user.nodes.deleteNodeById(file1Id, false)) - .then(() => apis.user.nodes.deleteNodeById(folder1Id, false)) - .then(() => apis.user.nodes.deleteNodeById(file2Id, false)) + beforeAll(async (done) => { + folder1Id = (await apis.user.nodes.createFolder(folder1)).entry.id; + file1Id = (await apis.user.nodes.createFile(file1, folder1Id)).entry.id; + folder2Id = (await apis.user.nodes.createFolder(folder2)).entry.id; + file2Id = (await apis.user.nodes.createFile(file2, folder2Id)).entry.id; + await apis.user.nodes.deleteNodeById(file1Id, false); + await apis.user.nodes.deleteNodeById(folder1Id, false); + await apis.user.nodes.deleteNodeById(file2Id, false); - .then(() => apis.user.nodes.createFolder(folder3).then(resp => (folder3Id = resp.entry.id))) - .then(() => apis.user.nodes.createFile(file3, folder3Id).then(resp => (file3Id = resp.entry.id))) - .then(() => apis.user.nodes.createFile(file4, folder3Id).then(resp => (file4Id = resp.entry.id))) - .then(() => apis.user.nodes.createFolder(folder4).then(resp => (folder4Id = resp.entry.id))) - .then(() => apis.user.nodes.createFile(file5, folder4Id).then(resp => (file5Id = resp.entry.id))) - .then(() => apis.user.nodes.deleteNodeById(file3Id, false)) - .then(() => apis.user.nodes.deleteNodeById(file4Id, false)) - .then(() => apis.user.nodes.deleteNodeById(folder3Id, false)) - .then(() => apis.user.nodes.deleteNodeById(file5Id, false)) + folder3Id = (await apis.user.nodes.createFolder(folder3)).entry.id; + file3Id = (await apis.user.nodes.createFile(file3, folder3Id)).entry.id; + file4Id = (await apis.user.nodes.createFile(file4, folder3Id)).entry.id; + folder4Id = (await apis.user.nodes.createFolder(folder4)).entry.id; + file5Id = (await apis.user.nodes.createFile(file5, folder4Id)).entry.id; + await apis.user.nodes.deleteNodeById(file3Id, false); + await apis.user.nodes.deleteNodeById(file4Id, false); + await apis.user.nodes.deleteNodeById(folder3Id, false); + await apis.user.nodes.deleteNodeById(file5Id, false); - .then(() => loginPage.loginWith(username)) - .then(done); + await loginPage.loginWith(username); + done(); }); - beforeEach(done => { - page.sidenav - .navigateToLinkByLabel(SIDEBAR_LABELS.TRASH) - .then(() => dataTable.waitForHeader()) - .then(done); + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + await dataTable.waitForHeader(); + done(); }); - afterAll(done => { - Promise.all([apis.user.trashcan.emptyTrash(), logoutPage.load()]).then(done); + afterAll(async (done) => { + await Promise.all([ + apis.user.trashcan.emptyTrash(), + logoutPage.load() + ]); + done(); }); - it('one failure - [C217183]', () => { - dataTable - .selectMultipleItems([file1, file2]) - .then(() => toolbar.getButtonByTitleAttribute('Restore').click()) - .then(() => page.getSnackBarMessage()) - .then(text => expect(text).toEqual(`Can't restore ${file1}, the original location no longer exists`)); + it('one failure - [C217183]', async () => { + await dataTable.selectMultipleItems([file1, file2]); + await toolbar.getButtonByTitleAttribute('Restore').click(); + const text = await page.getSnackBarMessage(); + expect(text).toEqual(`Can't restore ${file1}, the original location no longer exists`); }); - it('multiple failures - [C217184]', () => { - dataTable - .selectMultipleItems([file3, file4, file5]) - .then(() => toolbar.getButtonByTitleAttribute('Restore').click()) - .then(() => page.getSnackBarMessage()) - .then(text => expect(text).toEqual('2 items not restored because of issues with the restore location')); + it('multiple failures - [C217184]', async () => { + await dataTable.selectMultipleItems([file3, file4, file5]); + await toolbar.getButtonByTitleAttribute('Restore').click(); + const text = await page.getSnackBarMessage(); + expect(text).toEqual('2 items not restored because of issues with the restore location'); }); }); }); diff --git a/e2e/suites/actions/single-click.test.ts b/e2e/suites/actions/single-click.test.ts index c4ac46ace..6098b63f4 100755 --- a/e2e/suites/actions/single-click.test.ts +++ b/e2e/suites/actions/single-click.test.ts @@ -31,181 +31,181 @@ import { RepoClient } from '../../utilities/repo-client/repo-client'; import { Utils } from '../../utilities/utils'; describe('Single click on item name', () => { - const username = `user-${Utils.random()}`; + const username = `user-${Utils.random()}`; - const file1 = `file1-${Utils.random()}.txt`; let file1Id; - const folder1 = `folder1-${Utils.random()}`; let folder1Id; + const file1 = `file1-${Utils.random()}.txt`; let file1Id; + const folder1 = `folder1-${Utils.random()}`; let folder1Id; - const deletedFile1 = `file1-${Utils.random()}.txt`; let deletedFile1Id; - const deletedFolder1 = `folder1-${Utils.random()}`; let deletedFolder1Id; + const deletedFile1 = `file1-${Utils.random()}.txt`; let deletedFile1Id; + const deletedFolder1 = `folder1-${Utils.random()}`; let deletedFolder1Id; - const siteName = `site-${Utils.random()}`; - const fileSite = `fileSite-${Utils.random()}.txt`; + const siteName = `site-${Utils.random()}`; + const fileSite = `fileSite-${Utils.random()}.txt`; - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; + const apis = { + admin: new RepoClient(), + user: new RepoClient(username, username) + }; - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const page = new BrowsingPage(); - const { dataTable, breadcrumb } = page; - const viewer = new Viewer(); + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const page = new BrowsingPage(); + const { dataTable, breadcrumb } = page; + const viewer = new Viewer(); - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); - file1Id = (await apis.user.nodes.createFile(file1)).entry.id; - folder1Id = (await apis.user.nodes.createFolder(folder1)).entry.id; + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); + file1Id = (await apis.user.nodes.createFile(file1)).entry.id; + folder1Id = (await apis.user.nodes.createFolder(folder1)).entry.id; - deletedFile1Id = (await apis.user.nodes.createFile(deletedFile1)).entry.id; - deletedFolder1Id = (await apis.user.nodes.createFolder(deletedFolder1)).entry.id; - await apis.user.nodes.deleteNodeById(deletedFile1Id, false); - await apis.user.nodes.deleteNodeById(deletedFolder1Id, false); + deletedFile1Id = (await apis.user.nodes.createFile(deletedFile1)).entry.id; + deletedFolder1Id = (await apis.user.nodes.createFolder(deletedFolder1)).entry.id; + await apis.user.nodes.deleteNodeById(deletedFile1Id, false); + await apis.user.nodes.deleteNodeById(deletedFolder1Id, false); - await apis.user.sites.createSite(siteName); - const docLibId = (await apis.user.sites.getDocLibId(siteName)); - await apis.user.nodes.createFile(fileSite, docLibId); + await apis.user.sites.createSite(siteName); + const docLibId = (await apis.user.sites.getDocLibId(siteName)); + await apis.user.nodes.createFile(fileSite, docLibId); - await apis.user.shared.shareFileById(file1Id); - await apis.user.shared.waitForApi({ expect: 1 }); + await apis.user.shared.shareFileById(file1Id); + await apis.user.shared.waitForApi({ expect: 1 }); - await apis.user.favorites.addFavoriteById('file', file1Id); - await apis.user.favorites.addFavoriteById('folder', folder1Id); - await apis.user.favorites.waitForApi({ expect: 2 }); + await apis.user.favorites.addFavoriteById('file', file1Id); + await apis.user.favorites.addFavoriteById('folder', folder1Id); + await apis.user.favorites.waitForApi({ expect: 2 }); - await loginPage.loginWith(username); - done(); + await loginPage.loginWith(username); + done(); + }); + + afterAll(async (done) => { + await Promise.all([ + apis.user.sites.deleteSite(siteName), + apis.user.nodes.deleteNodeById(folder1Id), + apis.user.nodes.deleteNodeById(file1Id), + apis.user.trashcan.emptyTrash(), + logoutPage.load() + ]); + done(); + }); + + it('Hyperlink does not appear for items in the Trash - [C284899]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + await dataTable.waitForHeader(); + + expect(await dataTable.hasLinkOnName(deletedFile1)).toBe(false, 'Link on name is present'); + expect(await dataTable.hasLinkOnName(deletedFolder1)).toBe(false, 'Link on name is present'); + }); + + describe('on Personal Files', () => { + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + done(); }); - afterAll(async (done) => { - await Promise.all([ - apis.user.sites.deleteSite(siteName), - apis.user.nodes.deleteNodeById(folder1Id), - apis.user.nodes.deleteNodeById(file1Id), - apis.user.trashcan.emptyTrash(), - logoutPage.load() - ]); - done(); + it('Hyperlink appears when mouse over a file/folder - [C280032]', async () => { + expect(await dataTable.hasLinkOnName(file1)).toBe(true, 'Link on name is missing'); }); - it('Hyperlink does not appear for items in the Trash - [C284899]', async () => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - await dataTable.waitForHeader(); + it('File preview opens when clicking the hyperlink - [C280033]', async () => { + await dataTable.clickNameLink(file1); - expect(await dataTable.hasLinkOnName(deletedFile1)).toBe(false, 'Link on name is present'); - expect(await dataTable.hasLinkOnName(deletedFolder1)).toBe(false, 'Link on name is present'); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); }); - describe('on Personal Files', () => { - beforeEach(async (done) => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); - await dataTable.waitForHeader(); - done(); - }); + it('Navigate inside the folder when clicking the hyperlink - [C280034]', async () => { + await dataTable.clickNameLink(folder1); - it('Hyperlink appears when mouse over a file/folder - [C280032]', async () => { - expect(await dataTable.hasLinkOnName(file1)).toBe(true, 'Link on name is missing'); - }); + expect(await breadcrumb.getCurrentItemName()).toBe(folder1); + }); + }); - it('File preview opens when clicking the hyperlink - [C280033]', async () => { - await dataTable.clickNameLink(file1); - - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); - - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - }); - - it('Navigate inside the folder when clicking the hyperlink - [C280034]', async () => { - await dataTable.clickNameLink(folder1); - - expect(await breadcrumb.getCurrentItemName()).toBe(folder1); - }); + describe('on File Libraries', () => { + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); + await dataTable.waitForHeader(); + done(); }); - describe('on File Libraries', () => { - beforeEach(async (done) => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); - await dataTable.waitForHeader(); - done(); - }); - - it('Hyperlink appears when mouse over a library - [C284901]', async () => { - expect(await dataTable.hasLinkOnName(siteName)).toBe(true, 'Link on site name is missing'); - }); - - it('Navigate inside the library when clicking the hyperlink - [C284902]', async () => { - await dataTable.clickNameLink(siteName); - - expect(await breadcrumb.getCurrentItemName()).toBe(siteName); - expect(await dataTable.getRowByName(fileSite).isPresent()).toBe(true, `${fileSite} not displayed`); - }); + it('Hyperlink appears when mouse over a library - [C284901]', async () => { + expect(await dataTable.hasLinkOnName(siteName)).toBe(true, 'Link on site name is missing'); }); - describe('on Shared Files', () => { - beforeEach(async (done) => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); - await dataTable.waitForHeader(); - done(); - }); + it('Navigate inside the library when clicking the hyperlink - [C284902]', async () => { + await dataTable.clickNameLink(siteName); - it('Hyperlink appears when mouse over a file - [C284905]', async () => { - expect(await dataTable.hasLinkOnName(file1)).toBe(true, 'Link on name is missing'); - }); + expect(await breadcrumb.getCurrentItemName()).toBe(siteName); + expect(await dataTable.getRowByName(fileSite).isPresent()).toBe(true, `${fileSite} not displayed`); + }); + }); - it('File preview opens when clicking the hyperlink - [C284906]', async () => { - await dataTable.clickNameLink(file1); - - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); - - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - }); + describe('on Shared Files', () => { + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); + await dataTable.waitForHeader(); + done(); }); - describe('on Recent Files', () => { - beforeEach(async (done) => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); - await dataTable.waitForHeader(); - done(); - }); - - it('Hyperlink appears when mouse over a file - [C284907]', async () => { - expect(await dataTable.hasLinkOnName(file1)).toBe(true, 'Link on name is missing'); - }); - - it('File preview opens when clicking the hyperlink - [C284908]', async () => { - await dataTable.clickNameLink(file1); - - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); - - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - }); + it('Hyperlink appears when mouse over a file - [C284905]', async () => { + expect(await dataTable.hasLinkOnName(file1)).toBe(true, 'Link on name is missing'); }); - describe('on Favorites', () => { - beforeEach(async (done) => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); - await dataTable.waitForHeader(); - done(); - }); + it('File preview opens when clicking the hyperlink - [C284906]', async () => { + await dataTable.clickNameLink(file1); - it('Hyperlink appears when mouse over a file/folder - [C284909]', async () => { - expect(await dataTable.hasLinkOnName(file1)).toBe(true, 'Link on name is missing'); - }); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); - it('File preview opens when clicking the hyperlink - [C284910]', async () => { - await dataTable.clickNameLink(file1); - - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); - - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - }); - - it('Navigate inside the folder when clicking the hyperlink - [C284911]', async () => { - await dataTable.clickNameLink(folder1); - - expect(await breadcrumb.getCurrentItemName()).toBe(folder1); - }); + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); }); + }); + + describe('on Recent Files', () => { + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); + await dataTable.waitForHeader(); + done(); + }); + + it('Hyperlink appears when mouse over a file - [C284907]', async () => { + expect(await dataTable.hasLinkOnName(file1)).toBe(true, 'Link on name is missing'); + }); + + it('File preview opens when clicking the hyperlink - [C284908]', async () => { + await dataTable.clickNameLink(file1); + + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + }); + }); + + describe('on Favorites', () => { + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); + await dataTable.waitForHeader(); + done(); + }); + + it('Hyperlink appears when mouse over a file/folder - [C284909]', async () => { + expect(await dataTable.hasLinkOnName(file1)).toBe(true, 'Link on name is missing'); + }); + + it('File preview opens when clicking the hyperlink - [C284910]', async () => { + await dataTable.clickNameLink(file1); + + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + }); + + it('Navigate inside the folder when clicking the hyperlink - [C284911]', async () => { + await dataTable.clickNameLink(folder1); + + expect(await breadcrumb.getCurrentItemName()).toBe(folder1); + }); + }); }); diff --git a/e2e/suites/actions/toolbar-multiple-selection.test.ts b/e2e/suites/actions/toolbar-multiple-selection.test.ts index c5c4696af..40566eb25 100755 --- a/e2e/suites/actions/toolbar-multiple-selection.test.ts +++ b/e2e/suites/actions/toolbar-multiple-selection.test.ts @@ -74,44 +74,28 @@ describe('Toolbar actions - multiple selection : ', () => { file2Id = (await apis.user.nodes.createFiles([file2])).entry.id; folder1Id = (await apis.user.nodes.createFolders([folder1])).entry.id; folder2Id = (await apis.user.nodes.createFolders([folder2])).entry.id; - fileForDelete1Id = (await apis.user.nodes.createFiles([fileForDelete1])) - .entry.id; - fileForDelete2Id = (await apis.user.nodes.createFiles([fileForDelete2])) - .entry.id; - folderForDelete1Id = (await apis.user.nodes.createFolders([ - folderForDelete1 - ])).entry.id; - folderForDelete2Id = (await apis.user.nodes.createFolders([ - folderForDelete2 - ])).entry.id; + fileForDelete1Id = (await apis.user.nodes.createFiles([fileForDelete1])).entry.id; + fileForDelete2Id = (await apis.user.nodes.createFiles([fileForDelete2])).entry.id; + folderForDelete1Id = (await apis.user.nodes.createFolders([folderForDelete1])).entry.id; + folderForDelete2Id = (await apis.user.nodes.createFolders([folderForDelete2])).entry.id; await apis.user.shared.shareFilesByIds([file1Id, file2Id]); await apis.user.shared.waitForApi({ expect: 2 }); await apis.user.favorites.addFavoritesByIds('file', [file1Id, file2Id]); - await apis.user.favorites.addFavoritesByIds('folder', [ - folder1Id, - folder2Id - ]); + await apis.user.favorites.addFavoritesByIds('folder', [folder1Id, folder2Id]); await apis.user.favorites.waitForApi({ expect: 4 }); - await apis.user.nodes.deleteNodesById( - [ - fileForDelete1Id, - fileForDelete2Id, - folderForDelete1Id, - folderForDelete2Id - ], - false - ); + await apis.user.nodes.deleteNodesById([fileForDelete1Id, fileForDelete2Id, folderForDelete1Id, folderForDelete2Id], false); await apis.user.sites.createSite(siteName, SITE_VISIBILITY.PRIVATE); const docLibId = await apis.user.sites.getDocLibId(siteName); - await apis.user.nodes.createFile(file1InSite, docLibId); - await apis.user.nodes.createFile(file2InSite, docLibId); - await apis.user.nodes.createFolder(folder1InSite, docLibId); - await apis.user.nodes.createFolder(folder2InSite, docLibId); - + await Promise.all([ + apis.user.nodes.createFile(file1InSite, docLibId), + apis.user.nodes.createFile(file2InSite, docLibId), + apis.user.nodes.createFolder(folder1InSite, docLibId), + apis.user.nodes.createFolder(folder2InSite, docLibId) + ]); await loginPage.loginWith(username); done(); }); @@ -138,161 +122,70 @@ describe('Toolbar actions - multiple selection : ', () => { it('Unselect items with single click - [C280458]', async () => { await dataTable.selectMultipleItems([file1, file2, folder1, folder2]); - expect(await dataTable.countSelectedRows()).toEqual( - 4, - 'incorrect selected rows number' - ); + expect(await dataTable.countSelectedRows()).toEqual(4, 'incorrect selected rows number'); await dataTable.selectItem(file1); - expect(await dataTable.countSelectedRows()).toEqual( - 1, - 'incorrect selected rows number' - ); + expect(await dataTable.countSelectedRows()).toEqual(1, 'incorrect selected rows number'); }); it('Select / unselect selected items by CMD+click - [C217110]', async () => { - await browser - .actions() - .sendKeys(protractor.Key.COMMAND) - .perform(); + await browser.actions().sendKeys(protractor.Key.COMMAND).perform(); await dataTable.selectItem(file1); await dataTable.selectItem(file2); await dataTable.selectItem(folder1); await dataTable.selectItem(folder2); - await browser - .actions() - .sendKeys(protractor.Key.NULL) - .perform(); - expect(await dataTable.countSelectedRows()).toEqual( - 4, - 'incorrect selected rows number' - ); - await browser - .actions() - .sendKeys(protractor.Key.COMMAND) - .perform(); + await browser.actions().sendKeys(protractor.Key.NULL).perform(); + expect(await dataTable.countSelectedRows()).toEqual(4, 'incorrect selected rows number'); + await browser.actions().sendKeys(protractor.Key.COMMAND).perform(); await dataTable.selectItem(file1); await dataTable.selectItem(file2); - await browser - .actions() - .sendKeys(protractor.Key.NULL) - .perform(); + await browser.actions().sendKeys(protractor.Key.NULL).perform(); - expect(await dataTable.countSelectedRows()).toEqual( - 2, - 'incorrect selected rows number' - ); + expect(await dataTable.countSelectedRows()).toEqual(2, 'incorrect selected rows number'); }); it('correct actions appear when multiple files are selected - [C217112]', async () => { await dataTable.selectMultipleItems([file1, file2]); - expect(await toolbar.isButtonPresent('View')).toBe( - false, - 'View is displayed' - ); - expect(await toolbar.isButtonPresent('Download')).toBe( - true, - 'Download is not displayed' - ); - expect(await toolbar.isButtonPresent('Edit')).toBe( - false, - 'Edit is displayed' - ); + expect(await toolbar.isButtonPresent('View')).toBe(false, 'View is displayed'); + expect(await toolbar.isButtonPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, 'Edit is displayed'); const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe( - true, - `Copy is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Delete')).toBe( - true, - `Delete is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Move')).toBe( - true, - `Move is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Favorite')).toBe( - true, - `Favorite is not displayed for selected files` - ); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for selected files`); await toolbar.closeMoreMenu(); }); it('correct actions appear when multiple folders are selected - [C280459]', async () => { await dataTable.selectMultipleItems([folder1, folder2]); - expect(await toolbar.isButtonPresent('View')).toBe( - false, - 'View is displayed' - ); - expect(await toolbar.isButtonPresent('Download')).toBe( - true, - 'Download is not displayed' - ); - expect(await toolbar.isButtonPresent('Edit')).toBe( - false, - 'Edit is displayed' - ); + expect(await toolbar.isButtonPresent('View')).toBe(false, 'View is displayed'); + expect(await toolbar.isButtonPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, 'Edit is displayed'); const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe( - true, - `Copy is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Delete')).toBe( - true, - `Delete is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Move')).toBe( - true, - `Move is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Favorite')).toBe( - true, - `Favorite is not displayed for selected files` - ); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for selected files`); await toolbar.closeMoreMenu(); }); it('correct actions appear when both files and folders are selected - [C280460]', async () => { await dataTable.selectMultipleItems([file1, file2, folder1, folder2]); - expect(await toolbar.isButtonPresent('View')).toBe( - false, - 'View is displayed' - ); - expect(await toolbar.isButtonPresent('Download')).toBe( - true, - 'Download is not displayed' - ); - expect(await toolbar.isButtonPresent('Edit')).toBe( - false, - 'Edit is displayed' - ); + expect(await toolbar.isButtonPresent('View')).toBe(false, 'View is displayed'); + expect(await toolbar.isButtonPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, 'Edit is displayed'); const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe( - true, - `Copy is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Delete')).toBe( - true, - `Delete is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Move')).toBe( - true, - `Move is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Favorite')).toBe( - true, - `Favorite is not displayed for selected files` - ); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for selected files`); await toolbar.closeMoreMenu(); }); }); describe('File Libraries', () => { beforeEach(async done => { - await browser - .actions() - .mouseMove(browser.$('body'), { x: 0, y: 0 }) - .click() - .perform(); + await browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform(); await dataTable.clearSelection(); await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); await dataTable.waitForHeader(); @@ -303,116 +196,44 @@ describe('Toolbar actions - multiple selection : ', () => { it('correct actions appear when multiple files are selected - [C280461]', async () => { await dataTable.selectMultipleItems([file1InSite, file2InSite]); - expect(await toolbar.isButtonPresent('View')).toBe( - false, - 'View is displayed for selected files' - ); - expect(await toolbar.isButtonPresent('Download')).toBe( - true, - 'Download is not displayed for selected files' - ); - expect(await toolbar.isButtonPresent('Edit')).toBe( - false, - 'Edit is displayed for selected files' - ); + expect(await toolbar.isButtonPresent('View')).toBe(false, 'View is displayed for selected files'); + expect(await toolbar.isButtonPresent('Download')).toBe(true, 'Download is not displayed for selected files'); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, 'Edit is displayed for selected files'); const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe( - true, - `Copy is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Delete')).toBe( - true, - `Delete is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Move')).toBe( - true, - `Move is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Favorite')).toBe( - true, - `Favorite is not displayed for selected files` - ); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for selected files`); }); it('correct actions appear when multiple folders are selected - [C280462]', async () => { await dataTable.selectMultipleItems([folder1InSite, folder2InSite]); - expect(await toolbar.isButtonPresent('View')).toBe( - false, - 'View is displayed' - ); - expect(await toolbar.isButtonPresent('Download')).toBe( - true, - 'Download is not displayed' - ); - expect(await toolbar.isButtonPresent('Edit')).toBe( - false, - 'Edit is displayed' - ); + expect(await toolbar.isButtonPresent('View')).toBe(false, 'View is displayed'); + expect(await toolbar.isButtonPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, 'Edit is displayed'); const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe( - true, - `Copy is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Delete')).toBe( - true, - `Delete is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Move')).toBe( - true, - `Move is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Favorite')).toBe( - true, - `Favorite is not displayed for selected files` - ); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for selected files`); }); it('correct actions appear when both files and folders are selected - [C280463]', async () => { - await dataTable.selectMultipleItems([ - file1InSite, - file2InSite, - folder1InSite, - folder2InSite - ]); - expect(await toolbar.isButtonPresent('View')).toBe( - false, - 'View is displayed' - ); - expect(await toolbar.isButtonPresent('Download')).toBe( - true, - 'Download is not displayed' - ); - expect(await toolbar.isButtonPresent('Edit')).toBe( - false, - 'Edit is displayed' - ); + await dataTable.selectMultipleItems([file1InSite, file2InSite, folder1InSite, folder2InSite]); + expect(await toolbar.isButtonPresent('View')).toBe(false, 'View is displayed'); + expect(await toolbar.isButtonPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, 'Edit is displayed'); const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe( - true, - `Copy is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Delete')).toBe( - true, - `Delete is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Move')).toBe( - true, - `Move is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Favorite')).toBe( - true, - `Favorite is not displayed for selected files` - ); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for selected files`); }); }); describe('Shared Files', () => { beforeEach(async done => { - await browser - .actions() - .mouseMove(browser.$('body'), { x: 0, y: 0 }) - .click() - .perform(); + await browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform(); await dataTable.clearSelection(); await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); await dataTable.waitForHeader(); @@ -421,45 +242,20 @@ describe('Toolbar actions - multiple selection : ', () => { it('correct actions appear when multiple files are selected - [C280467]', async () => { await dataTable.selectMultipleItems([file1, file2]); - expect(await toolbar.isButtonPresent('View')).toBe( - false, - 'View is displayed' - ); - expect(await toolbar.isButtonPresent('Download')).toBe( - true, - 'Download is not displayed for selected files' - ); - expect(await toolbar.isButtonPresent('Edit')).toBe( - false, - 'Edit is displayed for selected files' - ); + expect(await toolbar.isButtonPresent('View')).toBe(false, 'View is displayed'); + expect(await toolbar.isButtonPresent('Download')).toBe(true, 'Download is not displayed for selected files'); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, 'Edit is displayed for selected files'); const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe( - true, - `Copy is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Delete')).toBe( - true, - `Delete is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Move')).toBe( - true, - `Move is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Favorite')).toBe( - true, - `Favorite is not displayed for selected files` - ); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for selected files`); }); }); describe('Recent Files', () => { beforeEach(async done => { - await browser - .actions() - .mouseMove(browser.$('body'), { x: 0, y: 0 }) - .click() - .perform(); + await browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform(); await dataTable.clearSelection(); await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); await dataTable.waitForHeader(); @@ -468,45 +264,20 @@ describe('Toolbar actions - multiple selection : ', () => { it('correct actions appear when multiple files are selected - [C280468]', async () => { await dataTable.selectMultipleItems([file1, file2]); - expect(await toolbar.isButtonPresent('View')).toBe( - false, - 'View is displayed' - ); - expect(await toolbar.isButtonPresent('Download')).toBe( - true, - 'Download is not displayed' - ); - expect(await toolbar.isButtonPresent('Edit')).toBe( - false, - 'Edit is displayed' - ); + expect(await toolbar.isButtonPresent('View')).toBe(false, 'View is displayed'); + expect(await toolbar.isButtonPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, 'Edit is displayed'); const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe( - true, - `Copy is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Delete')).toBe( - true, - `Delete is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Move')).toBe( - true, - `Move is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Favorite')).toBe( - true, - `Favorite is not displayed for selected files` - ); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for selected files`); }); }); describe('Favorites', () => { beforeEach(async done => { - await browser - .actions() - .mouseMove(browser.$('body'), { x: 0, y: 0 }) - .click() - .perform(); + await browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform(); await dataTable.clearSelection(); await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); await dataTable.waitForHeader(); @@ -515,101 +286,38 @@ describe('Toolbar actions - multiple selection : ', () => { it('correct actions appear when multiple files are selected - [C280469]', async () => { await dataTable.selectMultipleItems([file1, file2]); - expect(await toolbar.isButtonPresent('View')).toBe( - false, - 'View is displayed' - ); - expect(await toolbar.isButtonPresent('Download')).toBe( - true, - 'Download is not displayed' - ); - expect(await toolbar.isButtonPresent('Edit')).toBe( - false, - 'Edit is displayed' - ); + expect(await toolbar.isButtonPresent('View')).toBe(false, 'View is displayed'); + expect(await toolbar.isButtonPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, 'Edit is displayed'); const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe( - true, - `Copy is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Delete')).toBe( - true, - `Delete is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Move')).toBe( - true, - `Move is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Favorite')).toBe( - true, - `Favorite is not displayed for selected files` - ); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for selected files`); }); it('correct actions appear when multiple folders are selected - [C280470]', async () => { await dataTable.selectMultipleItems([folder1, folder2]); - expect(await toolbar.isButtonPresent('View')).toBe( - false, - 'View is displayed' - ); - expect(await toolbar.isButtonPresent('Download')).toBe( - true, - 'Download is not displayed' - ); - expect(await toolbar.isButtonPresent('Edit')).toBe( - false, - 'Edit is displayed' - ); + expect(await toolbar.isButtonPresent('View')).toBe(false, 'View is displayed'); + expect(await toolbar.isButtonPresent('Download')).toBe(true, 'Download is not displayed'); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, 'Edit is displayed'); const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe( - true, - `Copy is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Delete')).toBe( - true, - `Delete is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Move')).toBe( - true, - `Move is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Favorite')).toBe( - true, - `Favorite is not displayed for selected files` - ); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for selected files`); }); it('correct actions appear when both files and folders are selected - [C280471]', async () => { await dataTable.selectMultipleItems([file1, file2, folder1, folder2]); - expect(await toolbar.isButtonPresent('View')).toBe( - false, - 'View is displayed' - ); - expect(await toolbar.isButtonPresent('Download')).toBe( - true, - 'Download is not displayed for selected files' - ); - expect(await toolbar.isButtonPresent('Edit')).toBe( - false, - 'Edit is displayed' - ); + expect(await toolbar.isButtonPresent('View')).toBe(false, 'View is displayed'); + expect(await toolbar.isButtonPresent('Download')).toBe(true, 'Download is not displayed for selected files'); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, 'Edit is displayed'); const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe( - true, - `Copy is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Delete')).toBe( - true, - `Delete is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Move')).toBe( - true, - `Move is not displayed for selected files` - ); - expect(await menu.isMenuItemPresent('Favorite')).toBe( - true, - `Favorite is not displayed for selected files` - ); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for selected files`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for selected files`); }); }); @@ -623,43 +331,20 @@ describe('Toolbar actions - multiple selection : ', () => { it('correct actions appear when multiple files are selected - [C280472]', async () => { await dataTable.selectMultipleItems([fileForDelete1, fileForDelete2]); - expect(await toolbar.isButtonPresent('Permanently delete')).toBe( - true, - 'Permanently delete is displayed' - ); - expect(await toolbar.isButtonPresent('Restore')).toBe( - true, - 'Restore is not displayed' - ); + expect(await toolbar.isButtonPresent('Permanently delete')).toBe(true, 'Permanently delete is displayed'); + expect(await toolbar.isButtonPresent('Restore')).toBe(true, 'Restore is not displayed'); }); it('correct actions appear when multiple folders are selected - [C280473]', async () => { await dataTable.selectMultipleItems([folderForDelete1, folderForDelete2]); - expect(await toolbar.isButtonPresent('Permanently delete')).toBe( - true, - 'Permanently delete is displayed' - ); - expect(await toolbar.isButtonPresent('Restore')).toBe( - true, - 'Restore is not displayed' - ); + expect(await toolbar.isButtonPresent('Permanently delete')).toBe(true, 'Permanently delete is displayed'); + expect(await toolbar.isButtonPresent('Restore')).toBe(true, 'Restore is not displayed'); }); it('correct actions appear when both files and folders are selected - [C280474]', async () => { - await dataTable.selectMultipleItems([ - fileForDelete1, - fileForDelete2, - folderForDelete1, - folderForDelete2 - ]); - expect(await toolbar.isButtonPresent('Permanently delete')).toBe( - true, - 'Permanently delete is displayed' - ); - expect(await toolbar.isButtonPresent('Restore')).toBe( - true, - 'Restore is not displayed' - ); + await dataTable.selectMultipleItems([fileForDelete1, fileForDelete2, folderForDelete1, folderForDelete2]); + expect(await toolbar.isButtonPresent('Permanently delete')).toBe(true, 'Permanently delete is displayed'); + expect(await toolbar.isButtonPresent('Restore')).toBe(true, 'Restore is not displayed'); }); }); }); diff --git a/e2e/suites/actions/toolbar-single-selection.test.ts b/e2e/suites/actions/toolbar-single-selection.test.ts index 89591cdcc..21fa74962 100755 --- a/e2e/suites/actions/toolbar-single-selection.test.ts +++ b/e2e/suites/actions/toolbar-single-selection.test.ts @@ -30,289 +30,288 @@ import { RepoClient } from '../../utilities/repo-client/repo-client'; import { Utils } from '../../utilities/utils'; describe('Toolbar actions - single selection : ', () => { - const username = `user-${Utils.random()}`; + const username = `user-${Utils.random()}`; - const fileUser = `fileUser-${Utils.random()}.txt`; let fileUserId; - const folderUser = `folderUser-${Utils.random()}`; let folderUserId; - const fileForDelete = `fileForDelete-${Utils.random()}.txt`; let fileForDeleteId; - const folderForDelete = `folderForDelete-${Utils.random()}`; let folderForDeleteId; + const fileUser = `fileUser-${Utils.random()}.txt`; let fileUserId; + const folderUser = `folderUser-${Utils.random()}`; let folderUserId; + const fileForDelete = `fileForDelete-${Utils.random()}.txt`; let fileForDeleteId; + const folderForDelete = `folderForDelete-${Utils.random()}`; let folderForDeleteId; - const siteName = `site-${Utils.random()}`; - const fileInSite = `fileAdmin-${Utils.random()}.txt`; - const folderInSite = `folderAdmin-${Utils.random()}`; + const siteName = `site-${Utils.random()}`; + const fileInSite = `fileAdmin-${Utils.random()}.txt`; + const folderInSite = `folderAdmin-${Utils.random()}`; - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; + const apis = { + admin: new RepoClient(), + user: new RepoClient(username, username) + }; - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const page = new BrowsingPage(); - const { dataTable, toolbar } = page; + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const page = new BrowsingPage(); + const { dataTable, toolbar } = page; - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); - fileUserId = (await apis.user.nodes.createFile(fileUser)).entry.id; - fileForDeleteId = (await apis.user.nodes.createFile(fileForDelete)).entry.id; - folderForDeleteId = (await apis.user.nodes.createFolder(folderForDelete)).entry.id; - folderUserId = (await apis.user.nodes.createFolder(folderUser)).entry.id; + fileUserId = (await apis.user.nodes.createFile(fileUser)).entry.id; + fileForDeleteId = (await apis.user.nodes.createFile(fileForDelete)).entry.id; + folderForDeleteId = (await apis.user.nodes.createFolder(folderForDelete)).entry.id; + folderUserId = (await apis.user.nodes.createFolder(folderUser)).entry.id; - await apis.user.shared.shareFileById(fileUserId); - await apis.user.shared.waitForApi({ expect: 1 }); + await apis.user.shared.shareFileById(fileUserId); + await apis.user.shared.waitForApi({ expect: 1 }); - await apis.user.favorites.addFavoriteById('file', fileUserId); - await apis.user.favorites.addFavoriteById('folder', folderUserId); - await apis.user.favorites.waitForApi({ expect: 2 }); + await apis.user.favorites.addFavoriteById('file', fileUserId); + await apis.user.favorites.addFavoriteById('folder', folderUserId); + await apis.user.favorites.waitForApi({ expect: 2 }); - await apis.user.sites.createSite(siteName, SITE_VISIBILITY.PRIVATE); - const docLibId = await apis.user.sites.getDocLibId(siteName); + await apis.user.sites.createSite(siteName, SITE_VISIBILITY.PRIVATE); + const docLibId = await apis.user.sites.getDocLibId(siteName); - await apis.user.nodes.createFile(fileInSite, docLibId); - await apis.user.nodes.createFolder(folderInSite, docLibId); + await apis.user.nodes.createFile(fileInSite, docLibId); + await apis.user.nodes.createFolder(folderInSite, docLibId); - await apis.user.nodes.deleteNodeById(fileForDeleteId, false); - await apis.user.nodes.deleteNodeById(folderForDeleteId, false); + await apis.user.nodes.deleteNodeById(fileForDeleteId, false); + await apis.user.nodes.deleteNodeById(folderForDeleteId, false); - await loginPage.loginWith(username); - done(); + await loginPage.loginWith(username); + done(); + }); + + afterAll(async (done) => { + await Promise.all([ + apis.user.nodes.deleteNodeById(fileUserId), + apis.user.nodes.deleteNodeById(folderUserId), + apis.user.sites.deleteSite(siteName), + apis.user.trashcan.emptyTrash(), + logoutPage.load() + ]); + done(); + }); + + xit(''); + + describe('General tests', () => { + it('actions not displayed for top level of File Libraries - [C213135]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); + await dataTable.waitForHeader(); + await dataTable.selectItem(siteName); + expect(await toolbar.isEmpty()).toBe(true, 'toolbar not empty'); }); - afterAll(async (done) => { - await Promise.all([ - apis.user.nodes.deleteNodeById(fileUserId), - apis.user.nodes.deleteNodeById(folderUserId), - apis.user.sites.deleteSite(siteName), - apis.user.trashcan.emptyTrash(), - logoutPage.load() - ]); - done(); + it('selected row is marked with a check circle icon - [C213134]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + await dataTable.selectItem(fileUser); + expect(await dataTable.hasCheckMarkIcon(fileUser)).toBe(true, 'check mark missing'); + }); + }); + + describe('Personal Files', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await dataTable.clearSelection(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + done(); }); - xit(''); - - describe('General tests', () => { - it('actions not displayed for top level of File Libraries - [C213135]', async () => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); - await dataTable.waitForHeader(); - await dataTable.selectItem(siteName); - expect(await toolbar.isEmpty()).toBe(true, 'toolbar not empty'); - }); - - it('selected row is marked with a check circle icon - [C213134]', async () => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); - await dataTable.waitForHeader(); - await dataTable.selectItem(fileUser); - expect(await dataTable.hasCheckMarkIcon(fileUser)).toBe(true, 'check mark missing'); - }); + it('actions are not displayed when no item is selected - [C213120]', async () => { + expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); }); - describe('Personal Files', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await dataTable.clearSelection(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); - await dataTable.waitForHeader(); - done(); - }); - - it('actions are not displayed when no item is selected - [C213120]', async () => { - expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); - }); - - it('correct actions appear when a file is selected - [C213122]', async () => { - await dataTable.selectItem(fileUser); - expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); - const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); - await toolbar.closeMoreMenu(); - }); - - it('correct actions appear when a folder is selected - [C213123]', async () => { - await dataTable.selectItem(folderUser); - expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${folderUser}`); - expect(await toolbar.isButtonPresent('View')).toBe(false, `View is displayed for ${folderUser}`); - expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not enabled for ${folderUser}`); - expect(await toolbar.isButtonPresent('Edit')).toBe(true, `Edit is not displayed for ${folderUser}`); - const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderUser}`); - expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderUser}`); - expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderUser}`); - expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderUser}`); - await toolbar.closeMoreMenu(); - }); + it('correct actions appear when a file is selected - [C213122]', async () => { + await dataTable.selectItem(fileUser); + expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); + const menu = await toolbar.openMoreMenu(); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); + await toolbar.closeMoreMenu(); }); - describe('File Libraries', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); - await dataTable.waitForHeader(); - await dataTable.doubleClickOnRowByName(siteName); - await dataTable.waitForHeader(); - done(); - }); + it('correct actions appear when a folder is selected - [C213123]', async () => { + await dataTable.selectItem(folderUser); + expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${folderUser}`); + expect(await toolbar.isButtonPresent('View')).toBe(false, `View is displayed for ${folderUser}`); + expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not enabled for ${folderUser}`); + expect(await toolbar.isButtonPresent('Edit')).toBe(true, `Edit is not displayed for ${folderUser}`); + const menu = await toolbar.openMoreMenu(); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderUser}`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderUser}`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderUser}`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderUser}`); + await toolbar.closeMoreMenu(); + }); + }); - it('actions are not displayed when no item is selected - [C280439]', async () => { - expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); - }); - - it('correct actions appear when a file is selected - [C280440]', async () => { - await dataTable.selectItem(fileInSite); - expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileInSite}`); - expect(await toolbar.isButtonPresent('View')).toBe(true, `View is not displayed for ${fileInSite}`); - expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not displayed for ${fileInSite}`); - expect(await toolbar.isButtonPresent('Edit')).toBe(false, `Edit is displayed for ${fileInSite}`); - const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileInSite}`); - expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileInSite}`); - expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileInSite}`); - expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileInSite}`); - await toolbar.closeMoreMenu(); - }); - - it('correct actions appear when a folder is selected - [C280441]', async () => { - await dataTable.selectItem(folderInSite); - expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${folderInSite}`); - expect(await toolbar.isButtonPresent('View')).toBe(false, `View is displayed for ${folderInSite}`); - expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not enabled for ${folderInSite}`); - expect(await toolbar.isButtonPresent('Edit')).toBe(true, `Edit is not displayed for ${folderInSite}`); - const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderInSite}`); - expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderInSite}`); - expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderInSite}`); - expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderInSite}`); - await toolbar.closeMoreMenu(); - }); + describe('File Libraries', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); + await dataTable.waitForHeader(); + await dataTable.doubleClickOnRowByName(siteName); + await dataTable.waitForHeader(); + done(); }); - describe('Shared Files', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); - await page.dataTable.waitForHeader(); - done(); - }); - - it('actions are not displayed when no item is selected - [C280445]', async () => { - expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); - }); - - it('correct actions appear when a file is selected - [C286265]', async () => { - await page.dataTable.selectItem(fileUser); - expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); - const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); - await toolbar.closeMoreMenu(); - }); - + it('actions are not displayed when no item is selected - [C280439]', async () => { + expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); }); - describe('Recent Files', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); - await dataTable.waitForHeader(); - done(); - }); - - it('actions are not displayed when no item is selected - [C280447]', async () => { - expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); - }); - - it('correct actions appear when a file is selected - [C280448]', async () => { - await dataTable.selectItem(fileUser); - expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); - const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); - await toolbar.closeMoreMenu(); - }); + it('correct actions appear when a file is selected - [C280440]', async () => { + await dataTable.selectItem(fileInSite); + expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileInSite}`); + expect(await toolbar.isButtonPresent('View')).toBe(true, `View is not displayed for ${fileInSite}`); + expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not displayed for ${fileInSite}`); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, `Edit is displayed for ${fileInSite}`); + const menu = await toolbar.openMoreMenu(); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileInSite}`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileInSite}`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileInSite}`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileInSite}`); + await toolbar.closeMoreMenu(); }); - describe('Favorites', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); - await dataTable.waitForHeader(); - done(); - }); + it('correct actions appear when a folder is selected - [C280441]', async () => { + await dataTable.selectItem(folderInSite); + expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${folderInSite}`); + expect(await toolbar.isButtonPresent('View')).toBe(false, `View is displayed for ${folderInSite}`); + expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not enabled for ${folderInSite}`); + expect(await toolbar.isButtonPresent('Edit')).toBe(true, `Edit is not displayed for ${folderInSite}`); + const menu = await toolbar.openMoreMenu(); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderInSite}`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderInSite}`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderInSite}`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderInSite}`); + await toolbar.closeMoreMenu(); + }); + }); - it('actions are not displayed when no item is selected - [C280449]', async () => { - expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); - }); - - it('correct actions appear when a file is selected - [C280450]', async () => { - await dataTable.selectItem(fileUser); - expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); - expect(await toolbar.isButtonPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); - const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); - expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); - await toolbar.closeMoreMenu(); - }); - - it('correct actions appear when a folder is selected - [C280451]', async () => { - await dataTable.selectItem(folderUser); - expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${folderUser}`); - expect(await toolbar.isButtonPresent('View')).toBe(false, `View is displayed for ${folderUser}`); - expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not enabled for ${folderUser}`); - expect(await toolbar.isButtonPresent('Edit')).toBe(true, `Edit is not displayed for ${folderUser}`); - const menu = await toolbar.openMoreMenu(); - expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderUser}`); - expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderUser}`); - expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderUser}`); - expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderUser}`); - await toolbar.closeMoreMenu(); - }); + describe('Shared Files', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); + await page.dataTable.waitForHeader(); + done(); }); - describe('Trash', () => { - beforeEach(async (done) => { - await browser.actions().sendKeys(protractor.Key.ESCAPE); - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); - await dataTable.waitForHeader(); - done(); - }); - - it('actions are not displayed when no item is selected - [C280452]', async () => { - expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); - }); - - it('correct actions appear when a file is selected - [C280453]', async () => { - await dataTable.selectItem(fileForDelete); - expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileForDelete}`); - expect(await toolbar.isButtonPresent('Permanently delete')).toBe(true, `Permanently delete is not displayed for file`); - expect(await toolbar.isButtonPresent('Restore')).toBe(true, `Restore is not displayed for file`); - }); - - it('correct actions appear when a folder is selected - [C280454]', async () => { - await dataTable.selectItem(folderForDelete); - expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${folderForDelete}`); - expect(await toolbar.isButtonPresent('Permanently delete')).toBe(true, `Permanently delete is displayed for folder`); - expect(await toolbar.isButtonPresent('Restore')).toBe(true, `Restore is not enabled for folder`); - }); + it('actions are not displayed when no item is selected - [C280445]', async () => { + expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); }); + + it('correct actions appear when a file is selected - [C286265]', async () => { + await page.dataTable.selectItem(fileUser); + expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); + const menu = await toolbar.openMoreMenu(); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); + await toolbar.closeMoreMenu(); + }); + }); + + describe('Recent Files', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); + await dataTable.waitForHeader(); + done(); + }); + + it('actions are not displayed when no item is selected - [C280447]', async () => { + expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); + }); + + it('correct actions appear when a file is selected - [C280448]', async () => { + await dataTable.selectItem(fileUser); + expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); + const menu = await toolbar.openMoreMenu(); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); + await toolbar.closeMoreMenu(); + }); + }); + + describe('Favorites', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); + await dataTable.waitForHeader(); + done(); + }); + + it('actions are not displayed when no item is selected - [C280449]', async () => { + expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); + }); + + it('correct actions appear when a file is selected - [C280450]', async () => { + await dataTable.selectItem(fileUser); + expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('View')).toBe(true, `View is not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not displayed for ${fileUser}`); + expect(await toolbar.isButtonPresent('Edit')).toBe(false, `Edit is displayed for ${fileUser}`); + const menu = await toolbar.openMoreMenu(); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${fileUser}`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${fileUser}`); + await toolbar.closeMoreMenu(); + }); + + it('correct actions appear when a folder is selected - [C280451]', async () => { + await dataTable.selectItem(folderUser); + expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${folderUser}`); + expect(await toolbar.isButtonPresent('View')).toBe(false, `View is displayed for ${folderUser}`); + expect(await toolbar.isButtonPresent('Download')).toBe(true, `Download is not enabled for ${folderUser}`); + expect(await toolbar.isButtonPresent('Edit')).toBe(true, `Edit is not displayed for ${folderUser}`); + const menu = await toolbar.openMoreMenu(); + expect(await menu.isMenuItemPresent('Copy')).toBe(true, `Copy is not displayed for ${folderUser}`); + expect(await menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${folderUser}`); + expect(await menu.isMenuItemPresent('Move')).toBe(true, `Move is not displayed for ${folderUser}`); + expect(await menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${folderUser}`); + await toolbar.closeMoreMenu(); + }); + }); + + describe('Trash', () => { + beforeEach(async (done) => { + await browser.actions().sendKeys(protractor.Key.ESCAPE); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + await dataTable.waitForHeader(); + done(); + }); + + it('actions are not displayed when no item is selected - [C280452]', async () => { + expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`); + }); + + it('correct actions appear when a file is selected - [C280453]', async () => { + await dataTable.selectItem(fileForDelete); + expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileForDelete}`); + expect(await toolbar.isButtonPresent('Permanently delete')).toBe(true, `Permanently delete is not displayed for file`); + expect(await toolbar.isButtonPresent('Restore')).toBe(true, `Restore is not displayed for file`); + }); + + it('correct actions appear when a folder is selected - [C280454]', async () => { + await dataTable.selectItem(folderForDelete); + expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${folderForDelete}`); + expect(await toolbar.isButtonPresent('Permanently delete')).toBe(true, `Permanently delete is displayed for folder`); + expect(await toolbar.isButtonPresent('Restore')).toBe(true, `Restore is not enabled for folder`); + }); + }); }); diff --git a/e2e/suites/actions/upload-file.test.ts b/e2e/suites/actions/upload-file.test.ts index b12b870c1..3b2e4f8bb 100755 --- a/e2e/suites/actions/upload-file.test.ts +++ b/e2e/suites/actions/upload-file.test.ts @@ -30,45 +30,45 @@ import { RepoClient } from '../../utilities/repo-client/repo-client'; import { Utils } from '../../utilities/utils'; describe('Upload files', () => { - const username = `user-${Utils.random()}`; + const username = `user-${Utils.random()}`; - const folder1 = `folder1-${Utils.random()}`; let folder1Id; + const folder1 = `folder1-${Utils.random()}`; let folder1Id; - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; + const apis = { + admin: new RepoClient(), + user: new RepoClient(username, username) + }; - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const page = new BrowsingPage(); - const { dataTable } = page; + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const page = new BrowsingPage(); + const { dataTable } = page; - beforeAll(done => { - apis.admin.people.createUser({ username }) - .then(() => apis.user.nodes.createFolder(folder1).then(resp => folder1Id = resp.entry.id)) + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); + folder1Id = (await apis.user.nodes.createFolder(folder1)).entry.id; - .then(() => loginPage.loginWith(username)) - .then(done); - }); + await loginPage.loginWith(username); + done(); + }); - beforeEach(done => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => dataTable.waitForHeader()) - .then(done); - }); + beforeEach(async (done) => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await dataTable.waitForHeader(); + done(); + }); - afterAll(done => { - Promise.all([ - // apis.user.nodes.deleteNodeById(folder1Id), - logoutPage.load() - ]) - .then(done); - }); + afterAll(async (done) => { + await Promise.all([ + apis.user.nodes.deleteNodeById(folder1Id), + logoutPage.load() + ]); + done(); + }); - it('Upload a file', () => { - dataTable.doubleClickOnRowByName(folder1) - .then(() => page.sidenav.openNewMenu()) - .then(() => page.sidenav.menu.uploadFile().sendKeys(`${__dirname}/create-folder.test.ts`)); - }); + it('Upload a file', async () => { + await dataTable.doubleClickOnRowByName(folder1); + await page.sidenav.openNewMenu(); + await page.sidenav.menu.uploadFile().sendKeys(`${__dirname}/create-folder.test.ts`); + }); }); diff --git a/e2e/suites/application/general.test.ts b/e2e/suites/application/general.test.ts index ccced7d09..a91a1eac1 100644 --- a/e2e/suites/application/general.test.ts +++ b/e2e/suites/application/general.test.ts @@ -30,56 +30,44 @@ import { RepoClient } from '../../utilities/repo-client/repo-client'; import { Utils } from '../../utilities/utils'; describe('General', () => { - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const page = new BrowsingPage(); - const createDialog = new CreateOrEditFolderDialog(); - const adminApi = new RepoClient(); - const { nodes: nodesApi, authentication: authApi } = adminApi; - const folder = `folder-${Utils.random()}`; - let folderId; - xit(''); - - describe('on session expire', () => { - beforeAll(async () => { - folderId = (await nodesApi.createFolder(folder)).entry.id; - }); - - afterAll(async () => { - await nodesApi.deleteNodeById(folderId); - await logoutPage.load(); - }); - - it('should redirect user to login page' , async () => { - await loginPage.loginWithAdmin(); - - await page.sidenav.openCreateDialog(); - await createDialog.waitForDialogToOpen(); - await createDialog.enterName(folder); - - await authApi.logout(); - - await createDialog.clickCreate(); - expect(await browser.getTitle()).toContain('Sign in'); - }); - - it('should close opened dialogs', async () => { - await loginPage.loginWithAdmin(); - - await page.sidenav.openCreateDialog(); - await createDialog.waitForDialogToOpen(); - await createDialog.enterName(folder); - - await authApi.logout(); - - await createDialog.clickCreate(); - const message = await page.getSnackBarMessage(); - expect(message).toEqual('The action was unsuccessful. Try again or contact your IT Team.'); - - await createDialog.waitForDialogToClose(); - expect(createDialog.component.isPresent()).not.toBe(true, 'dialog is present'); - }); + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const page = new BrowsingPage(); + const createDialog = new CreateOrEditFolderDialog(); + const adminApi = new RepoClient(); + const { nodes: nodesApi, authentication: authApi } = adminApi; + const folder = `folder-${Utils.random()}`; + let folderId; + xit(''); + describe('on session expire', () => { + beforeAll(async (done) => { + folderId = (await nodesApi.createFolder(folder)).entry.id; + done(); }); + afterAll(async (done) => { + await nodesApi.deleteNodeById(folderId); + await logoutPage.load(); + done(); + }); + + it('should close opened dialogs - [C286473]', async () => { + await loginPage.loginWithAdmin(); + + await page.sidenav.openCreateDialog(); + await createDialog.waitForDialogToOpen(); + await createDialog.enterName(folder); + + await authApi.logout(); + + await createDialog.clickCreate(); + expect(await browser.getTitle()).toContain('Sign in'); + const message = await page.getSnackBarMessage(); + expect(message).toEqual('The action was unsuccessful. Try again or contact your IT Team.'); + + await createDialog.waitForDialogToClose(); + expect(createDialog.component.isPresent()).not.toBe(true, 'dialog is present'); + }); + }); }); diff --git a/e2e/suites/application/page-titles.test.ts b/e2e/suites/application/page-titles.test.ts index b477e0e5a..cbe11c01f 100755 --- a/e2e/suites/application/page-titles.test.ts +++ b/e2e/suites/application/page-titles.test.ts @@ -32,148 +32,109 @@ import { Utils } from '../../utilities/utils'; describe('Page titles', () => { - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const page = new BrowsingPage(); - const adminApi = new RepoClient(); - const { nodes: nodesApi } = adminApi; - const file = `file-${Utils.random()}.txt`; let fileId; - const header = page.header; + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const page = new BrowsingPage(); + const adminApi = new RepoClient(); + const { nodes: nodesApi } = adminApi; + const file = `file-${Utils.random()}.txt`; let fileId; + const header = page.header; - xit(''); + xit(''); - describe('on Login / Logout pages', () => { - it('on Login page - [C217155]', () => { - loginPage.load() - .then(() => { - expect(browser.getTitle()).toContain('Sign in'); - }); - }); - - it('after logout - [C217156]', () => { - loginPage.loginWithAdmin() - .then(() => page.signOut()) - .then(() => { - expect(browser.getTitle()).toContain('Sign in'); - }); - }); - - it('when pressing Back after Logout - [C280414]', () => { - loginPage.loginWithAdmin() - .then(() => page.signOut()) - .then(() => browser.navigate().back()) - .then(() => { - expect(browser.getTitle()).toContain('Sign in'); - }); - }); + describe('on Login / Logout pages', () => { + it('on Login page - [C217155]', async () => { + await loginPage.load(); + expect(await browser.getTitle()).toContain('Sign in'); }); - describe('on list views', () => { - beforeAll(done => { - loginPage.loginWithAdmin().then(done); - }); - - afterAll(done => { - logoutPage.load() - .then(done); - }); - - it('Personal Files page - [C217157]', () => { - const label = SIDEBAR_LABELS.PERSONAL_FILES; - - page.sidenav.navigateToLinkByLabel(label) - .then(() => { - expect(browser.getTitle()).toContain(label); - }); - }); - - it('File Libraries page - [C217158]', () => { - const label = SIDEBAR_LABELS.FILE_LIBRARIES; - - page.sidenav.navigateToLinkByLabel(label) - .then(() => { - expect(browser.getTitle()).toContain(label); - }); - }); - - it('Shared Files page - [C217159]', () => { - const label = SIDEBAR_LABELS.SHARED_FILES; - - page.sidenav.navigateToLinkByLabel(label) - .then(() => { - expect(browser.getTitle()).toContain(label); - }); - }); - - it('Recent Files page - [C217160]', () => { - const label = SIDEBAR_LABELS.RECENT_FILES; - - page.sidenav.navigateToLinkByLabel(label) - .then(() => { - expect(browser.getTitle()).toContain(label); - }); - }); - - it('Favorites page - [C217161]', () => { - const label = SIDEBAR_LABELS.FAVORITES; - - page.sidenav.navigateToLinkByLabel(label) - .then(() => { - expect(browser.getTitle()).toContain(label); - }); - }); - - it('Trash page - [C217162]', () => { - const label = SIDEBAR_LABELS.TRASH; - - page.sidenav.navigateToLinkByLabel(label) - .then(() => { - expect(browser.getTitle()).toContain(label); - }); - }); - + it('after logout - [C217156]', async () => { + await loginPage.loginWithAdmin(); + await page.signOut(); + expect(await browser.getTitle()).toContain('Sign in'); }); - describe('on File Viewer', () => { - beforeAll( async (done) => { - fileId = (await nodesApi.createFile(file)).entry.id; - await loginPage.loginWithAdmin(); - done(); - }); + it('when pressing Back after Logout - [C280414]', async () => { + await loginPage.loginWithAdmin(); + await page.signOut(); + await browser.navigate().back(); + expect(await browser.getTitle()).toContain('Sign in'); + }); + }); - afterAll( async (done) => { - await logoutPage.load(); - await adminApi.nodes.deleteNodeById(fileId); - done(); - }); - - it('File Preview page - [C280415]', async () => { - await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); - await page.dataTable.waitForHeader(); - await page.dataTable.doubleClickOnRowByName(file); - expect(await browser.getTitle()).toContain(PAGE_TITLES.VIEWER); - }); + describe('on app pages', () => { + beforeAll(async (done) => { + fileId = (await nodesApi.createFile(file)).entry.id; + await loginPage.loginWithAdmin(); + done(); }); - describe ('on Search query', () => { - beforeAll( async (done) => { - await loginPage.loginWithAdmin(); - done(); - }); - - afterAll( async (done) => { - await logoutPage.load(); - done(); - }); - - it('Search Results page - [C280413]', async () => { - await header.waitForSearchButton(); - await header.searchButton.click(); - await page.dataTable.waitForHeader(); - await header.waitForSearchBar(); - await header.searchForText(file); - expect(await browser.getTitle()).toContain(PAGE_TITLES.SEARCH); - }); + afterAll(async (done) => { + await Promise.all([ + logoutPage.load(), + adminApi.nodes.deleteNodeById(fileId) + ]); + done(); }); + + it('Personal Files page - [C217157]', async () => { + const label = SIDEBAR_LABELS.PERSONAL_FILES; + + await page.sidenav.navigateToLinkByLabel(label); + expect(await browser.getTitle()).toContain(label); + }); + + it('File Libraries page - [C217158]', async () => { + const label = SIDEBAR_LABELS.FILE_LIBRARIES; + + await page.sidenav.navigateToLinkByLabel(label); + expect(await browser.getTitle()).toContain(label); + }); + + it('Shared Files page - [C217159]', async () => { + const label = SIDEBAR_LABELS.SHARED_FILES; + + await page.sidenav.navigateToLinkByLabel(label); + expect(await browser.getTitle()).toContain(label); + }); + + it('Recent Files page - [C217160]', async () => { + const label = SIDEBAR_LABELS.RECENT_FILES; + + await page.sidenav.navigateToLinkByLabel(label); + expect(await browser.getTitle()).toContain(label); + }); + + it('Favorites page - [C217161]', async () => { + const label = SIDEBAR_LABELS.FAVORITES; + + await page.sidenav.navigateToLinkByLabel(label); + expect(await browser.getTitle()).toContain(label); + }); + + it('Trash page - [C217162]', async () => { + const label = SIDEBAR_LABELS.TRASH; + + await page.sidenav.navigateToLinkByLabel(label); + expect(await browser.getTitle()).toContain(label); + }); + + it('File Preview page - [C280415]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await page.dataTable.waitForHeader(); + await page.dataTable.doubleClickOnRowByName(file); + expect(await browser.getTitle()).toContain(PAGE_TITLES.VIEWER); + await Utils.pressEscape(); + }); + + it('Search Results page - [C280413]', async () => { + await header.waitForSearchButton(); + await header.searchButton.click(); + await page.dataTable.waitForHeader(); + await header.waitForSearchBar(); + await header.searchForText(file); + expect(await browser.getTitle()).toContain(PAGE_TITLES.SEARCH); + }); + }); }); diff --git a/e2e/suites/authentication/login.test.ts b/e2e/suites/authentication/login.test.ts index 3e0d31c72..ca8e17d82 100755 --- a/e2e/suites/authentication/login.test.ts +++ b/e2e/suites/authentication/login.test.ts @@ -31,203 +31,173 @@ import { Utils } from '../../utilities/utils'; import { RepoClient } from '../../utilities/repo-client/repo-client'; describe('Login', () => { - const peopleApi = new RepoClient().people; - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); + const peopleApi = new RepoClient().people; + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + /* cspell:disable-next-line */ + const testUser = `user-${Utils.random()}@alfness`; + + const russianUser = { /* cspell:disable-next-line */ - const testUser = `user-${Utils.random()}@alfness`; + username: `пользвате${Utils.random()}`, + password: '密碼中國' + }; - const russianUser = { - /* cspell:disable-next-line */ - username: `пользвате${Utils.random()}`, - password: '密碼中國' - }; + const johnDoe = { + username: `user-${Utils.random()}`, + get password() { return this.username; }, + firstName: 'John', + lastName: 'Doe' + }; - const johnDoe = { - username: `user-${Utils.random()}`, - get password() { return this.username; }, - firstName: 'John', - lastName: 'Doe' - }; + const disabledUser = `user-${Utils.random()}`; + const testUser2 = { + username: `user-${Utils.random()}`, + password: 'user2 password' + }; + const newPassword = 'new password'; - const disabledUser = `user-${Utils.random()}`; - const testUser2 = { - username: `user-${Utils.random()}`, - password: 'user2 password' - }; - const newPassword = 'new password'; + beforeAll(async (done) => { + await Promise.all([ + peopleApi.createUser({ username: testUser }), + peopleApi.createUser(russianUser), + peopleApi.createUser(johnDoe), + peopleApi.createUser({ username: disabledUser }), + peopleApi.createUser(testUser2) + ]); + await peopleApi.disableUser(disabledUser); + done(); + }); - beforeAll(done => { - Promise - .all([ - peopleApi.createUser({ username: testUser }), - peopleApi.createUser(russianUser), - peopleApi.createUser(johnDoe), - peopleApi.createUser({ username: disabledUser }) - .then(() => peopleApi.disableUser(disabledUser)), - peopleApi.createUser(testUser2) - ]) - .then(done); + afterEach(async (done) => { + await logoutPage.load(); + await Utils.clearLocalStorage(); + done(); + }); + + xit(''); + + describe('general tests', () => { + beforeEach(async (done) => { + await loginPage.load(); + done(); }); - afterEach(done => { - logoutPage.load() - .then(() => Utils.clearLocalStorage()) - .then(done); + it('login page layout - [C213089]', async () => { + expect(await loginPage.login.usernameInput.isEnabled()).toBe(true, 'username input is not enabled'); + expect(await loginPage.login.passwordInput.isEnabled()).toBe(true, 'password input is not enabled'); + expect(await loginPage.login.submitButton.isEnabled()).toBe(false, 'SIGN IN button is enabled'); + expect(await loginPage.login.getPasswordVisibility()).toBe(false, 'Password is not hidden by default'); }); - xit(''); + it('change password visibility - [C213091]', async () => { + await loginPage.login.enterPassword('some password'); + expect(await loginPage.login.isPasswordShown()).toBe(false, 'password is visible'); + await loginPage.login.passwordVisibility.click(); + expect(await loginPage.login.getPasswordVisibility()).toBe(true, 'Password visibility not changed'); + expect(await loginPage.login.isPasswordShown()).toBe(true, 'password is not visible'); + }); + }); - describe('general tests', () => { - beforeEach(done => { - loginPage.load().then(done); - }); + describe('with valid credentials', () => { + it('navigate to "Personal Files" - [C213092]', async () => { + const { username } = johnDoe; - it('login page layout - [C213089]', () => { - expect(loginPage.login.usernameInput.isEnabled()).toBe(true, 'username input is not enabled'); - expect(loginPage.login.passwordInput.isEnabled()).toBe(true, 'password input is not enabled'); - expect(loginPage.login.submitButton.isEnabled()).toBe(false, 'SIGN IN button is enabled'); - expect(loginPage.login.getPasswordVisibility()).toBe(false, 'Password is not hidden by default'); - }); - - it('change password visibility - [C213091]', () => { - loginPage.login.enterPassword('some password'); - expect(loginPage.login.isPasswordShown()).toBe(false, 'password is visible'); - loginPage.login.passwordVisibility.click() - .then(() => { - expect(loginPage.login.getPasswordVisibility()).toBe(true, 'Password visibility not changed'); - expect(loginPage.login.isPasswordShown()).toBe(true, 'password is not visible'); - }); - }); + await loginPage.loginWith(username); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); }); - describe('with valid credentials', () => { - it('navigate to "Personal Files" - [C213092]', () => { - const { username } = johnDoe; + it(`displays user's name in header - [C213108]`, async () => { + const { userInfo } = new BrowsingPage(APP_ROUTES.PERSONAL_FILES).header; + const { username, firstName, lastName } = johnDoe; - loginPage.loginWith(username) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); - }); - }); - - it(`displays user's name in header - [C213108]`, () => { - const { userInfo } = new BrowsingPage(APP_ROUTES.PERSONAL_FILES).header; - const { username, firstName, lastName } = johnDoe; - - loginPage.loginWith(username) - .then(() => { - expect(userInfo.name).toEqual(`${firstName} ${lastName}`); - }); - }); - - it(`logs in with user having username containing "@" - [C213096]`, () => { - loginPage - .loginWith(testUser) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); - }); - }); - - it('logs in with user with non-latin characters - [C213097]', () => { - const { username, password } = russianUser; - - loginPage - .loginWith(username, password) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); - }); - }); - - it('redirects to Home Page when navigating to the Login page while already logged in - [C213107]', () => { - const { username } = johnDoe; - - loginPage - .loginWith(username) - .then(() => browser.get(APP_ROUTES.LOGIN) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); - }) - ); - }); - - it('redirects to Personal Files when pressing browser Back while already logged in - [C213109]', () => { - const { username } = johnDoe; - - loginPage - .loginWith(username) - .then(() => browser.navigate().back()) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); - }); - }); - - it('user is able to login after changing his password - [C213104]', () => { - loginPage.loginWith(testUser2.username, testUser2.password) - .then(() => logoutPage.load()) - .then(() => peopleApi.changePassword(testUser2.username, newPassword)) - .then(() => loginPage.loginWith(testUser2.username, newPassword)) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); - }); - }); + await loginPage.loginWith(username); + expect(userInfo.name).toEqual(`${firstName} ${lastName}`); }); - describe('with invalid credentials', () => { - const { login: loginComponent } = loginPage; - const { submitButton, errorMessage } = loginComponent; - - beforeEach(done => { - loginPage.load().then(done); - }); - - it('disabled submit button when password is empty - [C280072]', () => { - loginComponent.enterUsername('any-username'); - expect(submitButton.isEnabled()).toBe(false); - }); - - it('disabled submit button when username is empty - [C280070]', () => { - loginPage.login.enterPassword('any-password'); - expect(submitButton.isEnabled()).toBe(false); - }); - - it('shows error when entering nonexistent user - [C213093]', () => { - loginPage - .tryLoginWith('nonexistent-user', 'any-password') - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); - expect(errorMessage.isDisplayed()).toBe(true); - expect(errorMessage.getText()).toBe(`You've entered an unknown username or password`); - }); - }); - - it('shows error when entering invalid password - [C280071]', () => { - const { username } = johnDoe; - - loginPage - .tryLoginWith(username, 'incorrect-password') - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); - expect(errorMessage.isDisplayed()).toBe(true); - expect(errorMessage.getText()).toBe(`You've entered an unknown username or password`); - }); - }); - - it('unauthenticated user is redirected to Login page - [C213106]', () => { - browser.get(APP_ROUTES.PERSONAL_FILES) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); - }); - }); - - it('disabled user is not logged in - [C213100]', () => { - loginPage.tryLoginWith(disabledUser) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); - expect(errorMessage.isDisplayed()).toBe(true); - expect(errorMessage.getText()).toBe(`You've entered an unknown username or password`); - }); - }); + it(`logs in with user having username containing "@" - [C213096]`, async () => { + await loginPage.loginWith(testUser); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); }); + + it('logs in with user with non-latin characters - [C213097]', async () => { + const { username, password } = russianUser; + + await loginPage.loginWith(username, password); + expect(browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); + }); + + it('redirects to Home Page when navigating to the Login page while already logged in - [C213107]', async () => { + const { username } = johnDoe; + + await loginPage.loginWith(username); + await browser.get(APP_ROUTES.LOGIN); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); + }); + + it('redirects to Personal Files when pressing browser Back while already logged in - [C213109]', async () => { + const { username } = johnDoe; + + await loginPage.loginWith(username); + await browser.navigate().back(); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); + }); + + it('user is able to login after changing his password - [C213104]', async () => { + await loginPage.loginWith(testUser2.username, testUser2.password); + await logoutPage.load(); + await peopleApi.changePassword(testUser2.username, newPassword); + await loginPage.loginWith(testUser2.username, newPassword); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); + }); + }); + + describe('with invalid credentials', () => { + const { login: loginComponent } = loginPage; + const { submitButton, errorMessage } = loginComponent; + + beforeEach(async (done) => { + await loginPage.load(); + done(); + }); + + it('disabled submit button when password is empty - [C280072]', async () => { + await loginComponent.enterUsername('any-username'); + expect(await submitButton.isEnabled()).toBe(false, 'submit button is enabled'); + }); + + it('disabled submit button when username is empty - [C280070]', async () => { + await loginPage.login.enterPassword('any-password'); + expect(await submitButton.isEnabled()).toBe(false, 'submit button is enabled'); + }); + + it('shows error when entering nonexistent user - [C213093]', async () => { + await loginPage.tryLoginWith('nonexistent-user', 'any-password'); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); + expect(await errorMessage.isDisplayed()).toBe(true, 'error message is not displayed'); + expect(await errorMessage.getText()).toBe(`You've entered an unknown username or password`); + }); + + it('shows error when entering invalid password - [C280071]', async () => { + const { username } = johnDoe; + + await loginPage.tryLoginWith(username, 'incorrect-password'); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); + expect(await errorMessage.isDisplayed()).toBe(true, 'error message is not displayed'); + expect(await errorMessage.getText()).toBe(`You've entered an unknown username or password`); + }); + + it('unauthenticated user is redirected to Login page - [C213106]', async () => { + await browser.get(APP_ROUTES.PERSONAL_FILES); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); + }); + + it('disabled user is not logged in - [C213100]', async () => { + await loginPage.tryLoginWith(disabledUser); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); + expect(await errorMessage.isDisplayed()).toBe(true, 'error message is not displayed'); + expect(await errorMessage.getText()).toBe(`You've entered an unknown username or password`); + }); + }); }); diff --git a/e2e/suites/authentication/logout.test.ts b/e2e/suites/authentication/logout.test.ts index 523a303f7..1d0aabc7c 100755 --- a/e2e/suites/authentication/logout.test.ts +++ b/e2e/suites/authentication/logout.test.ts @@ -30,53 +30,48 @@ import { RepoClient } from '../../utilities/repo-client/repo-client'; import { APP_ROUTES } from '../../configs'; describe('Logout', () => { - const page = new BrowsingPage(); - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); + const page = new BrowsingPage(); + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); - const peopleApi = new RepoClient().people; + const peopleApi = new RepoClient().people; - const johnDoe = `user-${Utils.random()}`; + const johnDoe = `user-${Utils.random()}`; - beforeAll((done) => { - peopleApi - .createUser({ username: johnDoe }) - .then(done); - }); + beforeAll(async (done) => { + await peopleApi.createUser({ username: johnDoe }); + done(); + }); - beforeEach((done) => { - loginPage.loginWith(johnDoe).then(done); - }); + beforeEach(async (done) => { + await loginPage.loginWith(johnDoe); + done(); + }); - afterEach((done) => { - logoutPage.load().then(done); - }); + afterEach(async (done) => { + await logoutPage.load(); + done(); + }); - it('Sign out option is available - [C213143]', () => { - page.header.userInfo.openMenu() - .then(() => expect(page.header.userInfo.menu.isMenuItemPresent('Sign out')).toBe(true, 'Sign out option not displayed')); - }); + it('Sign out option is available - [C213143]', async () => { + await page.header.userInfo.openMenu(); + expect(await page.header.userInfo.menu.isMenuItemPresent('Sign out')).toBe(true, 'Sign out option not displayed'); + }); - it('redirects to Login page on sign out - [C213144]', () => { - page.signOut() - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); - }); - }); + it('redirects to Login page on sign out - [C213144]', async () => { + await page.signOut(); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); + }); - it('redirects to Login page when pressing browser Back after logout - [C213145]', () => { - page.signOut() - .then(() => browser.navigate().back()) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); - }); - }); + it('redirects to Login page when pressing browser Back after logout - [C213145]', async () => { + await page.signOut(); + await browser.navigate().back(); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); + }); - it('redirects to Login page when trying to access a part of the app after logout - [C213146]', () => { - page.signOut() - .then(() => page.load('/favorites')) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); - }); - }); + it('redirects to Login page when trying to access a part of the app after logout - [C213146]', async () => { + await page.signOut(); + await page.load('/favorites'); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.LOGIN); + }); }); diff --git a/e2e/suites/navigation/breadcrumb.test.ts b/e2e/suites/navigation/breadcrumb.test.ts index e7aefdf8f..12c9ff643 100755 --- a/e2e/suites/navigation/breadcrumb.test.ts +++ b/e2e/suites/navigation/breadcrumb.test.ts @@ -31,214 +31,191 @@ import { Utils } from '../../utilities/utils'; import { RepoClient } from '../../utilities/repo-client/repo-client'; describe('Breadcrumb', () => { - const username = `user-${Utils.random()}`; + const username = `user-${Utils.random()}`; - const parent = `parent-${Utils.random()}`; let parentId; - const subFolder1 = `subFolder1-${Utils.random()}`; let subFolder1Id; - const subFolder2 = `subFolder2-${Utils.random()}`; let subFolder2Id; - const fileName1 = `file1-${Utils.random()}.txt`; + const parent = `parent-${Utils.random()}`; let parentId; + const subFolder1 = `subFolder1-${Utils.random()}`; let subFolder1Id; + const subFolder2 = `subFolder2-${Utils.random()}`; let subFolder2Id; + const fileName1 = `file1-${Utils.random()}.txt`; - const siteName = `site-${Utils.random()}`; + const siteName = `site-${Utils.random()}`; - const parent2 = `parent2-${Utils.random()}`; let parent2Id; - const folder1 = `folder1-${Utils.random()}`; let folder1Id; - const folder1Renamed = `renamed-${Utils.random()}`; + const parent2 = `parent2-${Utils.random()}`; let parent2Id; + const folder1 = `folder1-${Utils.random()}`; let folder1Id; + const folder1Renamed = `renamed-${Utils.random()}`; - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const page = new BrowsingPage(); - const { breadcrumb } = page; + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const page = new BrowsingPage(); + const { breadcrumb } = page; - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; + const apis = { + admin: new RepoClient(), + user: new RepoClient(username, username) + }; - beforeAll(done => { - apis.admin.people.createUser({ username }) - .then(() => apis.user.nodes.createFolder(parent)).then(resp => parentId = resp.entry.id) - .then(() => apis.user.nodes.createFolder(subFolder1, parentId)).then(resp => subFolder1Id = resp.entry.id) - .then(() => apis.user.nodes.createFolder(subFolder2, subFolder1Id)).then(resp => subFolder2Id = resp.entry.id) - .then(() => apis.user.nodes.createFile(fileName1, subFolder2Id)) + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); + parentId = (await apis.user.nodes.createFolder(parent)).entry.id; + subFolder1Id = (await apis.user.nodes.createFolder(subFolder1, parentId)).entry.id; + subFolder2Id = (await apis.user.nodes.createFolder(subFolder2, subFolder1Id)).entry.id; + await apis.user.nodes.createFile(fileName1, subFolder2Id); - .then(() => apis.user.nodes.createFolder(parent2)).then(resp => parent2Id = resp.entry.id) - .then(() => apis.user.nodes.createFolder(folder1, parent2Id)).then(resp => folder1Id = resp.entry.id) + parent2Id = (await apis.user.nodes.createFolder(parent2)).entry.id; + folder1Id = (await apis.user.nodes.createFolder(folder1, parent2Id)).entry.id; - .then(() => apis.user.sites.createSite(siteName, SITE_VISIBILITY.PUBLIC)) - .then(() => apis.user.sites.getDocLibId(siteName)) - .then(resp => apis.user.nodes.createFolder(parent, resp)).then(resp => parentId = resp.entry.id) - .then(() => apis.user.nodes.createFolder(subFolder1, parentId)).then(resp => subFolder1Id = resp.entry.id) - .then(() => apis.user.nodes.createFolder(subFolder2, subFolder1Id)).then(resp => subFolder2Id = resp.entry.id) - .then(() => apis.user.nodes.createFile(fileName1, subFolder2Id)) + await apis.user.sites.createSite(siteName, SITE_VISIBILITY.PUBLIC); + const docLibId = await apis.user.sites.getDocLibId(siteName); + parentId = (await apis.user.nodes.createFolder(parent, docLibId)).entry.id; + subFolder1Id = (await apis.user.nodes.createFolder(subFolder1, parentId)).entry.id; + subFolder2Id = (await apis.user.nodes.createFolder(subFolder2, subFolder1Id)).entry.id; + await apis.user.nodes.createFile(fileName1, subFolder2Id); - .then(() => loginPage.loginWith(username)) - .then(done); + await loginPage.loginWith(username); + done(); + }); + + afterAll(async (done) => { + await Promise.all([ + apis.user.nodes.deleteNodeById(parentId), + apis.user.nodes.deleteNodeById(parent2Id), + apis.user.sites.deleteSite(siteName), + logoutPage.load() + ]); + done(); + }); + + it('Personal Files breadcrumb main node - [C260964]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + expect(await breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); + expect(await breadcrumb.getCurrentItemName()).toBe('Personal Files'); + }); + + it('File Libraries breadcrumb main node - [C260966]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); + expect(await breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); + expect(await breadcrumb.getCurrentItemName()).toBe('File Libraries'); + }); + + it('Recent Files breadcrumb main node - [C260971]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); + expect(await breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); + expect(await breadcrumb.getCurrentItemName()).toBe('Recent Files'); + }); + + it('Shared Files breadcrumb main node - [C260972]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); + expect(await breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); + expect(await breadcrumb.getCurrentItemName()).toBe('Shared Files'); + }); + + it('Favorites breadcrumb main node - [C260973]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); + expect(await breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); + expect(await breadcrumb.getCurrentItemName()).toBe('Favorites'); + }); + + it('Trash breadcrumb main node - [C260974]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); + expect(await breadcrumb.getCurrentItemName()).toBe('Trash'); + }); + + it('Personal Files breadcrumb for a folder hierarchy - [C260965]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await page.dataTable.waitForHeader(); + await page.dataTable.doubleClickOnRowByName(parent); + await page.dataTable.doubleClickOnRowByName(subFolder1); + await page.dataTable.doubleClickOnRowByName(subFolder2); + const expectedBreadcrumb = [ 'Personal Files', parent, subFolder1, subFolder2 ]; + expect(await breadcrumb.getAllItems()).toEqual(expectedBreadcrumb); + }); + + it('File Libraries breadcrumb for a folder hierarchy - [C260967]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); + await page.dataTable.waitForHeader(); + await page.dataTable.doubleClickOnRowByName(siteName); + await page.dataTable.doubleClickOnRowByName(parent); + await page.dataTable.doubleClickOnRowByName(subFolder1); + await page.dataTable.doubleClickOnRowByName(subFolder2); + const expectedItems = [ 'File Libraries', siteName, parent, subFolder1, subFolder2 ]; + expect(await breadcrumb.getAllItems()).toEqual(expectedItems); + }); + + it('User can navigate to any location by clicking on a step from the breadcrumb - [C213235]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await page.dataTable.waitForHeader(); + await page.dataTable.doubleClickOnRowByName(parent); + await page.dataTable.doubleClickOnRowByName(subFolder1); + await page.dataTable.doubleClickOnRowByName(subFolder2); + await breadcrumb.clickItem(subFolder1); + const expectedBreadcrumb = [ 'Personal Files', parent, subFolder1 ]; + expect(await breadcrumb.getAllItems()).toEqual(expectedBreadcrumb); + }); + + it('Tooltip appears on hover on a step in breadcrumb - [C213237]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await page.dataTable.waitForHeader(); + await page.dataTable.doubleClickOnRowByName(parent); + await page.dataTable.doubleClickOnRowByName(subFolder1); + await page.dataTable.doubleClickOnRowByName(subFolder2); + expect(await breadcrumb.getNthItemTooltip(3)).toEqual(subFolder1); + }); + + it('Breadcrumb updates correctly when folder is renamed - [C213238]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await page.dataTable.waitForHeader(); + await page.dataTable.doubleClickOnRowByName(parent2); + await page.dataTable.doubleClickOnRowByName(folder1); + await page.dataTable.wait(); + await apis.user.nodes.renameNode(folder1Id, folder1Renamed) + // .then(done => done) + await page.refresh(); + await page.dataTable.wait(); + expect(await breadcrumb.getCurrentItemName()).toEqual(folder1Renamed); + }); + + it('Browser back navigates to previous location regardless of breadcrumb steps - [C213240]', async () => { + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + await page.dataTable.waitForHeader(); + await page.dataTable.doubleClickOnRowByName(parent); + await page.dataTable.doubleClickOnRowByName(subFolder1); + await page.dataTable.doubleClickOnRowByName(subFolder2); + await page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + await page.dataTable.waitForEmptyState(); + await browser.navigate().back(); + const expectedBreadcrumb = [ 'Personal Files', parent, subFolder1, subFolder2 ]; + expect(await breadcrumb.getAllItems()).toEqual(expectedBreadcrumb); + }); + + // disabled cause of ACA-1039 + xdescribe('as admin', () => { + const user2 = 'a_user'; + const userFolder = `userFolder-${Utils.random()}`; let userFolderId; + const user2Api = new RepoClient(user2, user2); + + beforeAll(async (done) => { + await logoutPage.load(); + await apis.admin.people.createUser({ username: user2 }); + userFolderId = (await user2Api.nodes.createFolder(userFolder)).entry.id; + await loginPage.loginWithAdmin(); + done(); }); - afterAll(done => { - Promise.all([ - apis.user.nodes.deleteNodeById(parentId), - apis.user.nodes.deleteNodeById(parent2Id), - apis.user.sites.deleteSite(siteName), - logoutPage.load() - ]) - .then(done); + afterAll(async (done) => { + await Promise.all([ + user2Api.nodes.deleteNodeById(userFolderId), + logoutPage.load() + ]); + done(); }); - it('Personal Files breadcrumb main node - [C260964]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => { - expect(breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); - expect(breadcrumb.getCurrentItemName()).toBe('Personal Files'); - }); - }); - - it('File Libraries breadcrumb main node - [C260966]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES) - .then(() => { - expect(breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); - expect(breadcrumb.getCurrentItemName()).toBe('File Libraries'); - }); - }); - - it('Recent Files breadcrumb main node - [C260971]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES) - .then(() => { - expect(breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); - expect(breadcrumb.getCurrentItemName()).toBe('Recent Files'); - }); - }); - - it('Shared Files breadcrumb main node - [C260972]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES) - .then(() => { - expect(breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); - expect(breadcrumb.getCurrentItemName()).toBe('Shared Files'); - }); - }); - - it('Favorites breadcrumb main node - [C260973]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES) - .then(() => { - expect(breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); - expect(breadcrumb.getCurrentItemName()).toBe('Favorites'); - }); - }); - - it('Trash breadcrumb main node - [C260974]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH) - .then(() => { - expect(breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items'); - expect(breadcrumb.getCurrentItemName()).toBe('Trash'); - }); - }); - - it('Personal Files breadcrumb for a folder hierarchy - [C260965]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => page.dataTable.waitForHeader()) - .then(() => page.dataTable.doubleClickOnRowByName(parent)) - .then(() => page.dataTable.doubleClickOnRowByName(subFolder1)) - .then(() => page.dataTable.doubleClickOnRowByName(subFolder2)) - .then(() => { - const expectedBreadcrumb = [ 'Personal Files', parent, subFolder1, subFolder2 ]; - expect(breadcrumb.getAllItems()).toEqual(expectedBreadcrumb); - }); - }); - - it('File Libraries breadcrumb for a folder hierarchy - [C260967]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES) - .then(() => page.dataTable.waitForHeader()) - .then(() => page.dataTable.doubleClickOnRowByName(siteName)) - .then(() => page.dataTable.doubleClickOnRowByName(parent)) - .then(() => page.dataTable.doubleClickOnRowByName(subFolder1)) - .then(() => page.dataTable.doubleClickOnRowByName(subFolder2)) - .then(() => { - const expectedItems = [ 'File Libraries', siteName, parent, subFolder1, subFolder2 ]; - expect(breadcrumb.getAllItems()).toEqual(expectedItems); - }); - }); - - it('User can navigate to any location by clicking on a step from the breadcrumb - [C213235]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => page.dataTable.waitForHeader()) - .then(() => page.dataTable.doubleClickOnRowByName(parent)) - .then(() => page.dataTable.doubleClickOnRowByName(subFolder1)) - .then(() => page.dataTable.doubleClickOnRowByName(subFolder2)) - .then(() => breadcrumb.clickItem(subFolder1)) - .then(() => { - const expectedBreadcrumb = [ 'Personal Files', parent, subFolder1 ]; - expect(breadcrumb.getAllItems()).toEqual(expectedBreadcrumb); - }); - }); - - it('Tooltip appears on hover on a step in breadcrumb - [C213237]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => page.dataTable.waitForHeader()) - .then(() => page.dataTable.doubleClickOnRowByName(parent)) - .then(() => page.dataTable.doubleClickOnRowByName(subFolder1)) - .then(() => page.dataTable.doubleClickOnRowByName(subFolder2)) - .then(() => { - expect(breadcrumb.getNthItemTooltip(3)).toEqual(subFolder1); - }); - }); - - it('Breadcrumb updates correctly when folder is renamed - [C213238]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => page.dataTable.waitForHeader()) - .then(() => page.dataTable.doubleClickOnRowByName(parent2)) - .then(() => page.dataTable.doubleClickOnRowByName(folder1)) - .then(() => page.dataTable.wait()) - .then(() => apis.user.nodes.renameNode(folder1Id, folder1Renamed).then(done => done)) - .then(() => page.refresh()) - .then(() => page.dataTable.wait()) - .then(() => { - expect(breadcrumb.getCurrentItemName()).toEqual(folder1Renamed); - }); - }); - - it('Browser back navigates to previous location regardless of breadcrumb steps - [C213240]', () => { - page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => page.dataTable.waitForHeader()) - .then(() => page.dataTable.doubleClickOnRowByName(parent)) - .then(() => page.dataTable.doubleClickOnRowByName(subFolder1)) - .then(() => page.dataTable.doubleClickOnRowByName(subFolder2)) - .then(() => page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH)) - .then(() => page.dataTable.waitForEmptyState()) - .then(() => browser.navigate().back()) - .then(() => { - const expectedBreadcrumb = [ 'Personal Files', parent, subFolder1, subFolder2 ]; - expect(breadcrumb.getAllItems()).toEqual(expectedBreadcrumb); - }); - }); - - // disabled cause of ACA-1039 - xdescribe('as admin', () => { - const user2 = 'a_user'; - const userFolder = `userFolder-${Utils.random()}`; let userFolderId; - const user2Api = new RepoClient(user2, user2); - - beforeAll(done => { - logoutPage.load() - .then(() => apis.admin.people.createUser({ username: user2 })) - .then(() => user2Api.nodes.createFolder(userFolder).then(resp => userFolderId = resp.entry.id)) - .then(() => loginPage.loginWithAdmin()) - .then(done); - }); - - afterAll(done => { - Promise.all([ - user2Api.nodes.deleteNodeById(userFolderId), - logoutPage.load() - ]) - .then(done); - }); - - xit(`Breadcrumb on navigation to a user's home - [C260970]`, () => { - page.dataTable.doubleClickOnRowByName('User Homes') - .then(() => page.dataTable.doubleClickOnRowByName(user2)) - .then(() => expect(breadcrumb.getAllItems()).toEqual([ 'Personal Files', 'User Homes', user2 ])) - .then(() => page.dataTable.doubleClickOnRowByName(userFolder)) - .then(() => expect(breadcrumb.getAllItems()).toEqual([ 'Personal Files', 'User Homes', user2, userFolder ])); - }); + xit(`Breadcrumb on navigation to a user's home - [C260970]`, async () => { + await page.dataTable.doubleClickOnRowByName('User Homes'); + await page.dataTable.doubleClickOnRowByName(user2); + expect(await breadcrumb.getAllItems()).toEqual([ 'Personal Files', 'User Homes', user2 ]); + await page.dataTable.doubleClickOnRowByName(userFolder); + expect(await breadcrumb.getAllItems()).toEqual([ 'Personal Files', 'User Homes', user2, userFolder ]); }); + }); }); diff --git a/e2e/suites/navigation/sidebar.test.ts b/e2e/suites/navigation/sidebar.test.ts index 50ca23c87..f943cb283 100755 --- a/e2e/suites/navigation/sidebar.test.ts +++ b/e2e/suites/navigation/sidebar.test.ts @@ -29,117 +29,95 @@ import { APP_ROUTES, SIDEBAR_LABELS } from '../../configs'; import { LoginPage, LogoutPage, BrowsingPage } from '../../pages/pages'; describe('Sidebar', () => { - const loginPage = new LoginPage(); - const logoutPage = new LogoutPage(); - const page = new BrowsingPage(); - const { sidenav } = page; + const loginPage = new LoginPage(); + const logoutPage = new LogoutPage(); + const page = new BrowsingPage(); + const { sidenav } = page; - beforeAll(done => { - loginPage.loginWithAdmin().then(done); - }); + beforeAll(async (done) => { + await loginPage.loginWithAdmin(); + done(); + }); - afterAll(done => { - logoutPage.load().then(done); - }); + afterAll(async (done) => { + await logoutPage.load(); + done(); + }); - it('has "Personal Files" as default - [C217149]', () => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); - expect(sidenav.isActiveByLabel('Personal Files')).toBe(true, 'Active link'); - }); + it('has "Personal Files" as default - [C217149]', async () => { + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); + expect(await sidenav.isActiveByLabel('Personal Files')).toBe(true, 'Active link'); + }); - it('navigates to "File Libraries" - [C217150]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.FILE_LIBRARIES); - expect(sidenav.isActiveByLabel(SIDEBAR_LABELS.FILE_LIBRARIES)).toBe(true); - }); - }); + it('navigates to "File Libraries" - [C217150]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.FILE_LIBRARIES); + expect(await sidenav.isActiveByLabel(SIDEBAR_LABELS.FILE_LIBRARIES)).toBe(true); + }); - it('navigates to "Personal Files" - [C280409]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); - expect(sidenav.isActiveByLabel(SIDEBAR_LABELS.PERSONAL_FILES)).toBe(true); - }); - }); + it('navigates to "Personal Files" - [C280409]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES); + expect(await sidenav.isActiveByLabel(SIDEBAR_LABELS.PERSONAL_FILES)).toBe(true); + }); - it('navigates to "Shared Files" - [C213110]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.SHARED_FILES); - expect(sidenav.isActiveByLabel(SIDEBAR_LABELS.SHARED_FILES)).toBe(true); - }); - }); + it('navigates to "Shared Files" - [C213110]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.SHARED_FILES); + expect(await sidenav.isActiveByLabel(SIDEBAR_LABELS.SHARED_FILES)).toBe(true); + }); - it('navigates to "Recent Files" - [C213166]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.RECENT_FILES); - expect(sidenav.isActiveByLabel(SIDEBAR_LABELS.RECENT_FILES)).toBe(true); - }); - }); + it('navigates to "Recent Files" - [C213166]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.RECENT_FILES); + expect(await sidenav.isActiveByLabel(SIDEBAR_LABELS.RECENT_FILES)).toBe(true); + }); - it('navigates to "Favorites" - [C213225]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.FAVORITES); - expect(sidenav.isActiveByLabel(SIDEBAR_LABELS.FAVORITES)).toBe(true); - }); - }); + it('navigates to "Favorites" - [C213225]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.FAVORITES); + expect(await sidenav.isActiveByLabel(SIDEBAR_LABELS.FAVORITES)).toBe(true); + }); - it('navigates to "Trash" - [C213216]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH) - .then(() => { - expect(browser.getCurrentUrl()).toContain(APP_ROUTES.TRASHCAN); - expect(sidenav.isActiveByLabel(SIDEBAR_LABELS.TRASH)).toBe(true); - }); - }); + it('navigates to "Trash" - [C213216]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.TRASHCAN); + expect(await sidenav.isActiveByLabel(SIDEBAR_LABELS.TRASH)).toBe(true); + }); - // TODO: incomplete test - xit('Personal Files tooltip - [C217151]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) - .then(() => { - expect(sidenav.getLinkTooltip(SIDEBAR_LABELS.PERSONAL_FILES)).toContain('View your Personal Files'); - }); - }); + // TODO: incomplete test + xit('Personal Files tooltip - [C217151]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES); + expect(await sidenav.getLinkTooltip(SIDEBAR_LABELS.PERSONAL_FILES)).toContain('View your Personal Files'); + }); - // TODO: incomplete test - xit('File Libraries tooltip - [C217152]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES) - .then(() => { - expect(sidenav.getLinkTooltip(SIDEBAR_LABELS.FILE_LIBRARIES)).toContain('Access File Libraries'); - }); - }); + // TODO: incomplete test + xit('File Libraries tooltip - [C217152]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FILE_LIBRARIES); + expect(await sidenav.getLinkTooltip(SIDEBAR_LABELS.FILE_LIBRARIES)).toContain('Access File Libraries'); + }); - // TODO: incomplete test - xit('Shared Files tooltip - [C213111]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES) - .then(() => { - expect(sidenav.getLinkTooltip(SIDEBAR_LABELS.SHARED_FILES)).toContain('View files that have been shared'); - }); - }); + // TODO: incomplete test + xit('Shared Files tooltip - [C213111]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES); + expect(await sidenav.getLinkTooltip(SIDEBAR_LABELS.SHARED_FILES)).toContain('View files that have been shared'); + }); - // TODO: incomplete test - xit('Recent Files tooltip - [C213167]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES) - .then(() => { - expect(sidenav.getLinkTooltip(SIDEBAR_LABELS.RECENT_FILES)).toContain('View files you recently edited'); - }); - }); + // TODO: incomplete test + xit('Recent Files tooltip - [C213167]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.RECENT_FILES); + expect(await sidenav.getLinkTooltip(SIDEBAR_LABELS.RECENT_FILES)).toContain('View files you recently edited'); + }); - // TODO: incomplete test - xit('Favorites tooltip - [C217153]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES) - .then(() => { - expect(sidenav.getLinkTooltip(SIDEBAR_LABELS.FAVORITES)).toContain('View your favorite files and folders'); - }); - }); + // TODO: incomplete test + xit('Favorites tooltip - [C217153]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.FAVORITES); + expect(await sidenav.getLinkTooltip(SIDEBAR_LABELS.FAVORITES)).toContain('View your favorite files and folders'); + }); - // TODO: incomplete test - xit('Trash tooltip - [C217154]', () => { - sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH) - .then(() => { - expect(sidenav.getLinkTooltip(SIDEBAR_LABELS.TRASH)).toContain('View deleted files in the trash'); - }); - }); + // TODO: incomplete test + xit('Trash tooltip - [C217154]', async () => { + await sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH); + expect(await sidenav.getLinkTooltip(SIDEBAR_LABELS.TRASH)).toContain('View deleted files in the trash'); + }); });