diff --git a/e2e/components/data-table/data-table.ts b/e2e/components/data-table/data-table.ts index fc130716b..69e485ca8 100755 --- a/e2e/components/data-table/data-table.ts +++ b/e2e/components/data-table/data-table.ts @@ -48,7 +48,9 @@ export class DataTable extends Component { nameLink: '.adf-datatable-link', libraryRole: 'adf-library-role-column', - selectedIcon: '.mat-icon', + selectedIcon: '.mat-icon[class*="selected"]', + lockIcon: 'img[src*="lock"]', + lockOwner: '.aca-locked-by', emptyListContainer: 'div.adf-no-content-container', emptyFolderDragAndDrop: '.adf-empty-list_template .adf-empty-folder', @@ -60,9 +62,7 @@ export class DataTable extends Component { head: ElementFinder = this.component.element(by.css(DataTable.selectors.head)); body: ElementFinder = this.component.element(by.css(DataTable.selectors.body)); - cell = by.css(DataTable.selectors.cell); - locationLink = by.css(DataTable.selectors.locationLink); - nameLink: ElementFinder = browser.element(by.css(DataTable.selectors.nameLink)); + emptyList: ElementFinder = this.component.element(by.css(DataTable.selectors.emptyListContainer)); emptyFolderDragAndDrop: ElementFinder = this.component.element(by.css(DataTable.selectors.emptyFolderDragAndDrop)); emptyListTitle: ElementFinder = this.component.element(by.css(DataTable.selectors.emptyListTitle)); @@ -160,7 +160,8 @@ export class DataTable extends Component { getRowByName(name: string, location: string = '') { if (location) { return this.body.all(by.cssContainingText(DataTable.selectors.row, name)) - .filter(async (elem) => await browser.isElementPresent(elem.element(by.cssContainingText(DataTable.selectors.cell, location)))); + .filter(async (elem) => await browser.isElementPresent(elem.element(by.cssContainingText(DataTable.selectors.cell, location)))) + .first(); } return this.body.element(by.cssContainingText(DataTable.selectors.row, name)); } @@ -181,8 +182,27 @@ export class DataTable extends Component { return await this.getRowNameCellText(name).getAttribute('title'); } - async hasCheckMarkIcon(itemName: string) { - return await this.getRowByName(itemName).element(by.css(DataTable.selectors.selectedIcon)).isPresent(); + async hasCheckMarkIcon(itemName: string, location: string = '') { + const row = this.getRowByName(itemName, location); + return await row.element(by.css(DataTable.selectors.selectedIcon)).isPresent(); + } + + async hasLockIcon(itemName: string, location: string = '') { + const row = this.getRowByName(itemName, location); + return await row.element(by.css(DataTable.selectors.lockIcon)).isPresent(); + } + + async hasLockOwnerInfo(itemName: string, location: string = '') { + const row = this.getRowByName(itemName, location); + return await row.element(by.css(DataTable.selectors.lockOwner)).isPresent(); + } + + async getLockOwner(itemName: string, location: string = '') { + if (await this.hasLockOwnerInfo(itemName, location)) { + const row = this.getRowByName(itemName, location); + return await row.$(DataTable.selectors.lockOwner).$('.locked_by--name').getText(); + } + return ''; } getNameLink(itemName: string) { @@ -252,7 +272,7 @@ export class DataTable extends Component { } getItemLocationEl(name: string) { - return this.getRowByName(name).element(this.locationLink); + return this.getRowByName(name).element(by.css(DataTable.selectors.locationLink)); } async getItemLocation(name: string) { @@ -330,7 +350,7 @@ export class DataTable extends Component { async getEntireDataTableText() { return this.getRows().map((row) => { - return row.all(this.cell).map(async cell => await cell.getText()); + return row.all(by.css(DataTable.selectors.cell)).map(async cell => await cell.getText()); }); } diff --git a/e2e/components/dialog/upload-new-version-dialog.ts b/e2e/components/dialog/upload-new-version-dialog.ts new file mode 100755 index 000000000..24d6dc7f7 --- /dev/null +++ b/e2e/components/dialog/upload-new-version-dialog.ts @@ -0,0 +1,121 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { ElementFinder, by, browser, ExpectedConditions as EC } from 'protractor'; +import { BROWSER_WAIT_TIMEOUT } from '../../configs'; +import { Component } from '../component'; +import { Utils } from '../../utilities/utils'; + +export class UploadNewVersionDialog extends Component { + private static selectors = { + root: '.aca-node-version-upload-dialog', + + title: '.mat-dialog-title', + content: '.mat-dialog-content', + button: '.mat-button', + + radioButton: `.mat-radio-label`, + + descriptionTextArea: 'textarea' + }; + + title: ElementFinder = this.component.element(by.css(UploadNewVersionDialog.selectors.title)); + content: ElementFinder = this.component.element(by.css(UploadNewVersionDialog.selectors.content)); + cancelButton: ElementFinder = this.component.element(by.cssContainingText(UploadNewVersionDialog.selectors.button, 'Cancel')); + uploadButton: ElementFinder = this.component.element(by.cssContainingText(UploadNewVersionDialog.selectors.button, 'Upload')); + + majorOption: ElementFinder = this.component.element(by.cssContainingText(UploadNewVersionDialog.selectors.radioButton, 'Major')); + minorOption: ElementFinder = this.component.element(by.cssContainingText(UploadNewVersionDialog.selectors.radioButton, 'Minor')); + + description: ElementFinder = this.component.element(by.css(UploadNewVersionDialog.selectors.descriptionTextArea)); + + constructor(ancestor?: ElementFinder) { + super(UploadNewVersionDialog.selectors.root, ancestor); + } + + async waitForDialogToClose() { + return await browser.wait(EC.stalenessOf(this.title), BROWSER_WAIT_TIMEOUT); + } + + async isDialogOpen() { + return await browser.$(UploadNewVersionDialog.selectors.root).isDisplayed(); + } + + async getTitle() { + return await this.title.getText(); + } + + async getText() { + return await this.content.getText(); + } + + + async isDescriptionDisplayed() { + return await this.description.isDisplayed(); + } + + async isMinorOptionDisplayed() { + return await this.minorOption.isDisplayed(); + } + + async isMajorOptionDisplayed() { + return await this.majorOption.isDisplayed(); + } + + async isCancelButtonEnabled() { + return this.cancelButton.isEnabled(); + } + + async isUploadButtonEnabled() { + return this.uploadButton.isEnabled(); + } + + + async clickCancel() { + await this.cancelButton.click(); + await this.waitForDialogToClose(); + } + + async clickUpload() { + await this.uploadButton.click(); + await this.waitForDialogToClose(); + } + + + async clickMajor() { + return await this.majorOption.click(); + } + + async clickMinor() { + return await this.minorOption.click(); + } + + + async enterDescription(description: string) { + await this.description.clear(); + await Utils.typeInField(this.description, description); + } + +} diff --git a/e2e/components/menu/menu.ts b/e2e/components/menu/menu.ts index a805a1f6b..dc62df128 100755 --- a/e2e/components/menu/menu.ts +++ b/e2e/components/menu/menu.ts @@ -61,6 +61,7 @@ export class Menu extends Component { leaveAction: ElementFinder = this.component.element(by.cssContainingText(Menu.selectors.item, 'Leave')); managePermissionsAction: ElementFinder = this.component.element(by.cssContainingText(Menu.selectors.item, 'Permissions')); manageVersionsAction: ElementFinder = this.component.element(by.cssContainingText(Menu.selectors.item, 'Manage Versions')); + uploadNewVersionAction: ElementFinder = this.component.element(by.cssContainingText(Menu.selectors.item, 'Upload new version')); moveAction: ElementFinder = this.component.element(by.cssContainingText(Menu.selectors.item, 'Move')); permanentDeleteAction: ElementFinder = this.component.element(by.cssContainingText(Menu.selectors.item, 'Permanently delete')); restoreAction: ElementFinder = this.component.element(by.cssContainingText(Menu.selectors.item, 'Restore')); @@ -251,6 +252,10 @@ export class Menu extends Component { return await this.manageVersionsAction.isPresent(); } + async isUploadNewVersionPresent() { + return await this.uploadNewVersionAction.isPresent(); + } + async isFavoritePresent() { return await this.favoriteAction.isPresent(); } diff --git a/e2e/components/toolbar/toolbar.ts b/e2e/components/toolbar/toolbar.ts index 2fecb66c4..ed1ff9cf7 100755 --- a/e2e/components/toolbar/toolbar.ts +++ b/e2e/components/toolbar/toolbar.ts @@ -217,6 +217,21 @@ export class Toolbar extends Component { return await this.menu.clickMenuItem('Copy'); } + async clickMoreActionsEditOffline() { + await this.openMoreMenu(); + return await this.menu.clickMenuItem('Edit offline'); + } + + async clickMoreActionsCancelEditing() { + await this.openMoreMenu(); + return await this.menu.clickMenuItem('Cancel editing'); + } + + async clickMoreActionsUploadNewVersion() { + await this.openMoreMenu(); + return await this.menu.clickMenuItem('Upload new version'); + } + async clickFullScreen() { return await this.fullScreenButton.click(); diff --git a/e2e/configs.ts b/e2e/configs.ts index 30a79b28f..75d218fc4 100755 --- a/e2e/configs.ts +++ b/e2e/configs.ts @@ -109,7 +109,9 @@ export const SITE_ROLES = { export const FILES = { docxFile: 'file-docx.docx', + docxFile2: 'file2-docx.docx', xlsxFile: 'file-xlsx.xlsx', + xlsxFile2: 'file2-xlsx.xlsx', pdfFile: 'file-pdf.pdf', unsupportedFile: 'file_unsupported.3DS' }; diff --git a/e2e/resources/test-files/file2-docx.docx b/e2e/resources/test-files/file2-docx.docx new file mode 100644 index 000000000..c0d0614a8 Binary files /dev/null and b/e2e/resources/test-files/file2-docx.docx differ diff --git a/e2e/resources/test-files/file2-xlsx.xlsx b/e2e/resources/test-files/file2-xlsx.xlsx new file mode 100644 index 000000000..3039a7cdc Binary files /dev/null and b/e2e/resources/test-files/file2-xlsx.xlsx differ diff --git a/e2e/suites/actions/context-menu-multiple-selection.test.ts b/e2e/suites/actions/context-menu-multiple-selection.test.ts index 7684136db..6e37b01e5 100755 --- a/e2e/suites/actions/context-menu-multiple-selection.test.ts +++ b/e2e/suites/actions/context-menu-multiple-selection.test.ts @@ -175,9 +175,10 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297627]', async () => { await dataTable.selectMultipleItems([fileLocked1, fileLocked2]); await dataTable.rightClickOnMultipleSelection(); @@ -190,6 +191,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); it('correct actions appear when multiple folders are selected - [C280632]', async () => { @@ -206,6 +208,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); it('correct actions appear when both files and folders are selected - [C280631]', async () => { @@ -222,6 +225,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); }); @@ -253,9 +257,10 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297628]', async () => { await dataTable.selectMultipleItems([ fileLocked1Site, fileLocked2Site ]); await dataTable.rightClickOnMultipleSelection(); @@ -269,6 +274,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); it('correct actions appear when multiple folders are selected - [C280574]', async () => { @@ -285,6 +291,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); it('correct actions appear when both files and folders are selected - [C280642]', async () => { @@ -301,6 +308,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); }); @@ -331,9 +339,10 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is not displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297629]', async () => { await dataTable.selectMultipleItems([ fileLocked1, fileLocked2 ]); await dataTable.rightClickOnMultipleSelection(); @@ -347,6 +356,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is not displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); }); @@ -377,9 +387,10 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297630]', async () => { await dataTable.selectMultipleItems([ fileLocked1, fileLocked2 ]); await dataTable.rightClickOnMultipleSelection(); @@ -393,6 +404,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); }); @@ -423,9 +435,10 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297631]', async () => { await dataTable.selectMultipleItems([ fileLocked1, fileLocked2 ]); await dataTable.rightClickOnMultipleSelection(); @@ -439,6 +452,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); it('correct actions appear when multiple folders are selected - [C280664]', async () => { @@ -455,6 +469,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); it('correct actions appear when both files and folders are selected - [C280657]', async () => { @@ -471,6 +486,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); }); @@ -503,6 +519,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await contextMenu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); it('correct actions appear when multiple folders are selected - [C286274]', async () => { @@ -521,6 +538,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await contextMenu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); it('correct actions appear when both files and folders are selected - [C286275]', async () => { @@ -539,6 +557,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await contextMenu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); }); @@ -571,9 +590,10 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297632]', async () => { await searchInput.clickSearchButton(); await searchInput.checkOnlyFiles(); await searchInput.searchForTextAndCloseSearchOptions('my-inSite-file'); @@ -590,6 +610,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); it('correct actions appear when multiple folders are selected - [C291832]', async () => { @@ -609,6 +630,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); }); it('correct actions appear when both files and folders are selected - [C291833]', async () => { @@ -628,6 +650,7 @@ describe('Context menu actions - multiple selection : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version 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 b20e5b0be..02e79d066 100755 --- a/e2e/suites/actions/context-menu-single-selection.test.ts +++ b/e2e/suites/actions/context-menu-single-selection.test.ts @@ -189,12 +189,13 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileUser}`); expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${fileUser}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions is not displayed for ${fileUser}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileUser}`); expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileUser}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileUser}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileUser}`); }); - it('Context menu has the correct actions for a locked file - []', async () => { + it('Context menu has the correct actions for a locked file - [C297633]', async () => { await dataTable.rightClickOnItem(fileLocked); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${fileLocked}`); @@ -207,6 +208,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileLocked}`); expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${fileLocked}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions is not displayed for ${fileLocked}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileLocked}`); expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileLocked}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileLocked}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileLocked}`); @@ -224,6 +226,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${folderUser}`); expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folderUser}`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed for ${folderUser}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folderUser}`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folderUser}`); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${folderUser}`); expect(await contextMenu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed for ${folderUser}`); @@ -257,12 +260,13 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileSiteUser}`); expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${fileSiteUser}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions not displayed for ${fileSiteUser}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version not displayed for ${fileSiteUser}`); expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileSiteUser}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileSiteUser}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileSiteUser}`); }); - it('Context menu has the correct actions for a locked file - []', async () => { + it('Context menu has the correct actions for a locked file - [C297634]', async () => { await dataTable.rightClickOnItem(fileLockedInSite); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is not displayed for ${fileLockedInSite}`); @@ -275,6 +279,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileLockedInSite}`); expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${fileLockedInSite}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions not displayed for ${fileLockedInSite}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version not displayed for ${fileLockedInSite}`); expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileLockedInSite}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileLockedInSite}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileLockedInSite}`); @@ -292,6 +297,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${folderSiteUser}`); expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folderSiteUser}`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions displayed for ${folderSiteUser}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version displayed for ${folderSiteUser}`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folderSiteUser}`); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${folderSiteUser}`); expect(await contextMenu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed for ${folderSiteUser}`); @@ -413,12 +419,13 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileUser}`); expect(await contextMenu.isSharedLinkSettingsPresent()).toBe(true, `Shared link settings is not displayed for ${fileUser}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions not displayed for ${fileUser}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version not displayed for ${fileUser}`); expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileUser}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileUser}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileUser}`); }); - it('Context menu has the correct actions for a locked file - []', async () => { + it('Context menu has the correct actions for a locked file - [C297635]', async () => { await dataTable.rightClickOnItem(fileLocked); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${fileLocked}`); @@ -432,6 +439,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileLocked}`); expect(await contextMenu.isSharedLinkSettingsPresent()).toBe(true, `Shared link settings is not displayed for ${fileLocked}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions not displayed for ${fileLocked}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version not displayed for ${fileLocked}`); expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileLocked}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileLocked}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileLocked}`); @@ -463,12 +471,13 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileUser}`); expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${fileUser}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions not displayed for ${fileUser}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version not displayed for ${fileUser}`); expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileUser}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileUser}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileUser}`); }); - it('Context menu has the correct actions for a locked file - []', async () => { + it('Context menu has the correct actions for a locked file - [C297636]', async () => { await dataTable.rightClickOnItem(fileLocked); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${fileLocked}`); @@ -481,6 +490,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileLocked}`); expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${fileLocked}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions not displayed for ${fileLocked}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version not displayed for ${fileLocked}`); expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileLocked}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileLocked}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileLocked}`); @@ -513,11 +523,12 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileUser}`); expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${fileUser}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions is not displayed for ${fileUser}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileUser}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileUser}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileUser}`); }); - it('Context menu has the correct actions for a locked file - []', async () => { + it('Context menu has the correct actions for a locked file - [C297637]', async () => { await dataTable.rightClickOnItem(fileLocked); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${fileLocked}`); @@ -531,6 +542,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileLocked}`); expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${fileLocked}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions is not displayed for ${fileLocked}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileLocked}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileLocked}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileLocked}`); }); @@ -546,6 +558,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${folderUser}`); expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folderUser}`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed for ${folderUser}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folderUser}`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folderUser}`); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${folderUser}`); expect(await contextMenu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed for ${folderUser}`); @@ -577,6 +590,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${fileInTrash}`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${fileInTrash}`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed for ${fileInTrash}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${fileInTrash}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileInTrash}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileInTrash}`); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${fileInTrash}`); @@ -596,6 +610,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${folderInTrash}`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folderInTrash}`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed for ${folderInTrash}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folderInTrash}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${folderInTrash}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${folderInTrash}`); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${folderInTrash}`); @@ -630,12 +645,13 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${fileSiteUser}`); expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${fileSiteUser}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions not displayed for ${fileSiteUser}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version not displayed for ${fileSiteUser}`); expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileSiteUser}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileSiteUser}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileSiteUser}`); }); - it('Context menu has the correct actions for a locked file - []', async () => { + it('Context menu has the correct actions for a locked file - [C297638]', async () => { await searchInput.clickSearchButton(); await searchInput.checkOnlyFiles(); await searchInput.searchForTextAndCloseSearchOptions(fileLocked); @@ -651,6 +667,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${fileLocked}`); expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${fileLocked}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions not displayed for ${fileLocked}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version not displayed for ${fileLocked}`); expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileLocked}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileLocked}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileLocked}`); @@ -671,6 +688,7 @@ describe('Context menu actions - single selection : ', () => { expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${folderSiteUser}`); expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folderSiteUser}`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions displayed for ${folderSiteUser}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version displayed for ${folderSiteUser}`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folderSiteUser}`); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${folderSiteUser}`); expect(await contextMenu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed for ${folderSiteUser}`); diff --git a/e2e/suites/actions/edit-offline.test.ts b/e2e/suites/actions/edit-offline.test.ts new file mode 100755 index 000000000..889d0f137 --- /dev/null +++ b/e2e/suites/actions/edit-offline.test.ts @@ -0,0 +1,270 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { LoginPage, BrowsingPage } from '../../pages/pages'; +import { FILES } from '../../configs'; +import { RepoClient } from '../../utilities/repo-client/repo-client'; +import { Utils } from '../../utilities/utils'; + +describe('Edit offline', () => { + const username = `user-${Utils.random()}`; + + const file1 = `file1-${Utils.random()}.docx`; let file1Id; + const fileLocked = `file-locked-${Utils.random()}.docx`; let fileLockedId; + const fileLocked2 = `file-locked2-${Utils.random()}.docx`; let fileLocked2Id; + + const parentPF = `parentPersonal-${Utils.random()}`; let parentPFId; + const parentSF = `parentShared-${Utils.random()}`; let parentSFId; + const parentRF = `parentRecent-${Utils.random()}`; let parentRFId; + const parentFav = `parentFav-${Utils.random()}`; let parentFavId; + + const apis = { + admin: new RepoClient(), + user: new RepoClient(username, username) + }; + + const loginPage = new LoginPage(); + const page = new BrowsingPage(); + const { dataTable, toolbar } = page; + + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); + + parentPFId = (await apis.user.nodes.createFolder(parentPF)).entry.id; + parentSFId = (await apis.user.nodes.createFolder(parentSF)).entry.id; + parentRFId = (await apis.user.nodes.createFolder(parentRF)).entry.id; + parentFavId = (await apis.user.nodes.createFolder(parentFav)).entry.id; + + done(); + }); + + afterAll(async (done) => { + await apis.user.nodes.deleteNodeById(parentPFId); + await apis.user.nodes.deleteNodeById(parentSFId); + await apis.user.nodes.deleteNodeById(parentRFId); + await apis.user.nodes.deleteNodeById(parentFavId); + done(); + }); + + describe('on Personal Files', () => { + beforeAll(async (done) => { + file1Id = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentPFId, file1)).entry.id; + fileLockedId = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentPFId, fileLocked)).entry.id; + fileLocked2Id = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentPFId, fileLocked2)).entry.id; + + await apis.user.nodes.lockFile(fileLockedId); + await apis.user.nodes.lockFile(fileLocked2Id); + + await loginPage.loginWith(username); + done(); + }); + + beforeEach(async (done) => { + await page.clickPersonalFilesAndWait(); + await dataTable.doubleClickOnRowByName(parentPF); + done(); + }); + + afterEach(async (done) => { + await Utils.pressEscape(); + done(); + }); + + it('File is locked and downloaded when clicking Edit Offline - [C297538]', async () => { + await dataTable.selectItem(file1); + await toolbar.clickMoreActionsEditOffline(); + + expect(await Utils.fileExistsOnOS(file1)).toBe(true, 'File not found in download location'); + expect(await apis.user.nodes.isFileLockedWrite(file1Id)).toBe(true, `${file1} is not locked`); + }); + + it('Lock information is displayed - [C297539]', async () => { + expect(await dataTable.isItemPresent(fileLocked2)).toBe(true, `${fileLocked2} is not displayed`); + expect(await dataTable.hasLockIcon(fileLocked2)).toBe(true, `${fileLocked2} does not have a lock icon`); + expect(await dataTable.getLockOwner(fileLocked2)).toContain(username, `${fileLocked2} does not have correct lock owner info`); + }); + + it('Cancel Editing unlocks the file - [C297540]', async () => { + await dataTable.selectItem(fileLocked); + await toolbar.clickMoreActionsCancelEditing(); + await dataTable.clearSelection(); + + expect(await apis.user.nodes.isFileLockedWrite(fileLockedId)).toBe(false, `${fileLocked} is still locked`); + expect(await dataTable.hasLockIcon(fileLocked)).toBe(false, `${fileLocked} has a lock icon`); + }); + }); + + // TODO: enable tests when ACA-2173 is done + xdescribe('on Shared Files', () => { + beforeAll(async (done) => { + file1Id = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentSFId, file1)).entry.id; + fileLockedId = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentSFId, fileLocked)).entry.id; + fileLocked2Id = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentSFId, fileLocked2)).entry.id; + + await apis.user.nodes.lockFile(fileLockedId); + await apis.user.nodes.lockFile(fileLocked2Id); + + await apis.user.shared.shareFilesByIds([file1Id, fileLockedId, fileLocked2Id]); + await apis.user.shared.waitForApi({ expect: 3 }); + + await loginPage.loginWith(username); + done(); + }); + + beforeEach(async (done) => { + await page.clickSharedFilesAndWait(); + done(); + }); + + afterEach(async (done) => { + await Utils.pressEscape(); + done(); + }); + + xit('File is locked and downloaded when clicking Edit Offline - []', async () => { + await dataTable.selectItem(file1, parentSF); + await toolbar.clickMoreActionsEditOffline(); + + expect(await Utils.fileExistsOnOS(file1)).toBe(true, 'File not found in download location'); + expect(await apis.user.nodes.isFileLockedWrite(file1Id)).toBe(true, `${file1} is not locked`); + }); + + xit('Lock information is displayed - []', async () => { + expect(await dataTable.isItemPresent(fileLocked2, parentSF)).toBe(true, `${fileLocked2} is not displayed`); + expect(await dataTable.hasLockIcon(fileLocked2, parentSF)).toBe(true, `${fileLocked2} does not have a lock icon`); + expect(await dataTable.getLockOwner(fileLocked2, parentSF)).toContain(username, `${fileLocked2} does not have correct lock owner info`); + }); + + xit('Cancel Editing unlocks the file - []', async () => { + await dataTable.selectItem(fileLocked); + await toolbar.clickMoreActionsCancelEditing(); + await dataTable.clearSelection(); + + expect(await apis.user.nodes.isFileLockedWrite(fileLockedId)).toBe(false, `${fileLocked} is still locked`); + expect(await dataTable.hasLockIcon(fileLocked, parentSF)).toBe(false, `${fileLocked} has a lock icon`); + }); + }); + + describe('on Recent Files', () => { + beforeAll(async (done) => { + file1Id = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentRFId, file1)).entry.id; + fileLockedId = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentRFId, fileLocked)).entry.id; + fileLocked2Id = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentRFId, fileLocked2)).entry.id; + + await apis.user.nodes.lockFile(fileLockedId); + await apis.user.nodes.lockFile(fileLocked2Id); + + await apis.user.search.waitForApi(username, { expect: 6 }); + + await loginPage.loginWith(username); + done(); + }); + + beforeEach(async (done) => { + await page.clickRecentFilesAndWait(); + done(); + }); + + afterEach(async (done) => { + await Utils.pressEscape(); + done(); + }); + + it('File is locked and downloaded when clicking Edit Offline - [C297541]', async () => { + await dataTable.selectItem(file1, parentRF); + await toolbar.clickMoreActionsEditOffline(); + + expect(await Utils.fileExistsOnOS(file1)).toBe(true, 'File not found in download location'); + expect(await apis.user.nodes.isFileLockedWrite(file1Id)).toBe(true, `${file1} is not locked`); + }); + + it('Lock information is displayed - [C297542]', async () => { + expect(await dataTable.isItemPresent(fileLocked2, parentRF)).toBe(true, `${fileLocked2} is not displayed`); + expect(await dataTable.hasLockIcon(fileLocked2, parentRF)).toBe(true, `${fileLocked2} does not have a lock icon`); + expect(await dataTable.getLockOwner(fileLocked2, parentRF)).toContain(username, `${fileLocked2} does not have correct lock owner info`); + }); + + it('Cancel Editing unlocks the file - [C297543]', async () => { + await dataTable.selectItem(fileLocked, parentRF); + await toolbar.clickMoreActionsCancelEditing(); + await dataTable.clearSelection(); + + expect(await apis.user.nodes.isFileLockedWrite(fileLockedId)).toBe(false, `${fileLocked} is still locked`); + expect(await dataTable.hasLockIcon(fileLocked, parentRF)).toBe(false, `${fileLocked} has a lock icon`); + }); + }); + + // TODO: enable tests when ACA-2174 is done + xdescribe('on Favorite Files', () => { + beforeAll(async (done) => { + file1Id = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentFavId, file1)).entry.id; + fileLockedId = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentFavId, fileLocked)).entry.id; + fileLocked2Id = (await apis.user.upload.uploadFileWithRename(FILES.docxFile, parentFavId, fileLocked2)).entry.id; + + await apis.user.nodes.lockFile(fileLockedId); + await apis.user.nodes.lockFile(fileLocked2Id); + + await apis.user.favorites.addFavoritesByIds('file', [file1Id, fileLockedId, fileLocked2Id]); + await apis.user.favorites.waitForApi({ expect: 3 }); + + await loginPage.loginWith(username); + done(); + }); + + beforeEach(async (done) => { + await page.clickFavoritesAndWait(); + done(); + }); + + afterEach(async (done) => { + await Utils.pressEscape(); + done(); + }); + + xit('File is locked and downloaded when clicking Edit Offline - []', async () => { + await dataTable.selectItem(file1); + await toolbar.clickMoreActionsEditOffline(); + + expect(await Utils.fileExistsOnOS(file1)).toBe(true, 'File not found in download location'); + expect(await apis.user.nodes.isFileLockedWrite(file1Id)).toBe(true, `${file1} is not locked`); + }); + + xit('Lock information is displayed - []', async () => { + expect(await dataTable.isItemPresent(fileLocked2)).toBe(true, `${fileLocked2} is not displayed`); + expect(await dataTable.hasLockIcon(fileLocked2)).toBe(true, `${fileLocked2} does not have a lock icon`); + expect(await dataTable.getLockOwner(fileLocked2)).toContain(username, `${fileLocked2} does not have correct lock owner info`); + }); + + xit('Cancel Editing unlocks the file - []', async () => { + await dataTable.selectItem(fileLocked); + await toolbar.clickMoreActionsCancelEditing(); + await dataTable.clearSelection(); + + expect(await apis.user.nodes.isFileLockedWrite(fileLockedId)).toBe(false, `${fileLocked} is still locked`); + expect(await dataTable.hasLockIcon(fileLocked)).toBe(false, `${fileLocked} has a lock icon`); + }); + }); + +}); diff --git a/e2e/suites/actions/special-permissions-available-actions.test.ts b/e2e/suites/actions/special-permissions-available-actions.test.ts index 0f4826bde..e0f7b3c79 100755 --- a/e2e/suites/actions/special-permissions-available-actions.test.ts +++ b/e2e/suites/actions/special-permissions-available-actions.test.ts @@ -29,7 +29,7 @@ import { RepoClient } from '../../utilities/repo-client/repo-client'; import { Utils } from '../../utilities/utils'; import { Viewer } from '../../components/viewer/viewer'; -describe('Granular permissions available actions : ', () => { +describe('Special permissions available actions : ', () => { const userConsumer = `consumer-${Utils.random()}`; const userManager = `manager-${Utils.random()}`; const userCollaborator = `collaborator-${Utils.random()}`; @@ -112,6 +112,8 @@ describe('Granular permissions available actions : ', () => { await apis.userCollaborator.favorites.addFavoritesByIds('file', [file1Id, docxFileId]); await apis.userCollaborator.favorites.waitForApi({ expect: 2 }); + await apis.admin.favorites.addFavoriteById('file', fileLockedId); + done(); }); @@ -159,6 +161,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for selected files`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed for selected files`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for selected files`); await toolbar.closeMoreMenu(); }); @@ -181,6 +184,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for selected files`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed for selected files`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for selected files`); await toolbar.closeMoreMenu(); }); @@ -205,6 +209,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is displayed for selected files`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed for selected files`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for selected files`); await toolbar.closeMoreMenu(); }); @@ -229,6 +234,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for selected files`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed for selected files`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for selected files`); await toolbar.closeMoreMenu(); }); @@ -268,6 +274,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${file1}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${file1}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${file1}`); await toolbar.closeMoreMenu(); }); @@ -291,6 +298,8 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${file1}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${file1}`); + // TODO: change expect to false when ACA-2173 is done + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is displayed for ${file1}`); await toolbar.closeMoreMenu(); }); @@ -317,6 +326,8 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is displayed for ${file1}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${file1}`); + // TODO: change expect to false when ACA-1737 is done + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is displayed for ${file1}`); await toolbar.closeMoreMenu(); }); @@ -342,6 +353,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${file1}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${file1}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${file1}`); await toolbar.closeMoreMenu(); }); @@ -381,6 +393,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${folder1}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folder1}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed for ${folder1}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folder1}`); await toolbar.closeMoreMenu(); }); @@ -407,6 +420,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is displayed for ${folder1}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folder1}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed for ${folder1}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folder1}`); await toolbar.closeMoreMenu(); }); @@ -432,6 +446,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${folder1}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folder1}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed for ${folder1}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folder1}`); await toolbar.closeMoreMenu(); }); @@ -470,6 +485,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -492,6 +508,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for selected files`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -516,6 +533,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is displayed for selected files`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -540,6 +558,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -578,6 +597,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -602,6 +622,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is displayed`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -626,6 +647,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -664,6 +686,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -688,6 +711,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is displayed`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -712,6 +736,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -745,6 +770,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${file1}`); expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${file1}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions is not displayed for ${file1}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${file1}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${file1}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${file1}`); expect(await contextMenu.isSharedLinkSettingsPresent()).toBe(true, `Shared link settings is not displayed`); @@ -764,6 +790,8 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${file1}`); expect(await contextMenu.isSharedLinkSettingsPresent()).toBe(true, `Shared link settings is not displayed for ${file1}`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions is not displayed for ${file1}`); + // TODO: change expect to false when ACA-2173 is done + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version is displayed for ${file1}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${file1}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${file1}`); }); @@ -785,6 +813,8 @@ describe('Granular permissions available actions : ', () => { // TODO: replace with isSharedLinkSettingsPresent when ACA-2175 is done expect(await toolbar.isSharePresent()).toBe(true, `Share is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions is not displayed for ${file1}`); + // TODO: change expect to false when ACA-1737 is done + expect(await contextMenu.isUploadNewVersionPresent()).toBe(true, `Upload new version is displayed for ${file1}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${file1}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${file1}`); }); @@ -805,6 +835,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${file1}`); expect(await contextMenu.isSharedLinkSettingsPresent()).toBe(true, `Shared link settings is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions is not displayed for ${file1}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${file1}`); expect(await contextMenu.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${file1}`); expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${file1}`); }); @@ -837,6 +868,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${folder1}`); expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folder1}`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed for ${folder1}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folder1}`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folder1}`); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${folder1}`); expect(await contextMenu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed for ${folder1}`); @@ -857,6 +889,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is displayed for ${folder1}`); expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folder1}`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed for ${folder1}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folder1}`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folder1}`); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${folder1}`); expect(await contextMenu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed for ${folder1}`); @@ -876,6 +909,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${folder1}`); expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folder1}`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed for ${folder1}`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folder1}`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folder1}`); expect(await contextMenu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${folder1}`); expect(await contextMenu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed for ${folder1}`); @@ -911,6 +945,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed`); }); @@ -928,6 +963,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed`); }); @@ -947,6 +983,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed`); }); @@ -966,6 +1003,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed`); }); }); @@ -1000,6 +1038,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed`); }); @@ -1020,6 +1059,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed`); }); @@ -1040,6 +1080,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed`); }); }); @@ -1073,6 +1114,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed`); }); @@ -1092,6 +1134,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isMovePresent()).toBe(true, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed`); }); @@ -1111,6 +1154,7 @@ describe('Granular permissions available actions : ', () => { expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`); expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed`); + expect(await contextMenu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed`); }); }); @@ -1152,6 +1196,7 @@ describe('Granular permissions available actions : ', () => { expect(await viewerToolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await viewerToolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`); expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -1178,6 +1223,7 @@ describe('Granular permissions available actions : ', () => { expect(await viewerToolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await viewerToolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`); expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -1204,6 +1250,7 @@ describe('Granular permissions available actions : ', () => { expect(await viewerToolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await viewerToolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`); expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -1216,7 +1263,7 @@ describe('Granular permissions available actions : ', () => { done(); }); - it('on File Libraries - []', async () => { + it('on File Libraries - [C297647]', async () => { await page.clickFileLibrariesAndWait(); await dataTable.doubleClickOnRowByName(siteName); await dataTable.waitForHeader(); @@ -1237,11 +1284,12 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${file1}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); - it('on Shared Files - []', async () => { + it('on Shared Files - [C297651]', async () => { await page.clickSharedFilesAndWait(); await page.dataTable.selectItem(file1); @@ -1261,11 +1309,12 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${file1}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); - it('on Favorites - []', async () => { + it('on Favorites - [C297652]', async () => { await page.clickFavoritesAndWait(); await dataTable.selectItem(file1); @@ -1288,11 +1337,12 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is displayed for ${file1}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); - it('on Search Results - []', async () => { + it('on Search Results - [C297653]', async () => { await searchInput.clickSearchButton(); await searchInput.checkOnlyFiles(); await searchInput.searchForTextAndCloseSearchOptions(file1); @@ -1313,6 +1363,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${file1}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); @@ -1330,7 +1381,7 @@ describe('Granular permissions available actions : ', () => { done(); }); - it('file opened from File Libraries - []', async () => { + it('file opened from File Libraries - [C297654]', async () => { await page.clickFileLibrariesAndWait(); await dataTable.doubleClickOnRowByName(siteName); await dataTable.waitForHeader(); @@ -1354,11 +1405,12 @@ describe('Granular permissions available actions : ', () => { expect(await viewerToolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await viewerToolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`); expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await viewerToolbar.closeMoreMenu(); }); - it('file opened from Shared Files - []', async () => { + it('file opened from Shared Files - [C297655]', async () => { await page.clickSharedFilesAndWait(); await dataTable.doubleClickOnRowByName(docxFile); await viewer.waitForViewerToOpen(); @@ -1380,11 +1432,12 @@ describe('Granular permissions available actions : ', () => { expect(await viewerToolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await viewerToolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`); expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await viewerToolbar.closeMoreMenu(); }); - it('file opened from Favorites - []', async () => { + it('file opened from Favorites - [C297656]', async () => { await page.clickFavoritesAndWait(); await dataTable.doubleClickOnRowByName(docxFile); await viewer.waitForViewerToOpen(); @@ -1406,6 +1459,7 @@ describe('Granular permissions available actions : ', () => { expect(await viewerToolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await viewerToolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`); expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await viewerToolbar.closeMoreMenu(); }); @@ -1418,7 +1472,7 @@ describe('Granular permissions available actions : ', () => { done(); }); - it('on File Libraries - []', async () => { + it('on File Libraries - [C297657]', async () => { await page.clickFileLibrariesAndWait(); await dataTable.doubleClickOnRowByName(siteName); await dataTable.waitForHeader(); @@ -1439,11 +1493,12 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${fileLocked}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, 'Manage versions is not displayed'); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, 'Upload new version is not displayed'); await toolbar.closeMoreMenu(); }); - it('on Shared Files - []', async () => { + it('on Shared Files - [C297658]', async () => { await page.clickSharedFilesAndWait(); await page.dataTable.selectItem(fileLocked); @@ -1463,11 +1518,12 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${fileLocked}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, 'Manage versions is not displayed'); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, 'Upload new version is not displayed'); await toolbar.closeMoreMenu(); }); - it('on Favorites - []', async () => { + it('on Favorites - [C297659]', async () => { await page.clickFavoritesAndWait(); await dataTable.selectItem(fileLocked); @@ -1490,11 +1546,12 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is displayed for ${fileLocked}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, 'Manage versions is not displayed'); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, 'Upload new version is not displayed'); await toolbar.closeMoreMenu(); }); - it('on Search Results - []', async () => { + it('on Search Results - [C297660]', async () => { await searchInput.clickSearchButton(); await searchInput.checkOnlyFiles(); await searchInput.searchForTextAndCloseSearchOptions(fileLocked); @@ -1515,6 +1572,7 @@ describe('Granular permissions available actions : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${fileLocked}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, 'Manage versions is not displayed'); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, 'Upload new version is not displayed'); await toolbar.closeMoreMenu(); }); @@ -1532,7 +1590,7 @@ describe('Granular permissions available actions : ', () => { done(); }); - it('file opened from File Libraries - []', async () => { + it('file opened from File Libraries - [C297661]', async () => { await page.clickFileLibrariesAndWait(); await dataTable.doubleClickOnRowByName(siteName); await dataTable.waitForHeader(); @@ -1556,11 +1614,12 @@ describe('Granular permissions available actions : ', () => { expect(await viewerToolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await viewerToolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`); expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await viewerToolbar.closeMoreMenu(); }); - it('file opened from Shared Files - []', async () => { + it('file opened from Shared Files - [C297662]', async () => { await page.clickSharedFilesAndWait(); await dataTable.doubleClickOnRowByName(fileLocked); await viewer.waitForViewerToOpen(); @@ -1582,11 +1641,12 @@ describe('Granular permissions available actions : ', () => { expect(await viewerToolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await viewerToolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`); expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await viewerToolbar.closeMoreMenu(); }); - it('file opened from Favorites - []', async () => { + it('file opened from Favorites - [C297663]', async () => { await page.clickFavoritesAndWait(); await dataTable.doubleClickOnRowByName(fileLocked); await viewer.waitForViewerToOpen(); @@ -1609,6 +1669,217 @@ describe('Granular permissions available actions : ', () => { expect(await viewerToolbar.menu.isMovePresent()).toBe(false, `Move is displayed`); expect(await viewerToolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`); expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); + + await viewerToolbar.closeMoreMenu(); + }); + }); + }); + + describe('File locked - manager : ', () => { + beforeAll(async (done) => { + await loginPage.loginWithAdmin(); + done(); + }); + + it('on File Libraries - [C297664]', async () => { + await page.clickFileLibrariesAndWait(); + await dataTable.doubleClickOnRowByName(siteName); + await dataTable.waitForHeader(); + await dataTable.selectItem(fileLocked); + + expect(await toolbar.isViewPresent()).toBe(true, `View is not displayed for ${fileLocked}`); + expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for ${fileLocked}`); + expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${fileLocked}`); + expect(await toolbar.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileLocked}`); + expect(await toolbar.isSharedLinkSettingsPresent()).toBe(true, `Shared link settings is not displayed`); + + await toolbar.openMoreMenu(); + + expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${fileLocked}`); + expect(await toolbar.menu.isCancelEditingPresent()).toBe(true, `Cancel editing is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, 'Manage versions is not displayed'); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, 'Upload new version is displayed'); + + await toolbar.closeMoreMenu(); + }); + + it('on Shared Files - [C297665]', async () => { + await page.clickSharedFilesAndWait(); + await page.dataTable.selectItem(fileLocked); + + expect(await toolbar.isViewPresent()).toBe(true, `View is not displayed for ${fileLocked}`); + expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for ${fileLocked}`); + expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${fileLocked}`); + expect(await toolbar.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileLocked}`); + expect(await toolbar.isSharedLinkSettingsPresent()).toBe(true, `Shared link settings is not displayed`); + + await toolbar.openMoreMenu(); + + expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${fileLocked}`); + // TODO: change expect to true when ACA-2173 is done + expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, 'Manage versions is not displayed'); + // TODO: change expect to false when ACA-2173 is done + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, 'Upload new version is displayed'); + + await toolbar.closeMoreMenu(); + }); + + it('on Favorites - [C297666]', async () => { + await page.clickFavoritesAndWait(); + await dataTable.selectItem(fileLocked); + + expect(await toolbar.isViewPresent()).toBe(true, `View is not displayed for ${fileLocked}`); + expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for ${fileLocked}`); + expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${fileLocked}`); + expect(await toolbar.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileLocked}`); + // TODO: replace with isSharedLinkSettingsPresent when ACA-2175 is done + expect(await toolbar.isSharePresent()).toBe(true, `Share is not displayed`); + + await toolbar.openMoreMenu(); + + expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${fileLocked}`); + // TODO: change expect to true when ACA-2174 is fixed + expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, 'Manage versions is not displayed'); + // TODO: change expect to false when ACA-1737 is done + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, 'Upload new version is displayed'); + + await toolbar.closeMoreMenu(); + }); + + it('on Search Results - [C297667]', async () => { + await searchInput.clickSearchButton(); + await searchInput.checkOnlyFiles(); + await searchInput.searchForTextAndCloseSearchOptions(fileLocked); + await dataTable.selectItem(fileLocked); + + expect(await toolbar.isViewPresent()).toBe(true, `View is not displayed for ${fileLocked}`); + expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for ${fileLocked}`); + expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${fileLocked}`); + expect(await toolbar.isEditFolderPresent()).toBe(false, `Edit folder is displayed for ${fileLocked}`); + expect(await toolbar.isSharedLinkSettingsPresent()).toBe(true, `Shared link settings is not displayed`); + + await toolbar.openMoreMenu(); + + expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed for ${fileLocked}`); + expect(await toolbar.menu.isCancelEditingPresent()).toBe(true, `Cancel editing is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for ${fileLocked} in Search Results`); + expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${fileLocked} in Search Results`); + expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, 'Manage versions is not displayed'); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, 'Upload new version is displayed'); + + await toolbar.closeMoreMenu(); + }); + + describe('in the viewer', () => { + beforeEach(async (done) => { + await Utils.pressEscape(); + await dataTable.clearSelection(); + await page.clickPersonalFiles(); + done(); + }); + + afterAll(async (done) => { + await Utils.pressEscape(); + done(); + }); + + it('file opened from File Libraries - [C297671]', async () => { + await page.clickFileLibrariesAndWait(); + await dataTable.doubleClickOnRowByName(siteName); + await dataTable.waitForHeader(); + await dataTable.doubleClickOnRowByName(fileLocked); + await viewer.waitForViewerToOpen(); + + expect(await viewerToolbar.isViewPresent()).toBe(false, `View is displayed`); + expect(await viewerToolbar.isDownloadPresent()).toBe(true, `Download is not displayed`); + expect(await viewerToolbar.isPrintPresent()).toBe(true, `Print is not displayed`); + expect(await viewerToolbar.isFullScreenPresent()).toBe(true, `Full screen is not displayed`); + expect(await viewerToolbar.isSharedLinkSettingsPresent()).toBe(true, 'Shared link settings is not displayed'); + expect(await viewerToolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed`); + + await viewerToolbar.openMoreMenu(); + + expect(await viewerToolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); + expect(await viewerToolbar.menu.isCancelEditingPresent()).toBe(true, `Cancel editing is not displayed`); + expect(await viewerToolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); + expect(await viewerToolbar.menu.isSharePresent()).toBe(false, `Share is displayed in More actions`); + expect(await viewerToolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed`); + expect(await viewerToolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); + expect(await viewerToolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); + expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); + + await viewerToolbar.closeMoreMenu(); + }); + + it('file opened from Shared Files - [C297672]', async () => { + await page.clickSharedFilesAndWait(); + await dataTable.doubleClickOnRowByName(fileLocked); + await viewer.waitForViewerToOpen(); + + expect(await viewerToolbar.isViewPresent()).toBe(false, `View is displayed`); + expect(await viewerToolbar.isDownloadPresent()).toBe(true, `Download is not displayed`); + expect(await viewerToolbar.isPrintPresent()).toBe(true, `Print is not displayed`); + expect(await viewerToolbar.isFullScreenPresent()).toBe(true, `Full screen is not displayed`); + expect(await viewerToolbar.isSharedLinkSettingsPresent()).toBe(true, 'Shared link settings is not displayed'); + expect(await viewerToolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed`); + + await viewerToolbar.openMoreMenu(); + + expect(await viewerToolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); + expect(await viewerToolbar.menu.isCancelEditingPresent()).toBe(true, `Cancel editing is not displayed`); + expect(await viewerToolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); + expect(await viewerToolbar.menu.isSharePresent()).toBe(false, `Share is displayed in More actions`); + expect(await viewerToolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed`); + expect(await viewerToolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); + expect(await viewerToolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); + expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); + + await viewerToolbar.closeMoreMenu(); + }); + + it('file opened from Favorites - [C297673]', async () => { + await page.clickFavoritesAndWait(); + await dataTable.doubleClickOnRowByName(fileLocked); + await viewer.waitForViewerToOpen(); + + expect(await viewerToolbar.isEmpty()).toBe(false, `viewer toolbar is empty`); + expect(await viewerToolbar.isViewPresent()).toBe(false, `View is displayed`); + expect(await viewerToolbar.isDownloadPresent()).toBe(true, `Download is not displayed`); + expect(await viewerToolbar.isPrintPresent()).toBe(true, `Print is not displayed`); + expect(await viewerToolbar.isFullScreenPresent()).toBe(true, `Full screen is not displayed`); + expect(await viewerToolbar.isSharedLinkSettingsPresent()).toBe(true, 'Shared link settings is not displayed'); + expect(await viewerToolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed`); + + await viewerToolbar.openMoreMenu(); + + expect(await viewerToolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); + expect(await viewerToolbar.menu.isCancelEditingPresent()).toBe(true, `Cancel editing is not displayed`); + expect(await viewerToolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`); + expect(await viewerToolbar.menu.isSharePresent()).toBe(false, `Share is displayed in More actions`); + expect(await viewerToolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed`); + expect(await viewerToolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); + expect(await viewerToolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); + expect(await viewerToolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await viewerToolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await viewerToolbar.closeMoreMenu(); }); diff --git a/e2e/suites/actions/toolbar-multiple-selection.test.ts b/e2e/suites/actions/toolbar-multiple-selection.test.ts index 28120420d..31c2f4ba4 100755 --- a/e2e/suites/actions/toolbar-multiple-selection.test.ts +++ b/e2e/suites/actions/toolbar-multiple-selection.test.ts @@ -181,11 +181,12 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297619]', async () => { await dataTable.selectMultipleItems([fileLocked1, fileLocked2]); expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed'); @@ -201,6 +202,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -221,6 +223,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -241,6 +244,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -276,11 +280,12 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297620]', async () => { await dataTable.selectMultipleItems([fileLocked1InSite, fileLocked2InSite]); expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed for selected files'); @@ -296,6 +301,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -316,6 +322,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -336,6 +343,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -370,11 +378,12 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297623]', async () => { await dataTable.selectMultipleItems([fileLocked1, fileLocked2]); expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed'); @@ -390,6 +399,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -424,11 +434,12 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297624]', async () => { await dataTable.selectMultipleItems([fileLocked1, fileLocked2]); expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed'); @@ -444,6 +455,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -478,11 +490,12 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297625]', async () => { await dataTable.selectMultipleItems([fileLocked1, fileLocked2]); expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed'); @@ -498,6 +511,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -518,6 +532,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -538,6 +553,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -607,11 +623,12 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when multiple locked files are selected - []', async () => { + it('correct actions appear when multiple locked files are selected - [C297626]', async () => { await searchInput.clickSearchButton(); await searchInput.checkOnlyFiles(); await searchInput.searchForTextAndCloseSearchOptions('my-fileLockedInSite'); @@ -630,6 +647,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -653,6 +671,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); @@ -676,6 +695,7 @@ describe('Toolbar actions - multiple selection : ', () => { expect(await toolbar.menu.isEditOfflinePresent()).toBe(false, `Edit offline is displayed`); expect(await toolbar.menu.isCancelEditingPresent()).toBe(false, `Cancel editing is displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed`); await toolbar.closeMoreMenu(); }); diff --git a/e2e/suites/actions/toolbar-single-selection.test.ts b/e2e/suites/actions/toolbar-single-selection.test.ts index 565339c04..d2b930f44 100755 --- a/e2e/suites/actions/toolbar-single-selection.test.ts +++ b/e2e/suites/actions/toolbar-single-selection.test.ts @@ -151,11 +151,12 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileUser}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileUser}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileUser}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload New Version is not displayed for ${fileUser}`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when a locked file is selected - []', async () => { + it('correct actions appear when a locked file is selected - [C297612]', async () => { await dataTable.selectItem(fileLocked); expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileLocked}`); @@ -172,6 +173,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileLocked}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileLocked}`); await toolbar.closeMoreMenu(); }); @@ -193,6 +195,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${folderUser}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folderUser}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed for ${folderUser}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folderUser}`); await toolbar.closeMoreMenu(); }); @@ -233,11 +236,12 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileInSite}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileInSite}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileInSite}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileInSite}`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when a locked file is selected - []', async () => { + it('correct actions appear when a locked file is selected - [C297614]', async () => { await dataTable.selectItem(fileLockedInSite); expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileLockedInSite}`); @@ -254,6 +258,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileLockedInSite}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLockedInSite}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileLockedInSite}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileLockedInSite}`); await toolbar.closeMoreMenu(); }); @@ -275,6 +280,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${folderInSite}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folderInSite}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed for ${folderInSite}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folderInSite}`); await toolbar.closeMoreMenu(); }); @@ -446,11 +452,12 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileUser}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileUser}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileUser}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileUser}`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when a locked file is selected - []', async () => { + it('correct actions appear when a locked file is selected - [C297615]', async () => { await page.dataTable.selectItem(fileLocked); expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileLocked}`); @@ -469,6 +476,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileLocked}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileLocked}`); await toolbar.closeMoreMenu(); }); @@ -507,11 +515,12 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileUser}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileUser}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileUser}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileUser}`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when a locked file is selected - []', async () => { + it('correct actions appear when a locked file is selected - [C297616]', async () => { await dataTable.selectItem(fileLocked); expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileLocked}`); @@ -528,6 +537,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileLocked}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileLocked}`); await toolbar.closeMoreMenu(); }); @@ -567,11 +577,12 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileUser}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileUser}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileUser}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileUser}`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when a locked file is selected - []', async () => { + it('correct actions appear when a locked file is selected - [C297617]', async () => { await dataTable.selectItem(fileLocked); expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileLocked}`); @@ -589,6 +600,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${fileLocked}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileLocked}`); await toolbar.closeMoreMenu(); }); @@ -610,6 +622,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for ${folderUser}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folderUser}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed for ${folderUser}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folderUser}`); await toolbar.closeMoreMenu(); }); @@ -688,11 +701,12 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${fileUser}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileUser}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileUser}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileUser}`); await toolbar.closeMoreMenu(); }); - it('correct actions appear when a locked file is selected - []', async () => { + it('correct actions appear when a locked file is selected - [C297618]', async () => { await searchInput.clickSearchButton(); await searchInput.checkOnlyFiles(); await searchInput.searchForTextAndCloseSearchOptions(fileLocked); @@ -712,6 +726,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${fileLocked}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileLocked}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed for ${fileLocked}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed for ${fileLocked}`); await toolbar.closeMoreMenu(); }); @@ -736,6 +751,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${folderUser}`); expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folderUser}`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(false, `Manage versions is displayed for ${folderUser}`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(false, `Upload new version is displayed for ${folderUser}`); await toolbar.closeMoreMenu(); }); diff --git a/e2e/suites/actions/upload-new-version.test.ts b/e2e/suites/actions/upload-new-version.test.ts new file mode 100755 index 000000000..e36e3960e --- /dev/null +++ b/e2e/suites/actions/upload-new-version.test.ts @@ -0,0 +1,672 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2018 Alfresco Software Limited + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { LoginPage, BrowsingPage } from '../../pages/pages'; +import { FILES } from '../../configs'; +import { RepoClient } from '../../utilities/repo-client/repo-client'; +import { Utils } from '../../utilities/utils'; +import { UploadNewVersionDialog } from '../../components/dialog/upload-new-version-dialog'; + +describe('Upload new version', () => { + const username = `user-${Utils.random()}`; + + const file1 = `file1-${Utils.random()}.docx`; let file1Id; + const file2 = `file2-${Utils.random()}.docx`; let file2Id; + const file3 = `file3-${Utils.random()}.docx`; let file3Id; + const file4 = `file4-${Utils.random()}.docx`; let file4Id; + const fileLocked1 = `file-locked1-${Utils.random()}.docx`; let fileLocked1Id; + const fileLocked2 = `file-locked2-${Utils.random()}.docx`; let fileLocked2Id; + + const parentPF = `parentPersonal-${Utils.random()}`; let parentPFId; + const parentSF = `parentShared-${Utils.random()}`; let parentSFId; + const parentRF = `parentRecent-${Utils.random()}`; let parentRFId; + const parentFav = `parentFav-${Utils.random()}`; let parentFavId; + + const file = FILES.pdfFile; let fileId; + const fileToUpload1 = FILES.docxFile; + const fileToUpload2 = FILES.xlsxFile; + const fileToUpload3 = FILES.pdfFile; + const fileToUpload4 = FILES.docxFile2; + const fileToUpload5 = FILES.xlsxFile2; + + const apis = { + admin: new RepoClient(), + user: new RepoClient(username, username) + }; + + const loginPage = new LoginPage(); + const page = new BrowsingPage(); + const { dataTable, toolbar } = page; + const uploadNewVersionDialog = new UploadNewVersionDialog(); + + beforeAll(async (done) => { + await apis.admin.people.createUser({ username }); + + parentPFId = (await apis.user.nodes.createFolder(parentPF)).entry.id; + parentSFId = (await apis.user.nodes.createFolder(parentSF)).entry.id; + parentRFId = (await apis.user.nodes.createFolder(parentRF)).entry.id; + parentFavId = (await apis.user.nodes.createFolder(parentFav)).entry.id; + + done(); + }); + + afterAll(async (done) => { + await apis.user.nodes.deleteNodeById(parentPFId); + await apis.user.nodes.deleteNodeById(parentSFId); + await apis.user.nodes.deleteNodeById(parentRFId); + await apis.user.nodes.deleteNodeById(parentFavId); + done(); + }); + + describe('on Personal Files', () => { + beforeAll(async (done) => { + fileId = (await apis.user.upload.uploadFile(file, parentPFId)).entry.id; + file1Id = (await apis.user.nodes.createFile(file1, parentPFId)).entry.id; + file2Id = (await apis.user.nodes.createFile(file2, parentPFId)).entry.id; + file3Id = (await apis.user.nodes.createFile(file3, parentPFId)).entry.id; + file4Id = (await apis.user.nodes.createFile(file4, parentPFId)).entry.id; + + fileLocked1Id = (await apis.user.nodes.createFile(fileLocked1, parentPFId)).entry.id; + fileLocked2Id = (await apis.user.nodes.createFile(fileLocked2, parentPFId)).entry.id; + + await apis.user.nodes.lockFile(fileLocked1Id); + await apis.user.nodes.lockFile(fileLocked2Id); + + await loginPage.loginWith(username); + done(); + }); + + beforeEach(async (done) => { + await page.clickPersonalFilesAndWait(); + await dataTable.doubleClickOnRowByName(parentPF); + done(); + }); + + afterEach(async (done) => { + // await Utils.pressEscape(); + await page.refresh(); + done(); + }); + + it('dialog UI defaults - [C297544]', async () => { + await dataTable.selectItem(file); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload1); + await page.waitForDialog(); + + expect(await uploadNewVersionDialog.getTitle()).toEqual('Upload New Version'); + expect(await uploadNewVersionDialog.getText()).toContain('What level of changes were made to this version?'); + expect(await uploadNewVersionDialog.isDescriptionDisplayed()).toBe(true, 'Description not displayed'); + expect(await uploadNewVersionDialog.isMinorOptionDisplayed()).toBe(true, 'Minor option not displayed'); + expect(await uploadNewVersionDialog.isMajorOptionDisplayed()).toBe(true, 'Major option not displayed'); + expect(await uploadNewVersionDialog.isCancelButtonEnabled()).toBe(true, 'Cancel button not enabled'); + expect(await uploadNewVersionDialog.isUploadButtonEnabled()).toBe(true, 'Update button not enabled'); + }); + + it('file is updated after uploading a new version - major - [C297545]', async () => { + await dataTable.selectItem(file1); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload1); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMajor(); + await uploadNewVersionDialog.enterDescription('new major version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload1)).toBe(true, 'File not updated'); + expect(await apis.user.nodes.getFileVersionType(file1Id)).toEqual('MAJOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('1.0', 'File has incorrect version label'); + }); + + it('file is updated after uploading a new version - minor - [C297546]', async () => { + await dataTable.selectItem(file2); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload2); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new minor version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload2)).toBe(true, 'File not updated'); + expect(await apis.user.nodes.getFileVersionType(file2Id)).toEqual('MINOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('0.1', 'File has incorrect version label'); + }); + + it('file is not updated when clicking Cancel - [C297547]', async () => { + await dataTable.selectItem(file3); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload3); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickCancel(); + + expect(await dataTable.isItemPresent(file3)).toBe(true, 'File was updated'); + expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('', 'File has incorrect version label'); + }); + + it('upload new version fails when new file name already exists - [C297548]', async () => { + await dataTable.selectItem(file4); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(file); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickUpload(); + + await page.refresh(); + + expect(await dataTable.isItemPresent(file4)).toBe(true, 'File was updated'); + expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('', 'File has incorrect version label'); + }); + + it('file is unlocked after uploading a new version - [C297549]', async () => { + await dataTable.selectItem(fileLocked1); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload4); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload4)).toBe(true, 'File name was not changed'); + expect(await apis.user.nodes.isFileLockedWrite(fileLocked1Id)).toBe(false, `${fileLocked1} is still locked`); + expect(await apis.user.nodes.getFileVersionType(fileLocked1Id)).toEqual('MINOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('0.1', 'File has incorrect version label'); + }); + + it('file remains locked after canceling of uploading a new version - [C297550]', async () => { + await dataTable.selectItem(fileLocked2); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload5); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickCancel(); + + expect(await dataTable.isItemPresent(fileToUpload5)).toBe(false, 'File was updated'); + expect(await dataTable.isItemPresent(fileLocked2)).toBe(true, 'File not displayed'); + expect(await apis.user.nodes.isFileLockedWrite(fileLocked2Id)).toBe(true, `${fileLocked2} was unlocked`); + }); + }); + + describe('on Shared Files', () => { + beforeAll(async (done) => { + fileId = (await apis.user.upload.uploadFile(file, parentSFId)).entry.id; + file1Id = (await apis.user.nodes.createFile(file1, parentSFId)).entry.id; + file2Id = (await apis.user.nodes.createFile(file2, parentSFId)).entry.id; + file3Id = (await apis.user.nodes.createFile(file3, parentSFId)).entry.id; + file4Id = (await apis.user.nodes.createFile(file4, parentSFId)).entry.id; + + fileLocked1Id = (await apis.user.nodes.createFile(fileLocked1, parentSFId)).entry.id; + fileLocked2Id = (await apis.user.nodes.createFile(fileLocked2, parentSFId)).entry.id; + + await apis.user.nodes.lockFile(fileLocked1Id); + await apis.user.nodes.lockFile(fileLocked2Id); + + await apis.user.shared.shareFilesByIds([fileId, file1Id, file2Id, file3Id, file4Id, fileLocked1Id, fileLocked2Id]); + await apis.user.shared.waitForApi({ expect: 7 }); + + await loginPage.loginWith(username); + done(); + }); + + beforeEach(async (done) => { + await page.clickSharedFilesAndWait(); + done(); + }); + + afterEach(async (done) => { + // await Utils.pressEscape(); + await page.refresh(); + done(); + }); + + it('dialog UI defaults - [C297551]', async () => { + await dataTable.selectItem(file); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload1); + await page.waitForDialog(); + + expect(await uploadNewVersionDialog.getTitle()).toEqual('Upload New Version'); + expect(await uploadNewVersionDialog.getText()).toContain('What level of changes were made to this version?'); + expect(await uploadNewVersionDialog.isDescriptionDisplayed()).toBe(true, 'Description not displayed'); + expect(await uploadNewVersionDialog.isMinorOptionDisplayed()).toBe(true, 'Minor option not displayed'); + expect(await uploadNewVersionDialog.isMajorOptionDisplayed()).toBe(true, 'Major option not displayed'); + expect(await uploadNewVersionDialog.isCancelButtonEnabled()).toBe(true, 'Cancel button not enabled'); + expect(await uploadNewVersionDialog.isUploadButtonEnabled()).toBe(true, 'Update button not enabled'); + }); + + it('file is updated after uploading a new version - major - [C297552]', async () => { + await dataTable.selectItem(file1); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload1); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMajor(); + await uploadNewVersionDialog.enterDescription('new major version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload1)).toBe(true, 'File not updated'); + expect(await apis.user.nodes.getFileVersionType(file1Id)).toEqual('MAJOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('1.0', 'File has incorrect version label'); + }); + + it('file is updated after uploading a new version - minor - [C297553]', async () => { + await dataTable.selectItem(file2); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload2); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new minor version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload2)).toBe(true, 'File not updated'); + expect(await apis.user.nodes.getFileVersionType(file2Id)).toEqual('MINOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('0.1', 'File has incorrect version label'); + }); + + it('file is not updated when clicking Cancel - [C297554]', async () => { + await dataTable.selectItem(file3); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload3); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickCancel(); + + expect(await dataTable.isItemPresent(file3)).toBe(true, 'File was updated'); + expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('', 'File has incorrect version label'); + }); + + it('upload new version fails when new file name already exists - [C297555]', async () => { + await dataTable.selectItem(file4); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(file); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickUpload(); + + await page.refresh(); + + expect(await dataTable.isItemPresent(file4)).toBe(true, 'File was updated'); + expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('', 'File has incorrect version label'); + }); + + it('file is unlocked after uploading a new version - [C297556]', async () => { + await dataTable.selectItem(fileLocked1); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload4); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload4)).toBe(true, 'File name was not changed'); + expect(await apis.user.nodes.isFileLockedWrite(fileLocked1Id)).toBe(false, `${fileLocked1} is still locked`); + expect(await apis.user.nodes.getFileVersionType(fileLocked1Id)).toEqual('MINOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('0.1', 'File has incorrect version label'); + }); + + it('file remains locked after canceling of uploading a new version - [C297557]', async () => { + await dataTable.selectItem(fileLocked2); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload5); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickCancel(); + + expect(await dataTable.isItemPresent(fileToUpload5)).toBe(false, 'File was updated'); + expect(await dataTable.isItemPresent(fileLocked2)).toBe(true, 'File not displayed'); + expect(await apis.user.nodes.isFileLockedWrite(fileLocked2Id)).toBe(true, `${fileLocked2} was unlocked`); + }); + }); + + describe('on Recent Files', () => { + beforeAll(async (done) => { + fileId = (await apis.user.upload.uploadFile(file, parentRFId)).entry.id; + file1Id = (await apis.user.nodes.createFile(file1, parentRFId)).entry.id; + file2Id = (await apis.user.nodes.createFile(file2, parentRFId)).entry.id; + file3Id = (await apis.user.nodes.createFile(file3, parentRFId)).entry.id; + file4Id = (await apis.user.nodes.createFile(file4, parentRFId)).entry.id; + + fileLocked1Id = (await apis.user.nodes.createFile(fileLocked1, parentRFId)).entry.id; + fileLocked2Id = (await apis.user.nodes.createFile(fileLocked2, parentRFId)).entry.id; + + await apis.user.nodes.lockFile(fileLocked1Id); + await apis.user.nodes.lockFile(fileLocked2Id); + + await apis.user.search.waitForApi(username, { expect: 21 }); + + await loginPage.loginWith(username); + done(); + }); + + beforeEach(async (done) => { + await page.clickRecentFilesAndWait(); + done(); + }); + + afterEach(async (done) => { + // await Utils.pressEscape(); + await page.refresh(); + done(); + }); + + it('dialog UI defaults - [C297558]', async () => { + await dataTable.selectItem(file, parentRF); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload1); + await page.waitForDialog(); + + expect(await uploadNewVersionDialog.getTitle()).toEqual('Upload New Version'); + expect(await uploadNewVersionDialog.getText()).toContain('What level of changes were made to this version?'); + expect(await uploadNewVersionDialog.isDescriptionDisplayed()).toBe(true, 'Description not displayed'); + expect(await uploadNewVersionDialog.isMinorOptionDisplayed()).toBe(true, 'Minor option not displayed'); + expect(await uploadNewVersionDialog.isMajorOptionDisplayed()).toBe(true, 'Major option not displayed'); + expect(await uploadNewVersionDialog.isCancelButtonEnabled()).toBe(true, 'Cancel button not enabled'); + expect(await uploadNewVersionDialog.isUploadButtonEnabled()).toBe(true, 'Update button not enabled'); + }); + + it('file is updated after uploading a new version - major - [C297559]', async () => { + await dataTable.selectItem(file1, parentRF); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload1); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMajor(); + await uploadNewVersionDialog.enterDescription('new major version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload1, parentRF)).toBe(true, 'File not updated'); + expect(await apis.user.nodes.getFileVersionType(file1Id)).toEqual('MAJOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('1.0', 'File has incorrect version label'); + }); + + it('file is updated after uploading a new version - minor - [C297560]', async () => { + await dataTable.selectItem(file2, parentRF); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload2); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new minor version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload2, parentRF)).toBe(true, 'File not updated'); + expect(await apis.user.nodes.getFileVersionType(file2Id)).toEqual('MINOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('0.1', 'File has incorrect version label'); + }); + + it('file is not updated when clicking Cancel - [C297561]', async () => { + await dataTable.selectItem(file3, parentRF); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload3); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickCancel(); + + expect(await dataTable.isItemPresent(file3, parentRF)).toBe(true, 'File was updated'); + expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('', 'File has incorrect version label'); + }); + + it('upload new version fails when new file name already exists - [C297562]', async () => { + await dataTable.selectItem(file4, parentRF); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(file); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickUpload(); + + await page.refresh(); + + expect(await dataTable.isItemPresent(file4, parentRF)).toBe(true, 'File was updated'); + expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('', 'File has incorrect version label'); + }); + + it('file is unlocked after uploading a new version - [C297563]', async () => { + await dataTable.selectItem(fileLocked1, parentRF); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload4); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload4, parentRF)).toBe(true, 'File name was not changed'); + expect(await apis.user.nodes.isFileLockedWrite(fileLocked1Id)).toBe(false, `${fileLocked1} is still locked`); + expect(await apis.user.nodes.getFileVersionType(fileLocked1Id)).toEqual('MINOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('0.1', 'File has incorrect version label'); + }); + + it('file remains locked after canceling of uploading a new version - [C297564]', async () => { + await dataTable.selectItem(fileLocked2, parentRF); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload5); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickCancel(); + + expect(await dataTable.isItemPresent(fileToUpload5, parentRF)).toBe(false, 'File was updated'); + expect(await dataTable.isItemPresent(fileLocked2, parentRF)).toBe(true, 'File not displayed'); + expect(await apis.user.nodes.isFileLockedWrite(fileLocked2Id)).toBe(true, `${fileLocked2} was unlocked`); + }); + }); + + describe('on Favorite Files', () => { + beforeAll(async (done) => { + fileId = (await apis.user.upload.uploadFile(file, parentFavId)).entry.id; + file1Id = (await apis.user.nodes.createFile(file1, parentFavId)).entry.id; + file2Id = (await apis.user.nodes.createFile(file2, parentFavId)).entry.id; + file3Id = (await apis.user.nodes.createFile(file3, parentFavId)).entry.id; + file4Id = (await apis.user.nodes.createFile(file4, parentFavId)).entry.id; + + fileLocked1Id = (await apis.user.nodes.createFile(fileLocked1, parentFavId)).entry.id; + fileLocked2Id = (await apis.user.nodes.createFile(fileLocked2, parentFavId)).entry.id; + + await apis.user.nodes.lockFile(fileLocked1Id); + await apis.user.nodes.lockFile(fileLocked2Id); + + await apis.user.favorites.addFavoritesByIds('file', [fileId, file1Id, file2Id, file3Id, file4Id, fileLocked1Id, fileLocked2Id]); + await apis.user.favorites.waitForApi({ expect: 7 }); + + await loginPage.loginWith(username); + done(); + }); + + beforeEach(async (done) => { + await page.clickFavoritesAndWait(); + done(); + }); + + afterEach(async (done) => { + // await Utils.pressEscape(); + await page.refresh(); + done(); + }); + + it('dialog UI defaults - [C297565]', async () => { + await dataTable.selectItem(file); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload1); + await page.waitForDialog(); + + expect(await uploadNewVersionDialog.getTitle()).toEqual('Upload New Version'); + expect(await uploadNewVersionDialog.getText()).toContain('What level of changes were made to this version?'); + expect(await uploadNewVersionDialog.isDescriptionDisplayed()).toBe(true, 'Description not displayed'); + expect(await uploadNewVersionDialog.isMinorOptionDisplayed()).toBe(true, 'Minor option not displayed'); + expect(await uploadNewVersionDialog.isMajorOptionDisplayed()).toBe(true, 'Major option not displayed'); + expect(await uploadNewVersionDialog.isCancelButtonEnabled()).toBe(true, 'Cancel button not enabled'); + expect(await uploadNewVersionDialog.isUploadButtonEnabled()).toBe(true, 'Update button not enabled'); + }); + + it('file is updated after uploading a new version - major - [C297566]', async () => { + await dataTable.selectItem(file1); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload1); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMajor(); + await uploadNewVersionDialog.enterDescription('new major version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload1)).toBe(true, 'File not updated'); + expect(await apis.user.nodes.getFileVersionType(file1Id)).toEqual('MAJOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file1Id)).toEqual('1.0', 'File has incorrect version label'); + }); + + it('file is updated after uploading a new version - minor - [C297567]', async () => { + await dataTable.selectItem(file2); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload2); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new minor version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload2)).toBe(true, 'File not updated'); + expect(await apis.user.nodes.getFileVersionType(file2Id)).toEqual('MINOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file2Id)).toEqual('0.1', 'File has incorrect version label'); + }); + + it('file is not updated when clicking Cancel - [C297568]', async () => { + await dataTable.selectItem(file3); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload3); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickCancel(); + + expect(await dataTable.isItemPresent(file3)).toBe(true, 'File was updated'); + expect(await apis.user.nodes.getFileVersionType(file3Id)).toEqual('', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file3Id)).toEqual('', 'File has incorrect version label'); + }); + + it('upload new version fails when new file name already exists - [C297569]', async () => { + await dataTable.selectItem(file4); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(file); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickUpload(); + + await page.refresh(); + + expect(await dataTable.isItemPresent(file4)).toBe(true, 'File was updated'); + expect(await apis.user.nodes.getFileVersionType(file4Id)).toEqual('', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(file4Id)).toEqual('', 'File has incorrect version label'); + }); + + it('file is unlocked after uploading a new version - [C297570]', async () => { + await dataTable.selectItem(fileLocked1); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload4); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await dataTable.isItemPresent(fileToUpload4)).toBe(true, 'File name was not changed'); + expect(await apis.user.nodes.isFileLockedWrite(fileLocked1Id)).toBe(false, `${fileLocked1} is still locked`); + expect(await apis.user.nodes.getFileVersionType(fileLocked1Id)).toEqual('MINOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(fileLocked1Id)).toEqual('0.1', 'File has incorrect version label'); + }); + + it('file remains locked after canceling of uploading a new version - [C297571]', async () => { + await dataTable.selectItem(fileLocked2); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(fileToUpload5); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMinor(); + await uploadNewVersionDialog.enterDescription('new version description'); + await uploadNewVersionDialog.clickCancel(); + + expect(await dataTable.isItemPresent(fileToUpload5)).toBe(false, 'File was updated'); + expect(await dataTable.isItemPresent(fileLocked2)).toBe(true, 'File not displayed'); + expect(await apis.user.nodes.isFileLockedWrite(fileLocked2Id)).toBe(true, `${fileLocked2} was unlocked`); + }); + }); + +}); diff --git a/e2e/suites/list-views/tooltips.test.ts b/e2e/suites/list-views/tooltips.test.ts index 421e7a6f6..c9ae1105b 100755 --- a/e2e/suites/list-views/tooltips.test.ts +++ b/e2e/suites/list-views/tooltips.test.ts @@ -166,7 +166,7 @@ describe('File / folder tooltips', () => { }); // disabled until ACA-518 is done - describe('on Shared Files', () => { + xdescribe('on Shared Files', () => { beforeAll(async (done) => { await apis.user.shared.waitForApi({ expect: 8 }); await page.clickSharedFilesAndWait(); diff --git a/e2e/suites/viewer/viewer-actions.test.ts b/e2e/suites/viewer/viewer-actions.test.ts index 43145adb2..2355cabe0 100755 --- a/e2e/suites/viewer/viewer-actions.test.ts +++ b/e2e/suites/viewer/viewer-actions.test.ts @@ -31,11 +31,13 @@ import { Viewer } from '../../components/viewer/viewer'; import { CopyMoveDialog } from './../../components/dialog/copy-move-dialog'; import { ShareDialog } from './../../components/dialog/share-dialog'; import { ManageVersionsDialog } from './../../components/dialog/manage-versions-dialog'; +import { UploadNewVersionDialog } from './../../components/dialog/upload-new-version-dialog'; describe('Viewer actions', () => { const username = `user-${Utils.random()}`; const docxFile = FILES.docxFile; + const docxFile2 = FILES.docxFile2; const xlsxFileForMove = FILES.xlsxFile; const pdfFileForDelete = FILES.pdfFile; @@ -52,13 +54,14 @@ describe('Viewer actions', () => { const copyMoveDialog = new CopyMoveDialog(); const shareDialog = new ShareDialog(); const manageVersionsDialog = new ManageVersionsDialog(); + const uploadNewVersionDialog = new UploadNewVersionDialog(); beforeAll(async done => { await apis.admin.people.createUser({ username }); done(); }); - describe('file opened from Personal Files', () => { + describe('from Personal Files', () => { const parent = `parentPF-${Utils.random()}`; let parentId; const destination = `destPF-${Utils.random()}`; let destinationId; @@ -66,15 +69,28 @@ describe('Viewer actions', () => { const docxLockedPersonalFiles = `docxLockedPF-${Utils.random()}.docx`; let docxLockedId; const xlsxPersonalFiles = `xlsxPF-${Utils.random()}.xlsx`; const pdfPersonalFiles = `pdfPF-${Utils.random()}.pdf`; + const filePersonalFiles = docxFile2; let filePersonalFilesId; + + const fileForEditOffline = `file1-${Utils.random()}.docx`; let fileForEditOfflineId; + const fileForCancelEditing = `file2-${Utils.random()}.docx`; let fileForCancelEditingId; + const fileForUploadNewVersion = `file3-${Utils.random()}.docx`; let fileForUploadNewVersionId; beforeAll(async (done) => { parentId = (await apis.user.nodes.createFolder(parent)).entry.id; destinationId = (await apis.user.nodes.createFolder(destination)).entry.id; + docxFileId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, docxPersonalFiles)).entry.id; docxLockedId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, docxLockedPersonalFiles)).entry.id; + filePersonalFilesId = (await apis.user.upload.uploadFile(docxFile2, parentId)).entry.id; await apis.user.upload.uploadFileWithRename(xlsxFileForMove, parentId, xlsxPersonalFiles); await apis.user.upload.uploadFileWithRename(pdfFileForDelete, parentId, pdfPersonalFiles); + fileForEditOfflineId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForEditOffline)).entry.id; + fileForCancelEditingId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForCancelEditing)).entry.id; + fileForUploadNewVersionId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForUploadNewVersion)).entry.id; + + await apis.user.nodes.lockFile(fileForCancelEditingId); + await apis.user.nodes.lockFile(fileForUploadNewVersionId); await apis.user.nodes.lockFile(docxLockedId); await loginPage.loginWith(username); @@ -121,11 +137,12 @@ describe('Viewer actions', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); - it('Correct actions appear in the viewer toolbar for a locked file - []', async () => { + it('Correct actions appear in the viewer toolbar for a locked file - [C297583]', async () => { await dataTable.doubleClickOnRowByName(docxLockedPersonalFiles); await viewer.waitForViewerToOpen(); @@ -146,21 +163,23 @@ describe('Viewer actions', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); it('Download action - [C268129]', async () => { await dataTable.doubleClickOnRowByName(docxPersonalFiles); - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + await viewer.waitForViewerToOpen(); await toolbar.clickDownload(); + expect(await Utils.fileExistsOnOS(docxPersonalFiles)).toBe(true, 'File not found in download location'); }); - it('Copy action - [C268130]', async (done) => { + it('Copy action - [C268130]', async () => { await dataTable.doubleClickOnRowByName(docxPersonalFiles); - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + await viewer.waitForViewerToOpen(); await toolbar.clickMoreActionsCopy(); expect(await copyMoveDialog.isDialogOpen()).toBe(true, 'Dialog is not open'); @@ -175,12 +194,11 @@ describe('Viewer actions', () => { expect(await dataTable.isItemPresent(docxPersonalFiles)).toBe(true, 'Item is not present in destination'); await apis.user.nodes.deleteNodeChildren(destinationId); - done(); }); it('Move action - [C268131]', async () => { await dataTable.doubleClickOnRowByName(xlsxPersonalFiles); - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + await viewer.waitForViewerToOpen(); await toolbar.clickMoreActionsMove(); expect(await copyMoveDialog.isDialogOpen()).toBe(true, 'Dialog is not open'); @@ -197,7 +215,7 @@ describe('Viewer actions', () => { it('Favorite action - [C268132]', async () => { await dataTable.doubleClickOnRowByName(docxPersonalFiles); - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + await viewer.waitForViewerToOpen(); await toolbar.clickMoreActionsFavorite(); await viewer.clickClose(); @@ -208,7 +226,7 @@ describe('Viewer actions', () => { it('Delete action - [C268133]', async () => { await dataTable.doubleClickOnRowByName(pdfPersonalFiles); - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + await viewer.waitForViewerToOpen(); await toolbar.clickMoreActionsDelete(); expect(await page.getSnackBarMessage()).toContain(`${pdfPersonalFiles} deleted`); @@ -218,9 +236,46 @@ describe('Viewer actions', () => { expect(await dataTable.isItemPresent(pdfPersonalFiles)).toBe(true, 'Item is not present in Trash'); }); + it('Edit Offline action - [C297584]', async () => { + await dataTable.doubleClickOnRowByName(fileForEditOffline); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsEditOffline(); + + expect(await Utils.fileExistsOnOS(fileForEditOffline)).toBe(true, 'File not found in download location'); + expect(await apis.user.nodes.isFileLockedWrite(fileForEditOfflineId)).toBe(true, `${fileForEditOffline} is not locked`); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + }); + + it('Cancel Editing action - [C297585]', async () => { + await dataTable.doubleClickOnRowByName(fileForCancelEditing); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsCancelEditing(); + + expect(await apis.user.nodes.isFileLockedWrite(fileForCancelEditingId)).toBe(false, `${fileForCancelEditing} is still locked`); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + }); + + it('Upload new version action - [C297586]', async () => { + await dataTable.doubleClickOnRowByName(filePersonalFiles); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(docxFile2); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMajor(); + await uploadNewVersionDialog.enterDescription('new major version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + expect(await viewer.getFileTitle()).toContain(docxFile2); + expect(await apis.user.nodes.getFileVersionType(filePersonalFilesId)).toEqual('MAJOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(filePersonalFilesId)).toEqual('2.0', 'File has incorrect version label'); + }); + it('Full screen action - [C279282]', async () => { await dataTable.doubleClickOnRowByName(docxPersonalFiles); - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + await viewer.waitForViewerToOpen(); await Utils.getBrowserLog(); await toolbar.clickFullScreen(); @@ -232,7 +287,7 @@ describe('Viewer actions', () => { it('Share action - [C286313]', async () => { await dataTable.doubleClickOnRowByName(docxPersonalFiles); - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + await viewer.waitForViewerToOpen(); await toolbar.clickShare(); expect(await shareDialog.isDialogOpen()).toBe(true, 'Dialog is not open'); @@ -241,7 +296,7 @@ describe('Viewer actions', () => { it('Manage Versions action - [C286316]', async () => { await dataTable.doubleClickOnRowByName(docxPersonalFiles); - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + await viewer.waitForViewerToOpen(); await toolbar.clickMoreActionsManageVersions(); expect(await manageVersionsDialog.isDialogOpen()).toBe(true, 'Dialog is not open'); @@ -251,7 +306,7 @@ describe('Viewer actions', () => { // TODO: disabled until ACA-2176 is done xit('Pressing ESC in the viewer closes only the action dialog - [C286314]', async () => { await dataTable.doubleClickOnRowByName(docxPersonalFiles); - expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); + await viewer.waitForViewerToOpen(); await toolbar.clickShare(); expect(await shareDialog.isDialogOpen()).toBe(true, 'Dialog is not open'); @@ -261,7 +316,7 @@ describe('Viewer actions', () => { }); }); - describe('file opened from File Libraries', () => { + describe('from File Libraries', () => { const siteName = `site-${Utils.random()}`; const destination = `destFL-${Utils.random()}`; let destinationId; @@ -269,6 +324,11 @@ describe('Viewer actions', () => { const docxLockedLibraries = `docxLockedFL-${Utils.random()}.docx`; let docxLockedId; const xlsxLibraries = `xlsxFL-${Utils.random()}.xlsx`; const pdfLibraries = `pdfFL-${Utils.random()}.pdf`; + const fileLibraries = docxFile2; let fileLibrariesId; + + const fileForEditOffline = `file1-${Utils.random()}.docx`; let fileForEditOfflineId; + const fileForCancelEditing = `file2-${Utils.random()}.docx`; let fileForCancelEditingId; + const fileForUploadNewVersion = `file3-${Utils.random()}.docx`; let fileForUploadNewVersionId; beforeAll(async (done) => { await apis.user.sites.createSite(siteName); @@ -276,10 +336,18 @@ describe('Viewer actions', () => { destinationId = (await apis.user.nodes.createFolder(destination)).entry.id; docxFileId = (await apis.user.upload.uploadFileWithRename(docxFile, docLibId, docxLibraries)).entry.id; docxLockedId = (await apis.user.upload.uploadFileWithRename(docxFile, docLibId, docxLockedLibraries)).entry.id; + fileLibrariesId = (await apis.user.upload.uploadFile(docxFile2, docLibId)).entry.id; await apis.user.nodes.lockFile(docxLockedId); await apis.user.upload.uploadFileWithRename(xlsxFileForMove, docLibId, xlsxLibraries); await apis.user.upload.uploadFileWithRename(pdfFileForDelete, docLibId, pdfLibraries); + fileForEditOfflineId = (await apis.user.upload.uploadFileWithRename(docxFile, docLibId, fileForEditOffline)).entry.id; + fileForCancelEditingId = (await apis.user.upload.uploadFileWithRename(docxFile, docLibId, fileForCancelEditing)).entry.id; + fileForUploadNewVersionId = (await apis.user.upload.uploadFileWithRename(docxFile, docLibId, fileForUploadNewVersion)).entry.id; + + await apis.user.nodes.lockFile(fileForCancelEditingId); + await apis.user.nodes.lockFile(fileForUploadNewVersionId); + await loginPage.loginWith(username); done(); }); @@ -303,7 +371,7 @@ describe('Viewer actions', () => { done(); }); - it('Correct actions appear in the viewer toolbar - []', async () => { + it('Correct actions appear in the viewer toolbar - [C297587]', async () => { await dataTable.doubleClickOnRowByName(docxLibraries); await viewer.waitForViewerToOpen(); @@ -324,11 +392,12 @@ describe('Viewer actions', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); - it('Correct actions appear in the viewer toolbar for a locked file - []', async () => { + it('Correct actions appear in the viewer toolbar for a locked file - [C297588]', async () => { await dataTable.doubleClickOnRowByName(docxLockedLibraries); await viewer.waitForViewerToOpen(); @@ -349,6 +418,7 @@ describe('Viewer actions', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); @@ -421,6 +491,43 @@ describe('Viewer actions', () => { expect(await dataTable.isItemPresent(pdfLibraries)).toBe(true, 'Item is not present in Trash'); }); + it('Edit Offline action - [C297589]', async () => { + await dataTable.doubleClickOnRowByName(fileForEditOffline); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsEditOffline(); + + expect(await Utils.fileExistsOnOS(fileForEditOffline)).toBe(true, 'File not found in download location'); + expect(await apis.user.nodes.isFileLockedWrite(fileForEditOfflineId)).toBe(true, `${fileForEditOffline} is not locked`); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + }); + + it('Cancel Editing action - [C297590]', async () => { + await dataTable.doubleClickOnRowByName(fileForCancelEditing); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsCancelEditing(); + + expect(await apis.user.nodes.isFileLockedWrite(fileForCancelEditingId)).toBe(false, `${fileForCancelEditing} is still locked`); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + }); + + it('Upload new version action - [C297591]', async () => { + await dataTable.doubleClickOnRowByName(fileLibraries); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(docxFile2); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMajor(); + await uploadNewVersionDialog.enterDescription('new major version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + expect(await viewer.getFileTitle()).toContain(docxFile2); + expect(await apis.user.nodes.getFileVersionType(fileLibrariesId)).toEqual('MAJOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(fileLibrariesId)).toEqual('2.0', 'File has incorrect version label'); + }); + it('Share action - [C286374]', async () => { await dataTable.doubleClickOnRowByName(docxLibraries); expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); @@ -440,7 +547,7 @@ describe('Viewer actions', () => { }); }); - describe('file opened from Recent Files', () => { + describe('from Recent Files', () => { const parent = `parentRF-${Utils.random()}`; let parentId; const destination = `destRF-${Utils.random()}`; let destinationId; @@ -448,6 +555,11 @@ describe('Viewer actions', () => { const docxLockedRecentFiles = `docxLockedRF-${Utils.random()}.docx`; let docxLockedId; const xlsxRecentFiles = `xlsxRF-${Utils.random()}.xlsx`; const pdfRecentFiles = `pdfRF-${Utils.random()}.pdf`; + const fileRecent = docxFile2; let fileRecentId; + + const fileForEditOffline = `file1-${Utils.random()}.docx`; let fileForEditOfflineId; + const fileForCancelEditing = `file2-${Utils.random()}.docx`; let fileForCancelEditingId; + const fileForUploadNewVersion = `file3-${Utils.random()}.docx`; let fileForUploadNewVersionId; beforeAll(async (done) => { await apis.user.search.waitForApi(username, {expect: 0}); @@ -455,11 +567,20 @@ describe('Viewer actions', () => { destinationId = (await apis.user.nodes.createFolder(destination)).entry.id; docxFileId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, docxRecentFiles)).entry.id; docxLockedId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, docxLockedRecentFiles)).entry.id; + fileRecentId = (await apis.user.upload.uploadFile(docxFile2, parentId)).entry.id; + + fileForEditOfflineId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForEditOffline)).entry.id; + fileForCancelEditingId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForCancelEditing)).entry.id; + fileForUploadNewVersionId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForUploadNewVersion)).entry.id; + + await apis.user.nodes.lockFile(fileForCancelEditingId); + await apis.user.nodes.lockFile(fileForUploadNewVersionId); + await apis.user.nodes.lockFile(docxLockedId); await apis.user.upload.uploadFileWithRename(xlsxFileForMove, parentId, xlsxRecentFiles); await apis.user.upload.uploadFileWithRename(pdfFileForDelete, parentId, pdfRecentFiles); - await apis.user.search.waitForApi(username, {expect: 4}); + await apis.user.search.waitForApi(username, {expect: 8}); await loginPage.loginWith(username); done(); @@ -482,7 +603,7 @@ describe('Viewer actions', () => { done(); }); - it('Correct actions appear in the viewer toolbar - []', async () => { + it('Correct actions appear in the viewer toolbar - [C297592]', async () => { await dataTable.doubleClickOnRowByName(docxRecentFiles); await viewer.waitForViewerToOpen(); @@ -503,11 +624,12 @@ describe('Viewer actions', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); - it('Correct actions appear in the viewer toolbar for a locked file - []', async () => { + it('Correct actions appear in the viewer toolbar for a locked file - [C297593]', async () => { await dataTable.doubleClickOnRowByName(docxLockedRecentFiles); await viewer.waitForViewerToOpen(); @@ -528,6 +650,7 @@ describe('Viewer actions', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); @@ -601,6 +724,43 @@ describe('Viewer actions', () => { expect(await dataTable.isItemPresent(pdfRecentFiles)).toBe(true, 'Item is not present in Trash'); }); + it('Edit Offline action - [C297594]', async () => { + await dataTable.doubleClickOnRowByName(fileForEditOffline); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsEditOffline(); + + expect(await Utils.fileExistsOnOS(fileForEditOffline)).toBe(true, 'File not found in download location'); + expect(await apis.user.nodes.isFileLockedWrite(fileForEditOfflineId)).toBe(true, `${fileForEditOffline} is not locked`); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + }); + + it('Cancel Editing action - [C297595]', async () => { + await dataTable.doubleClickOnRowByName(fileForCancelEditing); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsCancelEditing(); + + expect(await apis.user.nodes.isFileLockedWrite(fileForCancelEditingId)).toBe(false, `${fileForCancelEditing} is still locked`); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + }); + + it('Upload new version action - [C297596]', async () => { + await dataTable.doubleClickOnRowByName(fileRecent); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(docxFile2); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMajor(); + await uploadNewVersionDialog.enterDescription('new major version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + expect(await viewer.getFileTitle()).toContain(docxFile2); + expect(await apis.user.nodes.getFileVersionType(fileRecentId)).toEqual('MAJOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(fileRecentId)).toEqual('2.0', 'File has incorrect version label'); + }); + it('Share action - [C286388]', async () => { await dataTable.doubleClickOnRowByName(docxRecentFiles); expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); @@ -620,7 +780,7 @@ describe('Viewer actions', () => { }); }); - describe('file opened from Shared Files', () => { + describe('from Shared Files', () => { const parent = `parentSF-${Utils.random()}`; let parentId; const destination = `destSF-${Utils.random()}`; let destinationId; @@ -628,6 +788,11 @@ describe('Viewer actions', () => { const docxLockedSharedFiles = `docxLockedSF-${Utils.random()}.docx`; let docxLockedId; const xlsxSharedFiles = `xlsxSF-${Utils.random()}.xlsx`; let xlsxFileId; const pdfSharedFiles = `pdfSF-${Utils.random()}.pdf`; let pdfFileId; + const fileShared = docxFile2; let fileSharedId; + + const fileForEditOffline = `file1-${Utils.random()}.docx`; let fileForEditOfflineId; + const fileForCancelEditing = `file2-${Utils.random()}.docx`; let fileForCancelEditingId; + const fileForUploadNewVersion = `file3-${Utils.random()}.docx`; let fileForUploadNewVersionId; beforeAll(async (done) => { parentId = (await apis.user.nodes.createFolder(parent)).entry.id; @@ -636,10 +801,18 @@ describe('Viewer actions', () => { docxLockedId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, docxLockedSharedFiles)).entry.id; xlsxFileId = (await apis.user.upload.uploadFileWithRename(xlsxFileForMove, parentId, xlsxSharedFiles)).entry.id; pdfFileId = (await apis.user.upload.uploadFileWithRename(pdfFileForDelete, parentId, pdfSharedFiles)).entry.id; + fileSharedId = (await apis.user.upload.uploadFile(docxFile2, parentId)).entry.id; + + fileForEditOfflineId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForEditOffline)).entry.id; + fileForCancelEditingId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForCancelEditing)).entry.id; + fileForUploadNewVersionId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForUploadNewVersion)).entry.id; + + await apis.user.nodes.lockFile(fileForCancelEditingId); + await apis.user.nodes.lockFile(fileForUploadNewVersionId); await apis.user.nodes.lockFile(docxLockedId); - await apis.user.shared.shareFilesByIds([docxFileId, docxLockedId, xlsxFileId, pdfFileId]) - await apis.user.shared.waitForApi({expect: 4}); + await apis.user.shared.shareFilesByIds([docxFileId, docxLockedId, xlsxFileId, pdfFileId, fileForCancelEditingId, fileForEditOfflineId, fileForUploadNewVersionId, fileSharedId]) + await apis.user.shared.waitForApi({expect: 8}); await loginPage.loginWith(username); done(); @@ -662,7 +835,7 @@ describe('Viewer actions', () => { done(); }); - it('Correct actions appear in the viewer toolbar - []', async () => { + it('Correct actions appear in the viewer toolbar - [C297597]', async () => { await dataTable.doubleClickOnRowByName(docxSharedFiles); await viewer.waitForViewerToOpen(); @@ -683,11 +856,12 @@ describe('Viewer actions', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); - it('Correct actions appear in the viewer toolbar for a locked file - []', async () => { + it('Correct actions appear in the viewer toolbar for a locked file - [C297598]', async () => { await dataTable.doubleClickOnRowByName(docxLockedSharedFiles); await viewer.waitForViewerToOpen(); @@ -708,6 +882,7 @@ describe('Viewer actions', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); @@ -781,6 +956,43 @@ describe('Viewer actions', () => { expect(await dataTable.isItemPresent(pdfSharedFiles)).toBe(true, 'Item is not present in Trash'); }); + it('Edit Offline action - [C297601]', async () => { + await dataTable.doubleClickOnRowByName(fileForEditOffline); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsEditOffline(); + + expect(await Utils.fileExistsOnOS(fileForEditOffline)).toBe(true, 'File not found in download location'); + expect(await apis.user.nodes.isFileLockedWrite(fileForEditOfflineId)).toBe(true, `${fileForEditOffline} is not locked`); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + }); + + it('Cancel Editing action - [C297602]', async () => { + await dataTable.doubleClickOnRowByName(fileForCancelEditing); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsCancelEditing(); + + expect(await apis.user.nodes.isFileLockedWrite(fileForCancelEditingId)).toBe(false, `${fileForCancelEditing} is still locked`); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + }); + + it('Upload new version action - [C297603]', async () => { + await dataTable.doubleClickOnRowByName(fileShared); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(docxFile2); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMajor(); + await uploadNewVersionDialog.enterDescription('new major version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + expect(await viewer.getFileTitle()).toContain(docxFile2); + expect(await apis.user.nodes.getFileVersionType(fileSharedId)).toEqual('MAJOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(fileSharedId)).toEqual('2.0', 'File has incorrect version label'); + }); + it('Share action - [C286381]', async () => { await dataTable.doubleClickOnRowByName(docxSharedFiles); expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); @@ -800,7 +1012,7 @@ describe('Viewer actions', () => { }); }); - describe('file opened from Favorites', () => { + describe('from Favorites', () => { const parent = `parentFav-${Utils.random()}`; let parentId; const destination = `destFav-${Utils.random()}`; @@ -810,6 +1022,11 @@ describe('Viewer actions', () => { const docxLockedFavorites = `docxLockedFav-${Utils.random()}.docx`; let docxLockedId; const xlsxFavorites = `xlsxFav-${Utils.random()}.xlsx`; let xlsxFileId; const pdfFavorites = `pdfFav-${Utils.random()}.pdf`; let pdfFileId; + const fileFav = docxFile2; let fileFavId; + + const fileForEditOffline = `file1-${Utils.random()}.docx`; let fileForEditOfflineId; + const fileForCancelEditing = `file2-${Utils.random()}.docx`; let fileForCancelEditingId; + const fileForUploadNewVersion = `file3-${Utils.random()}.docx`; let fileForUploadNewVersionId; beforeAll(async (done) => { parentId = (await apis.user.nodes.createFolder(parent)).entry.id; @@ -818,10 +1035,18 @@ describe('Viewer actions', () => { docxLockedId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, docxLockedFavorites)).entry.id; xlsxFileId = (await apis.user.upload.uploadFileWithRename(xlsxFileForMove, parentId, xlsxFavorites)).entry.id; pdfFileId = (await apis.user.upload.uploadFileWithRename(pdfFileForDelete, parentId, pdfFavorites)).entry.id; + fileFavId = (await apis.user.upload.uploadFile(docxFile2, parentId)).entry.id; + + fileForEditOfflineId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForEditOffline)).entry.id; + fileForCancelEditingId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForCancelEditing)).entry.id; + fileForUploadNewVersionId = (await apis.user.upload.uploadFileWithRename(docxFile, parentId, fileForUploadNewVersion)).entry.id; + + await apis.user.nodes.lockFile(fileForCancelEditingId); + await apis.user.nodes.lockFile(fileForUploadNewVersionId); await apis.user.nodes.lockFile(docxLockedId); - await apis.user.favorites.addFavoritesByIds('file', [docxFileId, docxLockedId, xlsxFileId, pdfFileId]) - await apis.user.favorites.waitForApi({expect: 4}); + await apis.user.favorites.addFavoritesByIds('file', [docxFileId, docxLockedId, xlsxFileId, pdfFileId, fileForEditOfflineId, fileForCancelEditingId, fileForUploadNewVersionId, fileFavId]) + await apis.user.favorites.waitForApi({expect: 8}); await loginPage.loginWith(username); done(); @@ -844,7 +1069,7 @@ describe('Viewer actions', () => { done(); }); - it('Correct actions appear in the viewer toolbar - []', async () => { + it('Correct actions appear in the viewer toolbar - [C297599]', async () => { await dataTable.doubleClickOnRowByName(docxFavorites); await viewer.waitForViewerToOpen(); @@ -865,11 +1090,12 @@ describe('Viewer actions', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); - it('Correct actions appear in the viewer toolbar for a locked file - []', async () => { + it('Correct actions appear in the viewer toolbar for a locked file - [C297600]', async () => { await dataTable.doubleClickOnRowByName(docxLockedFavorites); await viewer.waitForViewerToOpen(); @@ -890,6 +1116,7 @@ describe('Viewer actions', () => { expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed`); expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed`); expect(await toolbar.menu.isManageVersionsPresent()).toBe(true, `Manage versions is not displayed`); + expect(await toolbar.menu.isUploadNewVersionPresent()).toBe(true, `Upload new version is not displayed`); await toolbar.closeMoreMenu(); }); @@ -963,6 +1190,43 @@ describe('Viewer actions', () => { expect(await dataTable.isItemPresent(pdfFavorites)).toBe(true, 'Item is not present in Trash'); }); + it('Edit Offline action - [C297604]', async () => { + await dataTable.doubleClickOnRowByName(fileForEditOffline); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsEditOffline(); + + expect(await Utils.fileExistsOnOS(fileForEditOffline)).toBe(true, 'File not found in download location'); + expect(await apis.user.nodes.isFileLockedWrite(fileForEditOfflineId)).toBe(true, `${fileForEditOffline} is not locked`); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + }); + + it('Cancel Editing action - [C297605]', async () => { + await dataTable.doubleClickOnRowByName(fileForCancelEditing); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsCancelEditing(); + + expect(await apis.user.nodes.isFileLockedWrite(fileForCancelEditingId)).toBe(false, `${fileForCancelEditing} is still locked`); + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + }); + + it('Upload new version action - [C297606]', async () => { + await dataTable.doubleClickOnRowByName(fileFav); + await viewer.waitForViewerToOpen(); + await toolbar.clickMoreActionsUploadNewVersion(); + + await Utils.uploadFileNewVersion(docxFile2); + await page.waitForDialog(); + + await uploadNewVersionDialog.clickMajor(); + await uploadNewVersionDialog.enterDescription('new major version description'); + await uploadNewVersionDialog.clickUpload(); + + expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not open'); + expect(await viewer.getFileTitle()).toContain(docxFile2); + expect(await apis.user.nodes.getFileVersionType(fileFavId)).toEqual('MAJOR', 'File has incorrect version type'); + expect(await apis.user.nodes.getFileVersionLabel(fileFavId)).toEqual('2.0', 'File has incorrect version label'); + }); + it('Share action - [C286395]', async () => { await dataTable.doubleClickOnRowByName(docxFavorites); expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened'); diff --git a/e2e/utilities/repo-client/apis/nodes/nodes-api.ts b/e2e/utilities/repo-client/apis/nodes/nodes-api.ts index cc6bb1786..a42966463 100755 --- a/e2e/utilities/repo-client/apis/nodes/nodes-api.ts +++ b/e2e/utilities/repo-client/apis/nodes/nodes-api.ts @@ -58,6 +58,21 @@ export class NodesApi extends RepoApi { return ''; } + async getFileVersionType(nodeId: string) { + const prop = await this.getNodeProperty(nodeId, 'cm:versionType'); + if ( prop ) { + return prop; + } + return ''; + } + async getFileVersionLabel(nodeId: string) { + const prop = await this.getNodeProperty(nodeId, 'cm:versionLabel'); + if ( prop ) { + return prop; + } + return ''; + } + async getSharedId(nodeId: string) { return await this.getNodeProperty(nodeId, 'qshare:sharedId'); @@ -121,7 +136,7 @@ export class NodesApi extends RepoApi { return await this.createNode('cm:content', name, parentId, title, description, imageProps); } - async createNode(nodeType: string, name: string, parentId: string = '-my-', title: string = '', description: string = '', imageProps: any = null) { + async createNode(nodeType: string, name: string, parentId: string = '-my-', title: string = '', description: string = '', imageProps: any = null, majorVersion: boolean = true) { const nodeBody = { name, nodeType, @@ -135,11 +150,11 @@ export class NodesApi extends RepoApi { } await this.apiAuth(); - return await this.nodesApi.createNode(parentId, nodeBody); + return await this.nodesApi.createNode(parentId, nodeBody, { majorVersion: true }); } - async createFile(name: string, parentId: string = '-my-', title: string = '', description: string = '') { - return await this.createNode('cm:content', name, parentId, title, description); + async createFile(name: string, parentId: string = '-my-', title: string = '', description: string = '', majorVersion: boolean = true) { + return await this.createNode('cm:content', name, parentId, title, description, majorVersion); } async createImage(name: string, parentId: string = '-my-', title: string = '', description: string = '') { @@ -220,4 +235,17 @@ export class NodesApi extends RepoApi { await this.apiAuth(); return await this.nodesApi.unlockNode(nodeId); } + + async getLockType(nodeId: string) { + return await this.getNodeProperty(nodeId, 'cm:lockType'); + } + + async getLockOwner(nodeId: string) { + return await this.getNodeProperty(nodeId, 'cm:lockOwner'); + } + + async isFileLockedWrite(nodeId: string) { + await this.apiAuth(); + return (await this.getLockType(nodeId)) === 'WRITE_LOCK'; + } } diff --git a/e2e/utilities/utils.ts b/e2e/utilities/utils.ts index ec2c4c992..d77ed9196 100755 --- a/e2e/utilities/utils.ts +++ b/e2e/utilities/utils.ts @@ -23,11 +23,13 @@ * along with Alfresco. If not, see . */ -import { browser, protractor, promise, ElementFinder, ExpectedConditions as EC } from 'protractor'; +import { browser, protractor, promise, ElementFinder, ExpectedConditions as EC, by } from 'protractor'; import { BROWSER_WAIT_TIMEOUT, E2E_ROOT_PATH, EXTENSIBILITY_CONFIGS } from '../configs'; + const path = require('path'); const fs = require('fs'); + export class Utils { static string257 = 'assembly doctor offender limit clearance inspiration baker fraud active apples trait brainstorm concept breaks down presidential \ reluctance summary communication patience books opponent banana economist head develop project swear unanimous read conservation'; @@ -130,4 +132,10 @@ export class Utils { return new Date(date).toLocaleDateString('en-US'); } + + static async uploadFileNewVersion(fileFromOS: string) { + const el = browser.element(by.id('app-upload-file-version')); + await el.sendKeys(`${E2E_ROOT_PATH}/resources/test-files/${fileFromOS}`); + } + }