[ACA-2116] search results available actions (#895)

* add item.id to File Libraries

* add method to wait for node to be indexed

* create separate methods in queries API to wait for sites or wait for nodes

* improvements, renaming

* renaming

* fix

* add tests for actions on search results

* add wait and use new method

* fix

* another fix

* use correct method

* more fixes

* create method for clickView button

* fixes

* no message
This commit is contained in:
Adina Parpalita 2019-01-19 18:47:12 +02:00 committed by Denys Vuika
parent 0471b783a4
commit d2e0f688e8
36 changed files with 919 additions and 257 deletions

View File

@ -56,8 +56,7 @@
"keycodes",
"denysvuika",
"submenu",
"submenus",
"simpletask"
"submenus"
],
"dictionaries": ["html", "en-gb", "en_US"]
}

View File

@ -191,10 +191,14 @@ export class DataTable extends Component {
// Navigation/selection methods
async doubleClickOnRowByName(name: string) {
const item = this.getRowFirstCell(name);
await Utils.waitUntilElementClickable(item);
await browser.actions().mouseMove(item).perform();
await browser.actions().click().click().perform();
try {
const item = this.getRowFirstCell(name);
await Utils.waitUntilElementClickable(item);
await browser.actions().mouseMove(item).perform();
await browser.actions().click().click().perform();
} catch (error) {
console.log('--- catch: doubleClickOnRowByName', error);
}
}
async selectItem(name: string) {
@ -225,7 +229,7 @@ export class DataTable extends Component {
const count = await this.countSelectedRows();
if (count !== 0) {
await browser.refresh();
await this.waitForHeader();
await this.wait();
}
} catch (error) {
console.log('------ clearSelection catch : ', error);
@ -238,7 +242,7 @@ export class DataTable extends Component {
}
async rightClickOnMultipleSelection() {
await this.waitForHeader();
await this.wait();
const itemFromSelection = this.getSelectedRows().get(0);
await browser.actions().click(itemFromSelection, protractor.Button.RIGHT).perform();
}

View File

@ -23,7 +23,7 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { ElementFinder, by, browser, protractor, ExpectedConditions as EC, promise } from 'protractor';
import { ElementFinder, by, browser, protractor, ExpectedConditions as EC } from 'protractor';
import { BROWSER_WAIT_TIMEOUT } from '../../configs';
import { Component } from '../component';
import { Utils } from '../../utilities/utils';

View File

@ -23,9 +23,10 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { ElementFinder, browser, by, until, protractor } from 'protractor';
import { ElementFinder, browser, by, until, protractor, ExpectedConditions as EC } from 'protractor';
import { BROWSER_WAIT_TIMEOUT } from '../../configs';
import { Component } from '../component';
import { Utils } from '../../utilities/utils';
export class SearchInput extends Component {
private static selectors = {
@ -35,27 +36,36 @@ export class SearchInput extends Component {
searchControl: '.app-search-control',
searchInput: 'app-control-input',
searchOptionsArea: 'search-options',
optionCheckbox: '.mat-checkbox'
optionCheckbox: '.mat-checkbox',
clearButton: '.app-clear-icon'
};
searchButton: ElementFinder = this.component.element(by.css(SearchInput.selectors.searchButton));
searchContainer: ElementFinder = browser.element(by.css(SearchInput.selectors.searchContainer));
searchControl: ElementFinder = browser.element(by.css(SearchInput.selectors.searchControl));
searchBar: ElementFinder = browser.element(by.id(SearchInput.selectors.searchInput));
searchOptionsArea: ElementFinder = browser.element(by.id(SearchInput.selectors.searchOptionsArea));
searchFilesOption: ElementFinder = this.searchOptionsArea.element(by.cssContainingText(SearchInput.selectors.optionCheckbox, 'Files'));
searchFoldersOption: ElementFinder = this.searchOptionsArea.element(by.cssContainingText(SearchInput.selectors.optionCheckbox, 'Folders'));
searchLibrariesOption: ElementFinder = this.searchOptionsArea.element(by.cssContainingText(SearchInput.selectors.optionCheckbox, 'Libraries'));
clearSearchButton: ElementFinder = this.searchContainer.$(SearchInput.selectors.clearButton);
constructor(ancestor?: ElementFinder) {
super(SearchInput.selectors.root, ancestor);
}
async waitForSearchControl() {
return await browser.wait(EC.presenceOf(this.searchControl), BROWSER_WAIT_TIMEOUT, '--- timeout waitForSearchControl ---');
}
async isSearchContainerDisplayed() {
return (await this.searchContainer.isDisplayed()) && (await this.searchButton.isDisplayed());
}
async clickSearchButton() {
await Utils.waitUntilElementClickable(this.searchButton);
await this.searchButton.click();
await this.waitForSearchControl();
}
async isOptionsAreaDisplayed() {
@ -117,6 +127,16 @@ export class SearchInput extends Component {
}
}
async isClearSearchButtonPresent() {
return await browser.isElementPresent(this.clearSearchButton);
}
async clickClearSearchButton() {
if (await this.isClearSearchButtonPresent()) {
return await this.clearSearchButton.click();
}
}
async checkOnlyFiles() {
await this.clearOptions();
await this.clickFilesOption();
@ -139,8 +159,14 @@ export class SearchInput extends Component {
}
async searchFor(text: string) {
await browser.wait(EC.elementToBeClickable(this.searchBar), BROWSER_WAIT_TIMEOUT, '---- timeout waiting for searchBar to be clickable');
await this.searchBar.clear();
await this.searchBar.sendKeys(text);
await this.searchBar.sendKeys(protractor.Key.ENTER);
}
async searchForTextAndCloseSearchOptions(text: string) {
await this.searchFor(text);
await Utils.pressEscape();
}
}

View File

@ -36,15 +36,34 @@ export class Sidenav extends Component {
label: '.item--label',
expansion_panel: ".mat-expansion-panel-header",
expansion_panel_content: ".mat-expansion-panel-body",
active: 'item--active',
activeLink: '.item--active',
newButton: '[data-automation-id="create-button"]'
active: 'mat-accent',
activeLink: '.mat-accent',
activeChild: 'item--active',
newButton: '[data-automation-id="create-button"]',
personalFiles: `[id='app.navbar.personalFiles']`,
fileLibraries: `[id='app.navbar.libraries.menu']`,
myLibraries: `[id='app.navbar.libraries.files']`,
favoriteLibraries: `[id='app.navbar.libraries.favorite']`,
shared: `[id='app.navbar.shared']`,
recentFiles: `[id='app.navbar.recentFiles']`,
favorites: `[id='app.navbar.favorites']`,
trash: `[id='app.navbar.trashcan']`
};
links: ElementArrayFinder = this.component.all(by.css(Sidenav.selectors.link));
activeLink: ElementFinder = this.component.element(by.css(Sidenav.selectors.activeLink));
newButton: ElementArrayFinder = this.component.all(by.css(Sidenav.selectors.newButton));
personalFiles: ElementFinder = this.component.element(by.css(Sidenav.selectors.personalFiles));
fileLibraries: ElementFinder = this.component.element(by.css(Sidenav.selectors.fileLibraries));
myLibraries: ElementFinder = this.component.element(by.css(Sidenav.selectors.myLibraries));
favoriteLibraries: ElementFinder = this.component.element(by.css(Sidenav.selectors.favoriteLibraries));
shared: ElementFinder = this.component.element(by.css(Sidenav.selectors.shared));
recentFiles: ElementFinder = this.component.element(by.css(Sidenav.selectors.recentFiles));
favorites: ElementFinder = this.component.element(by.css(Sidenav.selectors.favorites));
trash: ElementFinder = this.component.element(by.css(Sidenav.selectors.trash));
menu: Menu = new Menu();
constructor(ancestor?: ElementFinder) {
@ -92,7 +111,7 @@ export class Sidenav extends Component {
async childIsActive(name: string) {
const childClass = await this.getLinkLabel(name).element(by.css('span')).getAttribute('class');
return childClass.includes(Sidenav.selectors.active);
return childClass.includes(Sidenav.selectors.activeChild);
}
getLink(name: string) {
@ -100,7 +119,17 @@ export class Sidenav extends Component {
}
getLinkLabel(name: string) {
return this.component.element(by.cssContainingText(Sidenav.selectors.label, name));
switch (name) {
case 'Personal Files': return this.personalFiles;
case 'File Libraries': return this.fileLibraries;
case 'My Libraries': return this.myLibraries;
case 'Favorite Libraries': return this.favoriteLibraries;
case 'Shared': return this.shared;
case 'Recent Files': return this.recentFiles;
case 'Favorites': return this.favorites;
case 'Trash': return this.trash;
default: return this.personalFiles;
}
}
getActiveLink() {
@ -111,14 +140,14 @@ export class Sidenav extends Component {
return await this.getLink(name).getAttribute('title');
}
async navigateToLink(name: string) {
async clickLink(name: string) {
try{
const link = this.getLinkLabel(name);
await Utils.waitUntilElementClickable(link);
return await link.click();
} catch (e){
console.log('---- sidebar navigation catch navigateToLink: ', e);
console.log('---- sidebar navigation catch clickLink: ', e);
}
}

View File

@ -23,9 +23,10 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { ElementFinder, ElementArrayFinder, by, protractor, browser } from 'protractor';
import { ElementFinder, ElementArrayFinder, by, browser } from 'protractor';
import { Menu } from '../menu/menu';
import { Component } from '../component';
import { Utils } from '../../utilities/utils';
export class Toolbar extends Component {
private static selectors = {
@ -95,7 +96,7 @@ export class Toolbar extends Component {
}
async closeMoreMenu() {
await browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
await Utils.pressEscape();
}
async getButtonTooltip(button: ElementFinder) {
@ -150,6 +151,10 @@ export class Toolbar extends Component {
}
async clickView() {
return await this.viewButton.click();
}
async clickEdit() {
return await this.editButton.click();
}

View File

@ -69,10 +69,15 @@ export const SIDEBAR_LABELS = {
// Page titles
export const PAGE_TITLES = {
VIEWER: 'Preview',
SEARCH: 'Search Results',
PERSONAL_FILES: 'Personal Files',
MY_LIBRARIES: 'My Libraries',
FAVORITE_LIBRARIES: 'Favorite Libraries'
FAVORITE_LIBRARIES: 'Favorite Libraries',
SHARED_FILES: 'Shared',
RECENT_FILES: 'Recent Files',
FAVORITES: 'Favorites',
TRASH: 'Trash',
VIEWER: 'Preview',
SEARCH: 'Search Results'
};
// Site visibility

View File

@ -45,76 +45,89 @@ export class BrowsingPage extends Page {
// helper methods
async clickPersonalFilesAndWait() {
await this.sidenav.navigateToLink(SIDEBAR_LABELS.PERSONAL_FILES);
await this.dataTable.waitForHeader();
}
async clickPersonalFiles() {
await this.sidenav.navigateToLink(SIDEBAR_LABELS.PERSONAL_FILES);
await this.sidenav.clickLink(SIDEBAR_LABELS.PERSONAL_FILES);
}
async clickFileLibrariesAndWait() {
await this.sidenav.expandFileLibraries();
await this.sidenav.navigateToLink(SIDEBAR_LABELS.MY_LIBRARIES);
async clickPersonalFilesAndWait() {
await this.clickPersonalFiles();
await this.dataTable.waitForHeader();
}
async clickFileLibraries() {
await this.sidenav.expandFileLibraries();
await this.sidenav.navigateToLink(SIDEBAR_LABELS.MY_LIBRARIES);
await this.sidenav.clickLink(SIDEBAR_LABELS.FILE_LIBRARIES);
}
async goToFavoriteLibraries() {
await this.sidenav.expandFileLibraries();
await this.sidenav.navigateToLink(SIDEBAR_LABELS.FAVORITE_LIBRARIES);
async clickFileLibrariesAndWait() {
await this.clickFileLibraries();
await this.dataTable.waitForHeader();
}
async goToFavoriteLibraries() {
if ( !(await this.sidenav.isFileLibrariesMenuExpanded()) ) {
await this.sidenav.expandFileLibraries();
}
await this.sidenav.clickLink(SIDEBAR_LABELS.FAVORITE_LIBRARIES);
}
async goToFavoriteLibrariesAndWait() {
await this.goToFavoriteLibraries();
await this.dataTable.waitForHeader();
}
async goToMyLibraries() {
if ( !(await this.sidenav.isFileLibrariesMenuExpanded()) ) {
await this.sidenav.expandFileLibraries();
}
await this.sidenav.navigateToLink(SIDEBAR_LABELS.MY_LIBRARIES);
await this.sidenav.clickLink(SIDEBAR_LABELS.MY_LIBRARIES);
}
async goToMyLibrariesAndWait() {
await this.goToMyLibraries();
await this.dataTable.waitForHeader();
}
async clickRecentFiles() {
await this.sidenav.clickLink(SIDEBAR_LABELS.RECENT_FILES);
}
async clickRecentFilesAndWait() {
await this.sidenav.navigateToLink(SIDEBAR_LABELS.RECENT_FILES);
await this.clickRecentFiles();
await this.dataTable.waitForHeader();
}
async clickRecentFiles() {
await this.sidenav.navigateToLink(SIDEBAR_LABELS.RECENT_FILES);
}
async clickSharedFilesAndWait() {
await this.sidenav.navigateToLink(SIDEBAR_LABELS.SHARED_FILES);
await this.dataTable.waitForHeader();
}
async clickSharedFiles() {
await this.sidenav.navigateToLink(SIDEBAR_LABELS.SHARED_FILES);
await this.sidenav.clickLink(SIDEBAR_LABELS.SHARED_FILES);
}
async clickFavoritesAndWait() {
await this.sidenav.navigateToLink(SIDEBAR_LABELS.FAVORITES);
async clickSharedFilesAndWait() {
await this.clickSharedFiles();
await this.dataTable.waitForHeader();
}
async clickFavorites() {
await this.sidenav.navigateToLink(SIDEBAR_LABELS.FAVORITES);
await this.sidenav.clickLink(SIDEBAR_LABELS.FAVORITES);
}
async clickTrashAndWait() {
await this.sidenav.navigateToLink(SIDEBAR_LABELS.TRASH);
async clickFavoritesAndWait() {
await this.clickFavorites();
await this.dataTable.waitForHeader();
}
async clickTrash() {
await this.sidenav.navigateToLink(SIDEBAR_LABELS.TRASH);
await this.sidenav.clickLink(SIDEBAR_LABELS.TRASH);
}
async clickTrashAndWait() {
await this.clickTrash();
await this.dataTable.waitForHeader();
}
}

View File

@ -27,7 +27,7 @@ import { browser, by, ElementFinder, ExpectedConditions as EC, until } from 'pro
import { BROWSER_WAIT_TIMEOUT, USE_HASH_STRATEGY } from './../configs';
export abstract class Page {
private static selectors = {
protected static locators = {
app: 'app-root',
layout: 'app-layout',
overlay: '.cdk-overlay-container',
@ -41,17 +41,17 @@ export abstract class Page {
genericErrorTitle: '.generic-error__title'
};
app: ElementFinder = browser.element(by.css(Page.selectors.app));
layout: ElementFinder = browser.element(by.css(Page.selectors.layout));
overlay: ElementFinder = browser.element(by.css(Page.selectors.overlay));
snackBar: ElementFinder = browser.element(by.css(Page.selectors.snackBar));
dialogContainer: ElementFinder = browser.element(by.css(Page.selectors.dialogContainer));
snackBarContainer: ElementFinder = browser.element(by.css(Page.selectors.snackBarContainer));
snackBarAction: ElementFinder = browser.element(by.css(Page.selectors.snackBarAction));
app: ElementFinder = browser.element(by.css(Page.locators.app));
layout: ElementFinder = browser.element(by.css(Page.locators.layout));
overlay: ElementFinder = browser.element(by.css(Page.locators.overlay));
snackBar: ElementFinder = browser.element(by.css(Page.locators.snackBar));
dialogContainer: ElementFinder = browser.element(by.css(Page.locators.dialogContainer));
snackBarContainer: ElementFinder = browser.element(by.css(Page.locators.snackBarContainer));
snackBarAction: ElementFinder = browser.element(by.css(Page.locators.snackBarAction));
genericError: ElementFinder = browser.element(by.css(Page.selectors.genericError));
genericErrorIcon: ElementFinder = browser.element(by.css(Page.selectors.genericErrorIcon));
genericErrorTitle: ElementFinder = browser.element(by.css(Page.selectors.genericErrorTitle));
genericError: ElementFinder = browser.element(by.css(Page.locators.genericError));
genericErrorIcon: ElementFinder = browser.element(by.css(Page.locators.genericErrorIcon));
genericErrorTitle: ElementFinder = browser.element(by.css(Page.locators.genericErrorTitle));
constructor(public url: string = '') {}

View File

@ -23,7 +23,7 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { LoginPage, BrowsingPage } from '../../pages/pages';
import { LoginPage, BrowsingPage, SearchResultsPage } from '../../pages/pages';
import { SITE_VISIBILITY } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
@ -31,11 +31,11 @@ import { Utils } from '../../utilities/utils';
describe('Context menu actions - multiple selection : ', () => {
const username = `user-${Utils.random()}`;
const file1 = `file1-${Utils.random()}.txt`; let file1Id;
const file2 = `file2-${Utils.random()}.txt`; let file2Id;
const file1 = `my-file1-${Utils.random()}.txt`; let file1Id;
const file2 = `my-file2-${Utils.random()}.txt`; let file2Id;
const folder1 = `folder1-${Utils.random()}`; let folder1Id;
const folder2 = `folder2-${Utils.random()}`; let folder2Id;
const folder1 = `my-folder1-${Utils.random()}`; let folder1Id;
const folder2 = `my-folder2-${Utils.random()}`; let folder2Id;
const fileInTrash1 = `deletedFile1-${Utils.random()}.txt`; let fileInTrash1Id;
const fileInTrash2 = `deletedFile2-${Utils.random()}.txt`; let fileInTrash2Id;
@ -43,10 +43,10 @@ describe('Context menu actions - multiple selection : ', () => {
const folderInTrash2 = `deletedFolder2-${Utils.random()}`; let folderInTrash2Id;
const siteName = `site-${Utils.random()}`;
const file1Site = `file1-${Utils.random()}.txt`;
const file2Site = `file2-${Utils.random()}.txt`;
const folder1Site = `folder1-${Utils.random()}`;
const folder2Site = `folder2-${Utils.random()}`;
const file1Site = `my-inSite-file1-${Utils.random()}.txt`;
const file2Site = `my-inSite-file2-${Utils.random()}.txt`;
const folder1Site = `my-inSite-folder1-${Utils.random()}`;
const folder2Site = `my-inSite-folder2-${Utils.random()}`;
const apis = {
admin: new RepoClient(),
@ -57,6 +57,8 @@ describe('Context menu actions - multiple selection : ', () => {
const page = new BrowsingPage();
const { dataTable } = page;
const contextMenu = dataTable.menu;
const searchResultsPage = new SearchResultsPage();
const { searchInput } = searchResultsPage.header;
beforeAll(async (done) => {
await apis.admin.people.createUser({ username });
@ -70,7 +72,7 @@ describe('Context menu actions - multiple selection : ', () => {
await apis.user.nodes.createFile(file1Site, docLibId);
await apis.user.nodes.createFile(file2Site, docLibId);
await apis.user.nodes.createFolder(folder1Site, docLibId);
await apis.user.nodes.createFile(folder2Site, docLibId);
await apis.user.nodes.createFolder(folder2Site, docLibId);
await apis.user.shared.shareFilesByIds([ file1Id, file2Id ]);
await apis.user.shared.waitForApi({ expect: 2 });
@ -179,10 +181,9 @@ describe('Context menu actions - multiple selection : ', () => {
describe('on File Libraries', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
await dataTable.clearSelection();
done();
});
@ -382,4 +383,63 @@ describe('Context menu actions - multiple selection : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(false, `Favorite is displayed`);
});
});
describe('on Search Results', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickPersonalFilesAndWait();
done();
});
it('correct actions appear when multiple files are selected - [C291831]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFiles();
await searchInput.searchForTextAndCloseSearchOptions('my-inSite-file');
await dataTable.selectMultipleItems([ file1Site, file2Site ]);
await dataTable.rightClickOnMultipleSelection();
expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
expect(await contextMenu.isEditPresent()).toBe(false, 'Edit is displayed');
expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed`);
});
it('correct actions appear when multiple folders are selected - [C291832]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFolders();
await searchInput.searchForTextAndCloseSearchOptions('my-inSite-folder');
await dataTable.selectMultipleItems([ folder1Site, folder2Site ]);
await dataTable.rightClickOnMultipleSelection();
expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
expect(await contextMenu.isEditPresent()).toBe(false, 'Edit is displayed');
expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed`);
});
it('correct actions appear when both files and folders are selected - [C291833]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkFilesAndFolders();
await searchInput.searchForTextAndCloseSearchOptions('my-inSite-f');
await dataTable.selectMultipleItems([ file1Site, file2Site, folder1Site, folder2Site ]);
await dataTable.rightClickOnMultipleSelection();
expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
expect(await contextMenu.isEditPresent()).toBe(false, 'Edit is displayed');
expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed`);
});
});
});

View File

@ -23,7 +23,7 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { LoginPage, BrowsingPage } from '../../pages/pages';
import { LoginPage, BrowsingPage, SearchResultsPage } from '../../pages/pages';
import { SITE_VISIBILITY } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
@ -52,6 +52,8 @@ describe('Context menu actions - single selection : ', () => {
const page = new BrowsingPage();
const { dataTable } = page;
const contextMenu = dataTable.menu;
const searchResultsPage = new SearchResultsPage();
const { searchInput } = searchResultsPage.header;
beforeAll(async (done) => {
await apis.admin.people.createUser({ username });
@ -82,6 +84,10 @@ describe('Context menu actions - single selection : ', () => {
await apis.user.favorites.addFavoriteById('site', adminModerated);
await apis.user.sites.requestToJoin(adminModerated);
await apis.user.queries.waitForSites(siteName, { expect: 1 });
await apis.user.queries.waitForSites(adminPublic, { expect: 1 });
await apis.user.queries.waitForSites(adminModerated, { expect: 1 });
await loginPage.loginWith(username);
done();
});
@ -186,7 +192,7 @@ describe('Context menu actions - single selection : ', () => {
describe('on File Libraries', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
done();
@ -231,8 +237,8 @@ describe('Context menu actions - single selection : ', () => {
done();
});
it('Available actions when a library is selected - My Libraries - [C290080]', async () => {
await page.goToMyLibraries();
it('Available actions for a library - My Libraries - [C290080]', async () => {
await page.goToMyLibrariesAndWait();
await dataTable.rightClickOnItem(siteName);
expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
@ -241,8 +247,8 @@ describe('Context menu actions - single selection : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
});
it('Available actions when a library is selected - Favorite Libraries - user is a member - [C290081]', async () => {
await page.goToFavoriteLibraries();
it('Available actions for a library - Favorite Libraries - user is a member - [C290081]', async () => {
await page.goToFavoriteLibrariesAndWait();
await dataTable.rightClickOnItem(siteName);
expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
@ -251,8 +257,8 @@ describe('Context menu actions - single selection : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
});
it('Available actions when a library is selected - Favorite Libraries - user is not a member - [C290082]', async () => {
await page.goToFavoriteLibraries();
it('Available actions for a library - Favorite Libraries - user is not a member - [C290082]', async () => {
await page.goToFavoriteLibrariesAndWait();
await dataTable.rightClickOnItem(adminPublic);
expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
@ -261,8 +267,44 @@ describe('Context menu actions - single selection : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminPublic}`);
});
it('Available actions when a library is selected - Favorite Libraries - user requested to join - [C290089]', async () => {
await page.goToFavoriteLibraries();
it('Available actions for a moderated library - Favorite Libraries - user requested to join - [C290089]', async () => {
await page.goToFavoriteLibrariesAndWait();
await dataTable.rightClickOnItem(adminModerated);
expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
expect(await contextMenu.isCancelJoinPresent()).toBe(true, `Cancel join is not displayed for ${adminModerated}`);
expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminModerated}`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminModerated}`);
});
it('Available actions for a library - Search Results - user is a member - [C291812]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkLibraries();
await searchInput.searchForTextAndCloseSearchOptions(siteName);
await dataTable.rightClickOnItem(siteName);
expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
expect(await contextMenu.isLeaveLibraryPresent()).toBe(true, `Leave is not displayed for ${siteName}`);
expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${siteName}`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
});
it('Available actions for a library - Search Results - user is not a member - [C291813]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkLibraries();
await searchInput.searchForTextAndCloseSearchOptions(adminPublic);
await dataTable.rightClickOnItem(adminPublic);
expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
expect(await contextMenu.isJoinLibraryPresent()).toBe(true, `Join is not displayed for ${adminPublic}`);
expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminPublic}`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminPublic}`);
});
it('Available actions for a moderated library - Search Results - user requested to join - [C291814]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkLibraries();
await searchInput.searchForTextAndCloseSearchOptions(adminModerated);
await dataTable.rightClickOnItem(adminModerated);
expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
@ -374,15 +416,15 @@ describe('Context menu actions - single selection : ', () => {
expect(await contextMenu.isPermanentDeletePresent())
.toBe(true, `Permanently delete is not displayed for ${fileInTrash}`);
expect(await contextMenu.isRestorePresent()).toBe(true, `Restore is not displayed for ${fileInTrash}`);
expect(await contextMenu.isDownloadPresent()).toBe(false, `Download is not displayed for ${fileInTrash}`);
expect(await contextMenu.isViewPresent()).toBe(false, `View is not displayed for ${fileInTrash}`);
expect(await contextMenu.isFavoritePresent()).toBe(false, `Favorite is not displayed for ${fileInTrash}`);
expect(await contextMenu.isCopyPresent()).toBe(false, `Copy is not displayed for ${fileInTrash}`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is not displayed for ${fileInTrash}`);
expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is not displayed for ${fileInTrash}`);
expect(await contextMenu.isSharePresent()).toBe(false, `Share is not displayed for ${fileInTrash}`);
expect(await contextMenu.isDownloadPresent()).toBe(false, `Download is displayed for ${fileInTrash}`);
expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${fileInTrash}`);
expect(await contextMenu.isFavoritePresent()).toBe(false, `Favorite is displayed for ${fileInTrash}`);
expect(await contextMenu.isCopyPresent()).toBe(false, `Copy is displayed for ${fileInTrash}`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${fileInTrash}`);
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 not displayed for ${fileInTrash}`);
.toBe(false, `Manage Versions is displayed for ${fileInTrash}`);
expect(await contextMenu.isEditPresent()).toBe(false, `Edit is displayed for ${fileInTrash}`);
expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileInTrash}`);
});
@ -393,17 +435,62 @@ describe('Context menu actions - single selection : ', () => {
expect(await contextMenu.isPermanentDeletePresent())
.toBe(true, `Permanently delete is not displayed for ${folderInTrash}`);
expect(await contextMenu.isRestorePresent()).toBe(true, `Restore is not displayed for ${folderInTrash}`);
expect(await contextMenu.isDownloadPresent()).toBe(false, `Download is not displayed for ${folderInTrash}`);
expect(await contextMenu.isViewPresent()).toBe(false, `View is not displayed for ${folderInTrash}`);
expect(await contextMenu.isFavoritePresent()).toBe(false, `Favorite is not displayed for ${folderInTrash}`);
expect(await contextMenu.isCopyPresent()).toBe(false, `Copy is not displayed for ${folderInTrash}`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is not displayed for ${folderInTrash}`);
expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is not displayed for ${folderInTrash}`);
expect(await contextMenu.isSharePresent()).toBe(false, `Share is not displayed for ${folderInTrash}`);
expect(await contextMenu.isDownloadPresent()).toBe(false, `Download is displayed for ${folderInTrash}`);
expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folderInTrash}`);
expect(await contextMenu.isFavoritePresent()).toBe(false, `Favorite is displayed for ${folderInTrash}`);
expect(await contextMenu.isCopyPresent()).toBe(false, `Copy is displayed for ${folderInTrash}`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${folderInTrash}`);
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 not displayed for ${folderInTrash}`);
.toBe(false, `Manage Versions is displayed for ${folderInTrash}`);
expect(await contextMenu.isEditPresent()).toBe(false, `Edit is displayed for ${folderInTrash}`);
expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${folderInTrash}`);
});
});
describe('on Search Results', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickPersonalFilesAndWait();
done();
});
it('Context menu has the correct actions for a file - [C291827]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFiles();
await searchInput.searchForTextAndCloseSearchOptions(fileSiteUser);
await dataTable.rightClickOnItem(fileSiteUser);
expect(await contextMenu.isDownloadPresent()).toBe(true, `Download is not displayed for ${fileSiteUser}`);
expect(await contextMenu.isViewPresent()).toBe(true, `View is not displayed for ${fileSiteUser}`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileSiteUser}`);
expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed for ${fileSiteUser}`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${fileSiteUser}`);
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.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileSiteUser}`);
expect(await contextMenu.isEditPresent()).toBe(false, `Edit 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 folder - [C291828]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFolders();
await searchInput.searchForTextAndCloseSearchOptions(folderSiteUser);
await dataTable.rightClickOnItem(folderSiteUser);
expect(await contextMenu.isDownloadPresent()).toBe(true, `Download is not displayed for ${folderSiteUser}`);
expect(await contextMenu.isEditPresent()).toBe(true, `Edit is not displayed for ${folderSiteUser}`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folderSiteUser}`);
expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed for ${folderSiteUser}`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${folderSiteUser}`);
expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${folderSiteUser}`);
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.isSharePresent()).toBe(false, `Share is displayed for ${folderSiteUser}`);
});
});
});

View File

@ -216,7 +216,7 @@ describe('Create folder', () => {
const fileLibrariesPage = new BrowsingPage();
beforeEach(async (done) => {
await fileLibrariesPage.clickFileLibrariesAndWait();
await fileLibrariesPage.goToMyLibrariesAndWait();
done();
});

View File

@ -106,7 +106,7 @@ describe('Create library', () => {
await createDialog.waitForDialogToClose();
expect(await page.breadcrumb.getCurrentItemName()).toEqual(site1Name, `Not navigated into ${site1Name}`);
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
expect(await dataTable.isItemPresent(site1Name)).toBe(true, `${site1Name} not in the list`);
expect(await apis.user.sites.getVisibility(site1Name)).toEqual(SITE_VISIBILITY.PUBLIC);
});
@ -120,7 +120,7 @@ describe('Create library', () => {
await createDialog.waitForDialogToClose();
expect(await page.breadcrumb.getCurrentItemName()).toEqual(site2Name, `Not navigated into ${site2Name}`);
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
expect(await dataTable.isItemPresent(site2Name)).toBe(true, `${site2Name} not in the list`);
expect(await apis.user.sites.getVisibility(site2Name)).toEqual(SITE_VISIBILITY.MODERATED);
});
@ -134,7 +134,7 @@ describe('Create library', () => {
await createDialog.waitForDialogToClose();
expect(await page.breadcrumb.getCurrentItemName()).toEqual(site3Name, `Not navigated into ${site3Name}`);
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
expect(await dataTable.isItemPresent(site3Name)).toBe(true, `${site3Name} not in the list`);
expect(await apis.user.sites.getVisibility(site3Name)).toEqual(SITE_VISIBILITY.PRIVATE);
});
@ -150,7 +150,7 @@ describe('Create library', () => {
await createDialog.waitForDialogToClose();
expect(await page.breadcrumb.getCurrentItemName()).toEqual(site4.name, `Not navigated into ${site4.name}`);
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
expect(await dataTable.isItemPresent(site4.name)).toBe(true, `${site4.name} not in the list`);
expect(await apis.user.sites.getVisibility(site4.id)).toEqual(SITE_VISIBILITY.PUBLIC);
expect(await apis.user.sites.getDescription(site4.id)).toEqual(site4.description);
@ -209,7 +209,7 @@ describe('Create library', () => {
await createDialog.waitForDialogToClose();
expect(await page.breadcrumb.getCurrentItemName()).toEqual(duplicateSite.name, `Not navigated into ${duplicateSite.name}`);
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
expect(await dataTable.isItemPresent(`${duplicateSite.name} (${duplicateSite.id}-2)`)).toBe(true, `${duplicateSite.name} not in the list`);
expect(await apis.user.sites.getTitle(`${duplicateSite.id}-2`)).toEqual(duplicateSite.name);
});

View File

@ -244,7 +244,7 @@ describe('Edit folder', () => {
describe('on My Libraries', () => {
beforeEach(async (done) => {
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
done();
});

View File

@ -96,7 +96,7 @@ describe('Library actions', () => {
});
it('Join a public library - Favorite Libraries - [C290105]', async () => {
await page.goToFavoriteLibraries();
await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(sitePublic1Admin);
await toolbar.clickJoin();
@ -104,7 +104,7 @@ describe('Library actions', () => {
});
it('Join a moderated library - Favorite Libraries - [C290109]', async () => {
await page.goToFavoriteLibraries();
await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(siteModerated1Admin);
await toolbar.clickJoin();
@ -114,7 +114,7 @@ describe('Library actions', () => {
});
it('Leave a library - My Libraries - [C290106]', async () => {
await page.goToMyLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.selectItem(sitePublic2Admin);
await toolbar.clickLeave();
await page.waitForDialog();
@ -125,7 +125,7 @@ describe('Library actions', () => {
});
it('Leave a library - Favorite Libraries - [C290110]', async () => {
await page.goToFavoriteLibraries();
await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(sitePublic3Admin);
await toolbar.clickLeave();
await page.waitForDialog();
@ -136,7 +136,7 @@ describe('Library actions', () => {
});
it('Confirmation dialog UI - [C290136]', async () => {
await page.goToMyLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.selectItem(sitePublic4Admin);
await toolbar.clickLeave();
await page.waitForDialog();
@ -149,7 +149,7 @@ describe('Library actions', () => {
});
it('Cancel Leave library - [C290111]', async () => {
await page.goToMyLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.selectItem(sitePublic4Admin);
await toolbar.clickLeave();
await page.waitForDialog();
@ -160,7 +160,7 @@ describe('Library actions', () => {
});
it('Leave a library - failure notification - [C290107]', async () => {
await page.goToMyLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.selectItem(sitePublicUser);
await toolbar.clickLeave();
await page.waitForDialog();
@ -170,7 +170,7 @@ describe('Library actions', () => {
});
it('Cancel join - Favorite Libraries - [C290108]', async () => {
await page.goToFavoriteLibraries();
await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(siteModerated2Admin);
await toolbar.clickButton('Cancel join request');

View File

@ -369,7 +369,7 @@ describe('Mark items as favorites', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await page.dataTable.doubleClickOnRowByName(siteName);
await page.dataTable.waitForHeader();
done();
@ -457,7 +457,7 @@ describe('Mark items as favorites', () => {
});
it('Mark a library as favorite - [C289974]', async () => {
await page.goToMyLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.selectItem(adminSite1);
await toolbar.clickMoreActionsFavorite();
@ -465,7 +465,7 @@ describe('Mark items as favorites', () => {
});
it('Remove a library from favorites - on My Libraries - [C289975]', async () => {
await page.goToMyLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.selectItem(adminSite2);
await toolbar.clickMoreActionsFavorite();
@ -473,7 +473,7 @@ describe('Mark items as favorites', () => {
});
it('Remove a library from favorites - on Favorite Libraries - [C289976]', async () => {
await page.goToFavoriteLibraries();
await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(adminSite3);
await toolbar.clickMoreActionsFavorite();

View File

@ -86,14 +86,14 @@ describe('New menu', () => {
});
it('Create folder is enabled when having enough permissions - File Libraries - [C280393]', async () => {
await page.clickFileLibraries();
await page.goToMyLibrariesAndWait();
await page.dataTable.doubleClickOnRowByName(siteUser);
await page.sidenav.openNewMenu();
expect(await sidenav.menu.isCreateFolderEnabled()).toBe(true, 'Create folder is not enabled');
});
it('Create folder is disabled when not enough permissions - [C280397]', async () => {
await page.clickFileLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteAdmin);
await sidenav.openNewMenu();
expect(await sidenav.menu.isCreateFolderEnabled()).toBe(false, 'Create folder is not disabled');
@ -107,7 +107,7 @@ describe('New menu', () => {
});
it('Upload File option is enabled when having permissions - on File Libraries - [C290142]', async () => {
await page.clickFileLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteUser);
await sidenav.openNewMenu();
@ -115,7 +115,7 @@ describe('New menu', () => {
});
it('Upload File option is disabled when user cannot create content in that location - [C217146]', async () => {
await page.clickFileLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteAdmin);
await sidenav.openNewMenu();
@ -130,7 +130,7 @@ describe('New menu', () => {
});
it('Upload Folder option is enabled when having permissions - on File Libraries - [C290146]', async () => {
await page.clickFileLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteUser);
await sidenav.openNewMenu();
@ -138,7 +138,7 @@ describe('New menu', () => {
});
it('Upload Folder option is disabled when user cannot create content in that location - [C213193]', async () => {
await page.clickFileLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteAdmin);
await sidenav.openNewMenu();
@ -154,7 +154,7 @@ describe('New menu', () => {
});
it('Create folder disabled button tooltip - [C280398]', async () => {
await page.clickFileLibraries();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteAdmin);
await sidenav.openNewMenu();

View File

@ -261,14 +261,14 @@ describe('Share a file', () => {
describe('from File Libraries', () => {
const file1 = `file1-${Utils.random()}.txt`; let file1Id;
const file2 = `file2-${Utils.random()}.txt`; let file2Id;
const file1 = `file1-${Utils.random()}.txt`;
const file2 = `file2-${Utils.random()}.txt`;
const file3 = `file3-${Utils.random()}.txt`; let file3Id;
const file4 = `file4-${Utils.random()}.txt`; let file4Id;
const file4 = `file4-${Utils.random()}.txt`;
const file5 = `file5-${Utils.random()}.txt`; let file5Id;
const file6 = `file6-${Utils.random()}.txt`; let file6Id;
const file7 = `file7-${Utils.random()}.txt`; let file7Id;
const file8 = `file8-${Utils.random()}.txt`; let file8Id;
const file8 = `file8-${Utils.random()}.txt`;
const file9 = `file9-${Utils.random()}.txt`; let file9Id;
const siteName = `site-${Utils.random()}`;
@ -279,14 +279,14 @@ describe('Share a file', () => {
const docLibId = await apis.user.sites.getDocLibId(siteName);
parentInSiteId = (await apis.user.nodes.createFolder(parentInSite, docLibId)).entry.id;
file1Id = (await apis.user.nodes.createFile(file1, parentInSiteId)).entry.id;
file2Id = (await apis.user.nodes.createFile(file2, parentInSiteId)).entry.id;
await apis.user.nodes.createFile(file1, parentInSiteId);
await apis.user.nodes.createFile(file2, parentInSiteId);
file3Id = (await apis.user.nodes.createFile(file3, parentInSiteId)).entry.id;
file4Id = (await apis.user.nodes.createFile(file4, parentInSiteId)).entry.id;
await apis.user.nodes.createFile(file4, parentInSiteId);
file5Id = (await apis.user.nodes.createFile(file5, parentInSiteId)).entry.id;
file6Id = (await apis.user.nodes.createFile(file6, parentInSiteId)).entry.id;
file7Id = (await apis.user.nodes.createFile(file7, parentInSiteId)).entry.id;
file8Id = (await apis.user.nodes.createFile(file8, parentInSiteId)).entry.id;
await apis.user.nodes.createFile(file8, parentInSiteId);
file9Id = (await apis.user.nodes.createFile(file9, parentInSiteId)).entry.id;
await apis.user.shared.shareFileById(file6Id, expiryDate);
await apis.user.shared.shareFileById(file7Id, expiryDate);
@ -295,7 +295,7 @@ describe('Share a file', () => {
});
beforeEach(async (done) => {
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
await dataTable.doubleClickOnRowByName(parentInSite);

View File

@ -23,7 +23,7 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { LoginPage, BrowsingPage } from '../../pages/pages';
import { LoginPage, BrowsingPage, SearchResultsPage } from '../../pages/pages';
import { SITE_VISIBILITY, SITE_ROLES, FILES } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
@ -34,16 +34,16 @@ describe('Granular permissions available actions : ', () => {
const userManager = `manager-${Utils.random()}`;
const siteName = `site-private-${Utils.random()}`;
const file1 = `file1-${Utils.random()}.txt`;
const file1 = `my-file1-${Utils.random()}.txt`;
let file1Id;
const file2 = `file2-${Utils.random()}.txt`;
const file2 = `my-file2-${Utils.random()}.txt`;
let file2Id;
const file3 = `file3-${Utils.random()}.txt`;
const file3 = `my-file3-${Utils.random()}.txt`;
let file3Id;
const folder1 = `folder1-${Utils.random()}`;
const folder1 = `my-folder1-${Utils.random()}`;
let folder1Id;
const folder2 = `folder2-${Utils.random()}`;
const folder2 = `my-folder2-${Utils.random()}`;
let folder2Id;
const docxFile = FILES.docxFile;
@ -61,8 +61,10 @@ describe('Granular permissions available actions : ', () => {
const contextMenu = dataTable.menu;
const viewer = new Viewer();
const viewerToolbar = viewer.toolbar;
const searchResultsPage = new SearchResultsPage();
const { searchInput } = searchResultsPage.header;
beforeAll(async done => {
beforeAll(async (done) => {
await apis.admin.people.createUser({ username: userConsumer });
await apis.admin.people.createUser({ username: userManager });
@ -96,7 +98,7 @@ describe('Granular permissions available actions : ', () => {
done();
});
afterAll(async done => {
afterAll(async (done) => {
await apis.admin.sites.deleteSite(siteName);
done();
});
@ -104,8 +106,10 @@ describe('Granular permissions available actions : ', () => {
xit('');
describe('toolbar displays correct actions when selecting multiple files with different granular permissions', () => {
beforeEach(async done => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});
@ -114,6 +118,7 @@ describe('Granular permissions available actions : ', () => {
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
await dataTable.selectMultipleItems([file1, file2]);
expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for selected files`);
expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for selected files`);
expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for selected files`);
@ -128,6 +133,7 @@ describe('Granular permissions available actions : ', () => {
it('on Shared Files - [C280477]', async () => {
await page.clickSharedFilesAndWait();
await dataTable.selectMultipleItems([file1, file2]);
expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for selected files`);
expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for selected files`);
expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for selected files`);
@ -142,6 +148,7 @@ describe('Granular permissions available actions : ', () => {
it('on Favorites - [C280478]', async () => {
await page.clickFavoritesAndWait();
await dataTable.selectMultipleItems([file1, file2]);
expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for selected files`);
expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for selected files`);
expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for selected files`);
@ -153,11 +160,30 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
it('on Search Results - [C291823]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFiles();
await searchInput.searchForTextAndCloseSearchOptions('my-file');
await dataTable.selectMultipleItems([file1, file2]);
expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for selected files`);
expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for selected files`);
expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for selected files`);
await toolbar.openMoreMenu();
expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for selected files`);
expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for selected files`);
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`);
await toolbar.closeMoreMenu();
});
});
describe('toolbar actions appear correctly for a file - consumer', () => {
beforeEach(async done => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});
@ -210,11 +236,32 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`);
await toolbar.closeMoreMenu();
});
it('on Search Results - [C291818]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFiles();
await searchInput.searchForTextAndCloseSearchOptions(file1);
await dataTable.selectItem(file1);
expect(await toolbar.isViewPresent()).toBe(true, `View is not displayed for ${file1}`);
expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for ${file1}`);
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${file1}`);
expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for ${file1}`);
await toolbar.openMoreMenu();
expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${file1}`);
expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for ${file1}`);
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}`);
await toolbar.closeMoreMenu();
});
});
describe('toolbar actions appear correctly for a folder - consumer', () => {
beforeEach(async done => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});
@ -252,12 +299,32 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folder1}`);
await toolbar.closeMoreMenu();
});
it('on Search Results - [C291819]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFolders();
await searchInput.searchForTextAndCloseSearchOptions(folder1);
await dataTable.selectItem(folder1);
expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for ${folder1}`);
expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for ${folder1}`);
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${folder1}`);
expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for ${folder1}`);
await toolbar.openMoreMenu();
expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${folder1}`);
expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for ${folder1}`);
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}`);
await toolbar.closeMoreMenu();
});
});
describe('toolbar actions appear correctly for multiple selection of files - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});
@ -305,12 +372,30 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
it('on Search Results - [C291824]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFiles();
await searchInput.searchForTextAndCloseSearchOptions('my-file');
await dataTable.selectMultipleItems([file1, file2]);
expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed');
expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed');
expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed');
await toolbar.openMoreMenu();
expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed`);
expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`);
expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
await toolbar.closeMoreMenu();
});
});
describe('toolbar actions appear correctly for multiple selection of folders - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});
@ -344,12 +429,30 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
it('on Search Results - [C291825]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFolders();
await searchInput.searchForTextAndCloseSearchOptions('my-folder');
await dataTable.selectMultipleItems([folder1, folder2]);
expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed');
expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed');
expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed');
await toolbar.openMoreMenu();
expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed`);
expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`);
expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
await toolbar.closeMoreMenu();
});
});
describe('toolbar actions appear correctly for when both files and folders are selected - consumer', () => {
beforeEach(async done => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});
@ -383,11 +486,30 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
it('on Search Results - [C291826]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkFilesAndFolders();
await searchInput.searchForTextAndCloseSearchOptions('my-f');
await dataTable.selectMultipleItems([file1, folder1]);
expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed');
expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed');
expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed');
await toolbar.openMoreMenu();
expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed`);
expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`);
expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
await toolbar.closeMoreMenu();
});
});
describe('context menu actions are correct for a file - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});
@ -443,11 +565,31 @@ describe('Granular permissions available actions : ', () => {
expect(await contextMenu.isEditPresent()).toBe(false, `Edit is displayed for ${file1}`);
expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${file1}`);
});
it('on Search Results - [C291829]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFiles();
await searchInput.searchForTextAndCloseSearchOptions(file1);
await dataTable.rightClickOnItem(file1);
expect(await contextMenu.isDownloadPresent()).toBe(true, `Download is not displayed for ${file1}`);
expect(await contextMenu.isViewPresent()).toBe(true, `View is not displayed for ${file1}`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`);
expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed for ${file1}`);
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.isSharePresent()).toBe(true, `Share is not displayed for ${file1}`);
expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions not displayed for ${file1}`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed for ${file1}`);
expect(await contextMenu.isEditPresent()).toBe(false, `Edit is displayed for ${file1}`);
expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${file1}`);
});
});
describe('context menu actions are correct for a folder - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});
@ -485,12 +627,30 @@ describe('Granular permissions available actions : ', () => {
expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed for ${folder1}`);
expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folder1}`);
});
it('on Search Results - [C291830]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFolders();
await searchInput.searchForTextAndCloseSearchOptions(folder1);
await dataTable.rightClickOnItem(folder1);
expect(await contextMenu.isDownloadPresent()).toBe(true, `Download is not displayed for ${folder1}`);
expect(await contextMenu.isEditPresent()).toBe(false, `Edit is displayed for ${folder1}`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folder1}`);
expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed for ${folder1}`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${folder1}`);
expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${folder1}`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed for ${folder1}`);
expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folder1}`);
expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions displayed for ${folder1}`);
expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folder1}`);
});
});
describe('context menu actions are correct for multiple selection of files - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});
@ -535,12 +695,29 @@ describe('Granular permissions available actions : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
});
it('on Search Results - [C291834]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFiles();
await searchInput.searchForTextAndCloseSearchOptions('my-file');
await dataTable.selectMultipleItems([file1, file2]);
await dataTable.rightClickOnMultipleSelection();
expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
});
});
describe('context menu actions are correct for multiple selection of folders - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});
@ -572,12 +749,29 @@ describe('Granular permissions available actions : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
});
it('on Search Results - [C291835]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFolders();
await searchInput.searchForTextAndCloseSearchOptions('my-folder');
await dataTable.selectMultipleItems([folder1, folder2]);
await dataTable.rightClickOnMultipleSelection();
expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
});
});
describe('context menu actions are correct when both files and folders are selected - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});
@ -609,11 +803,29 @@ describe('Granular permissions available actions : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
});
it('on Search Results - [C291836]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkFilesAndFolders();
await searchInput.searchForTextAndCloseSearchOptions('my-f');
await dataTable.selectMultipleItems([file1, folder1]);
await dataTable.rightClickOnMultipleSelection();
expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
});
});
describe('toolbar actions appear correctly in the viewer - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFiles();
done();
});

View File

@ -24,7 +24,7 @@
*/
import { browser, protractor } from 'protractor';
import { LoginPage, BrowsingPage } from '../../pages/pages';
import { LoginPage, BrowsingPage, SearchResultsPage } from '../../pages/pages';
import { SITE_VISIBILITY } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
@ -32,14 +32,14 @@ import { Utils } from '../../utilities/utils';
describe('Toolbar actions - multiple selection : ', () => {
const username = `user-${Utils.random()}`;
const file1 = `file1-${Utils.random()}.txt`;
const file1 = `my-file1-${Utils.random()}.txt`;
let file1Id;
const file2 = `file2-${Utils.random()}.txt`;
const file2 = `my-file2-${Utils.random()}.txt`;
let file2Id;
const folder1 = `folder1-${Utils.random()}`;
const folder1 = `my-folder1-${Utils.random()}`;
let folder1Id;
const folder2 = `folder2-${Utils.random()}`;
const folder2 = `my-folder2-${Utils.random()}`;
let folder2Id;
const fileForDelete1 = `file-${Utils.random()}.txt`;
@ -52,10 +52,10 @@ describe('Toolbar actions - multiple selection : ', () => {
let folderForDelete2Id;
const siteName = `site-${Utils.random()}`;
const file1InSite = `file1-${Utils.random()}.txt`;
const file2InSite = `file2-${Utils.random()}.txt`;
const folder1InSite = `folder1-${Utils.random()}`;
const folder2InSite = `folder2-${Utils.random()}`;
const file1InSite = `my-fileInSite1-${Utils.random()}.txt`;
const file2InSite = `my-fileInSite2-${Utils.random()}.txt`;
const folder1InSite = `my-folderInSite1-${Utils.random()}`;
const folder2InSite = `my-folderInSite2-${Utils.random()}`;
const apis = {
admin: new RepoClient(),
@ -65,8 +65,10 @@ describe('Toolbar actions - multiple selection : ', () => {
const loginPage = new LoginPage();
const page = new BrowsingPage();
const { dataTable, toolbar } = page;
const searchResultsPage = new SearchResultsPage();
const { searchInput } = searchResultsPage.header;
beforeAll(async done => {
beforeAll(async (done) => {
await apis.admin.people.createUser({ username });
file1Id = (await apis.user.nodes.createFiles([file1])).entry.id;
@ -100,7 +102,7 @@ describe('Toolbar actions - multiple selection : ', () => {
done();
});
afterAll(async done => {
afterAll(async (done) => {
await Promise.all([
apis.user.nodes.deleteNodesById([file1Id, file2Id, folder1Id, folder2Id]),
apis.user.trashcan.emptyTrash(),
@ -111,11 +113,11 @@ describe('Toolbar actions - multiple selection : ', () => {
xit('');
describe('Personal Files', () => {
beforeEach(async done => {
describe('on Personal Files', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickPersonalFilesAndWait();
await dataTable.clearSelection();
await page.clickPersonalFilesAndWait();
done();
});
@ -182,13 +184,12 @@ describe('Toolbar actions - multiple selection : ', () => {
});
});
describe('File Libraries', () => {
beforeEach(async done => {
describe('on File Libraries', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
await dataTable.clearSelection();
done();
});
@ -202,6 +203,7 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
it('correct actions appear when multiple folders are selected - [C280462]', async () => {
@ -214,6 +216,7 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
it('correct actions appear when both files and folders are selected - [C280463]', async () => {
@ -226,15 +229,15 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
});
describe('Shared Files', () => {
beforeEach(async done => {
// await browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform();
describe('on Shared Files', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickSharedFilesAndWait();
await dataTable.clearSelection();
await page.clickSharedFilesAndWait();
done();
});
@ -248,14 +251,15 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
});
describe('Recent Files', () => {
beforeEach(async done => {
describe('on Recent Files', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickRecentFilesAndWait();
await dataTable.clearSelection();
await page.clickRecentFilesAndWait();
done();
});
@ -269,15 +273,15 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
});
describe('Favorites', () => {
beforeEach(async done => {
// await browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform();
describe('on Favorites', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickFavoritesAndWait();
await dataTable.clearSelection();
await page.clickFavoritesAndWait();
done();
});
@ -291,6 +295,7 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
it('correct actions appear when multiple folders are selected - [C280470]', async () => {
@ -303,6 +308,7 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
it('correct actions appear when both files and folders are selected - [C280471]', async () => {
@ -315,14 +321,13 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
});
describe('Trash', () => {
beforeEach(async done => {
await Utils.pressEscape();
describe('on Trash', () => {
beforeEach(async (done) => {
await page.clickTrashAndWait();
await dataTable.clearSelection();
done();
});
@ -344,4 +349,63 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.isButtonPresent('Restore')).toBe(true, 'Restore is not displayed');
});
});
describe('on Search Results', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickPersonalFilesAndWait();
done();
});
it('correct actions appear when multiple files are selected - [C291820]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFiles();
await searchInput.searchForTextAndCloseSearchOptions('my-fileInSite');
await dataTable.selectMultipleItems([file1InSite, file2InSite]);
expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed for selected files');
expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed for selected files');
expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed for selected files');
await toolbar.openMoreMenu();
expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for selected files`);
expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for selected files`);
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`);
await toolbar.closeMoreMenu();
});
it('correct actions appear when multiple folders are selected - [C291821]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFolders();
await searchInput.searchForTextAndCloseSearchOptions('my-folderInSite');
await dataTable.selectMultipleItems([folder1InSite, folder2InSite]);
expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed');
expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed');
expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed');
await toolbar.openMoreMenu();
expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for selected files`);
expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for selected files`);
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`);
await toolbar.closeMoreMenu();
});
it('correct actions appear when both files and folders are selected - [C291822]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkFilesAndFolders();
await searchInput.searchForTextAndCloseSearchOptions('my-f');
await dataTable.selectMultipleItems([file1InSite, file2InSite, folder1InSite, folder2InSite]);
expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed');
expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed');
expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed');
await toolbar.openMoreMenu();
expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for selected files`);
expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for selected files`);
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`);
await toolbar.closeMoreMenu();
});
});
});

View File

@ -23,7 +23,7 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { LoginPage, BrowsingPage } from '../../pages/pages';
import { LoginPage, BrowsingPage, SearchResultsPage } from '../../pages/pages';
import { SITE_VISIBILITY } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
@ -37,8 +37,8 @@ describe('Toolbar actions - single selection : ', () => {
const folderForDelete = `folderForDelete-${Utils.random()}`; let folderForDeleteId;
const siteName = `site-${Utils.random()}`;
const fileInSite = `fileAdmin-${Utils.random()}.txt`;
const folderInSite = `folderAdmin-${Utils.random()}`;
const fileInSite = `file-site-${Utils.random()}.txt`;
const folderInSite = `folder-site-${Utils.random()}`;
const adminPublic = `admin-public-${Utils.random()}`;
const adminModerated = `admin-moderated-${Utils.random()}`;
@ -51,6 +51,8 @@ describe('Toolbar actions - single selection : ', () => {
const loginPage = new LoginPage();
const page = new BrowsingPage();
const { dataTable, toolbar } = page;
const searchResultsPage = new SearchResultsPage();
const { searchInput } = searchResultsPage.header;
beforeAll(async (done) => {
await apis.admin.people.createUser({ username });
@ -81,6 +83,8 @@ describe('Toolbar actions - single selection : ', () => {
await apis.user.favorites.addFavoriteById('site', adminModerated);
await apis.user.sites.requestToJoin(adminModerated);
await apis.user.queries.waitForSites(siteName, { expect: 1 });
await loginPage.loginWith(username);
done();
});
@ -99,27 +103,18 @@ describe('Toolbar actions - single selection : ', () => {
xit('');
describe('General tests', () => {
describe('on Personal Files', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
await page.clickPersonalFilesAndWait();
done();
});
it('selected row is marked with a check circle icon - [C213134]', async () => {
await page.clickPersonalFilesAndWait();
await dataTable.selectItem(fileUser);
expect(await dataTable.hasCheckMarkIcon(fileUser)).toBe(true, 'check mark missing');
});
});
describe('on Personal Files', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickPersonalFilesAndWait();
await dataTable.clearSelection();
done();
});
it('actions are not displayed when no item is selected - [C213120]', async () => {
expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`);
@ -157,10 +152,9 @@ describe('Toolbar actions - single selection : ', () => {
describe('on File Libraries', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
await dataTable.clearSelection();
done();
});
@ -200,12 +194,16 @@ describe('Toolbar actions - single selection : ', () => {
describe('on a library', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
done();
});
it('Available actions when a library is selected - My Libraries - [C213135]', async () => {
await page.goToMyLibraries();
afterAll(async (done) => {
await page.clickPersonalFiles();
done();
});
it('Available actions for a library - My Libraries - [C213135]', async () => {
await page.goToMyLibrariesAndWait();
await dataTable.selectItem(siteName);
expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${siteName}`);
@ -213,10 +211,11 @@ describe('Toolbar actions - single selection : ', () => {
await toolbar.openMoreMenu();
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${siteName}`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
await toolbar.closeMoreMenu();
});
it('Available actions when a library is selected - Favorite Libraries - user is a member - [C289892]', async () => {
await page.goToFavoriteLibraries();
it('Available actions for a library - Favorite Libraries - user is a member - [C289892]', async () => {
await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(siteName);
expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${siteName}`);
@ -224,10 +223,11 @@ describe('Toolbar actions - single selection : ', () => {
await toolbar.openMoreMenu();
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${siteName}`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
await toolbar.closeMoreMenu();
});
it('Available actions when a library is selected - Favorite Libraries - user is not a member - [C290090]', async () => {
await page.goToFavoriteLibraries();
it('Available actions for a library - Favorite Libraries - user is not a member - [C290090]', async () => {
await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(adminPublic);
expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${adminPublic}`);
@ -235,10 +235,11 @@ describe('Toolbar actions - single selection : ', () => {
await toolbar.openMoreMenu();
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminPublic}`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminPublic}`);
await toolbar.closeMoreMenu();
});
it('Available actions when a library is selected - Favorite Libraries - user requested to join - [C290091]', async () => {
await page.goToFavoriteLibraries();
it('Available actions for a moderated library - Favorite Libraries - user requested to join - [C290091]', async () => {
await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(adminModerated);
expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${adminModerated}`);
@ -246,6 +247,52 @@ describe('Toolbar actions - single selection : ', () => {
await toolbar.openMoreMenu();
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminModerated}`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminModerated}`);
await toolbar.closeMoreMenu();
});
it('Available actions for a library - Search Results - [C290084]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkLibraries();
await searchInput.searchForTextAndCloseSearchOptions(siteName);
await dataTable.selectItem(siteName);
expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${siteName}`);
expect(await toolbar.isButtonPresent('Leave library')).toBe(true, `Leave is not displayed for ${siteName}`);
await toolbar.openMoreMenu();
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${siteName}`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
await toolbar.closeMoreMenu();
});
it('Available actions for a library - Search Results - user is not a member - [C290085]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkLibraries();
await searchInput.searchForTextAndCloseSearchOptions(adminPublic);
await dataTable.selectItem(adminPublic);
expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${adminPublic}`);
expect(await toolbar.isButtonPresent('Join')).toBe(true, `Join is not displayed for ${adminPublic}`);
await toolbar.openMoreMenu();
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminPublic}`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminPublic}`);
await toolbar.closeMoreMenu();
});
it('Available actions for a moderated library - Search Results - user requested to join - [C290086]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkLibraries();
await searchInput.searchForTextAndCloseSearchOptions(adminModerated);
await dataTable.selectItem(adminModerated);
expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${adminModerated}`);
expect(await toolbar.isButtonPresent('Cancel join request')).toBe(true, `Cancel join is not displayed for ${adminModerated}`);
await toolbar.openMoreMenu();
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminModerated}`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminModerated}`);
await toolbar.closeMoreMenu();
});
});
@ -253,7 +300,6 @@ describe('Toolbar actions - single selection : ', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickSharedFilesAndWait();
await dataTable.clearSelection();
done();
});
@ -281,7 +327,6 @@ describe('Toolbar actions - single selection : ', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickRecentFilesAndWait();
await dataTable.clearSelection();
done();
});
@ -308,7 +353,6 @@ describe('Toolbar actions - single selection : ', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickFavoritesAndWait();
await dataTable.clearSelection();
done();
});
@ -349,7 +393,6 @@ describe('Toolbar actions - single selection : ', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickTrashAndWait();
await dataTable.clearSelection();
done();
});
@ -371,4 +414,56 @@ describe('Toolbar actions - single selection : ', () => {
expect(await toolbar.isButtonPresent('Restore')).toBe(true, `Restore is not enabled for folder`);
});
});
describe('on Search Results', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickPersonalFilesAndWait();
done();
});
it('actions are not displayed when no item is selected - [C291815]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkFilesAndFolders();
await searchInput.searchForTextAndCloseSearchOptions(fileInSite);
expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`);
});
it('correct actions appear when a file is selected - [C291816]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFiles();
await searchInput.searchForTextAndCloseSearchOptions(fileUser);
await dataTable.selectItem(fileUser);
expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileUser}`);
expect(await toolbar.isViewPresent()).toBe(true, `View is not displayed for ${fileUser}`);
expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for ${fileUser}`);
expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for ${fileUser}`);
await toolbar.openMoreMenu();
expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${fileUser}`);
expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for ${fileUser}`);
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}`);
await toolbar.closeMoreMenu();
});
it('correct actions appear when a folder is selected - [C291817]', async () => {
await searchInput.clickSearchButton();
await searchInput.checkOnlyFolders();
await searchInput.searchForTextAndCloseSearchOptions(folderUser);
await dataTable.selectItem(folderUser);
expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${folderUser}`);
expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for ${folderUser}`);
expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not enabled for ${folderUser}`);
expect(await toolbar.isEditPresent()).toBe(true, `Edit is not displayed for ${folderUser}`);
await toolbar.openMoreMenu();
expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${folderUser}`);
expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for ${folderUser}`);
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}`);
await toolbar.closeMoreMenu();
});
});
});

View File

@ -214,7 +214,7 @@ describe('Unshare a file', () => {
beforeEach(async (done) => {
await page.refresh();
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
await dataTable.doubleClickOnRowByName(parentInSite);
@ -733,7 +733,7 @@ describe('Unshare a file', () => {
});
it('on File Libraries - file shared by other user - [C286682]', async () => {
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(sitePrivate);
await dataTable.waitForHeader();
await dataTable.selectItem(file1);
@ -744,7 +744,7 @@ describe('Unshare a file', () => {
});
it('on File Libraries - file shared by the user - [C286701]', async () => {
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(sitePrivate);
await dataTable.waitForHeader();
await dataTable.selectItem(file2);

View File

@ -24,12 +24,11 @@
*/
import { browser } from 'protractor';
import { SIDEBAR_LABELS, PAGE_TITLES } from '../../configs';
import { PAGE_TITLES } from '../../configs';
import { LoginPage, BrowsingPage } from '../../pages/pages';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
describe('Page titles', () => {
const loginPage = new LoginPage();
const page = new BrowsingPage();
@ -73,10 +72,8 @@ describe('Page titles', () => {
});
it('Personal Files page - [C217157]', async () => {
const label = SIDEBAR_LABELS.PERSONAL_FILES;
await page.sidenav.navigateToLink(label);
expect(await browser.getTitle()).toContain(label);
await page.clickPersonalFiles();
expect(await browser.getTitle()).toContain(PAGE_TITLES.PERSONAL_FILES);
});
it('My Libraries page - [C217158]', async () => {
@ -90,31 +87,23 @@ describe('Page titles', () => {
});
it('Shared Files page - [C217159]', async () => {
const label = SIDEBAR_LABELS.SHARED_FILES;
await page.sidenav.navigateToLink(label);
expect(await browser.getTitle()).toContain(label);
await page.clickSharedFiles();
expect(await browser.getTitle()).toContain(PAGE_TITLES.SHARED_FILES);
});
it('Recent Files page - [C217160]', async () => {
const label = SIDEBAR_LABELS.RECENT_FILES;
await page.sidenav.navigateToLink(label);
expect(await browser.getTitle()).toContain(label);
await page.clickRecentFiles();
expect(await browser.getTitle()).toContain(PAGE_TITLES.RECENT_FILES);
});
it('Favorites page - [C217161]', async () => {
const label = SIDEBAR_LABELS.FAVORITES;
await page.sidenav.navigateToLink(label);
expect(await browser.getTitle()).toContain(label);
await page.clickFavorites();
expect(await browser.getTitle()).toContain(PAGE_TITLES.FAVORITES);
});
it('Trash page - [C217162]', async () => {
const label = SIDEBAR_LABELS.TRASH;
await page.sidenav.navigateToLink(label);
expect(await browser.getTitle()).toContain(label);
await page.clickTrash();
expect(await browser.getTitle()).toContain(PAGE_TITLES.TRASH);
});
it('File Preview page - [C280415]', async () => {

View File

@ -187,7 +187,7 @@ describe('Library properties', () => {
});
it('Warning appears when editing the name of the library by entering an existing name - [C289341]', async () => {
await apis.user.queries.waitForApi(site.name, { expect: 1 });
await apis.user.queries.waitForSites(site.name, { expect: 1 });
await dataTable.selectItem(siteDup);
await page.toolbar.clickViewDetails();

View File

@ -100,7 +100,7 @@ describe('File Libraries', () => {
describe('My Libraries', () => {
beforeEach(async (done) => {
await page.goToMyLibraries();
await page.goToMyLibrariesAndWait();
done();
});
@ -171,7 +171,7 @@ describe('File Libraries', () => {
describe('Favorite Libraries', () => {
beforeEach(async (done) => {
await page.goToFavoriteLibraries();
await page.goToFavoriteLibrariesAndWait();
done();
});

View File

@ -90,13 +90,13 @@ describe('Breadcrumb', () => {
});
it('My Libraries breadcrumb main node - [C260966]', async () => {
await page.goToMyLibraries();
await page.goToMyLibrariesAndWait();
expect(await breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items');
expect(await breadcrumb.getCurrentItemName()).toBe('My Libraries');
});
it('Favorite Libraries breadcrumb main node - [C289891]', async () => {
await page.goToFavoriteLibraries();
await page.goToFavoriteLibrariesAndWait();
expect(await breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items');
expect(await breadcrumb.getCurrentItemName()).toBe('Favorite Libraries');
});
@ -186,7 +186,7 @@ describe('Breadcrumb', () => {
});
describe('as admin', () => {
const user2 = 'a_user';
const user2 = `user2-${Utils.random()}`;
const userFolder = `userFolder-${Utils.random()}`; let userFolderId;
const user2Api = new RepoClient(user2, user2);

View File

@ -40,7 +40,7 @@ describe('Sidebar', () => {
it('has "Personal Files" as default - [C217149]', async () => {
expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES);
expect(await sidenav.isActive(SIDEBAR_LABELS.PERSONAL_FILES)).toBe(true, 'Active link');
expect(await sidenav.isActive(SIDEBAR_LABELS.PERSONAL_FILES)).toBe(true, 'Default active link');
});
it('File Libraries has correct sub-categories - [C217150]', async () => {

View File

@ -52,7 +52,7 @@ describe('Pagination on multiple pages on File Libraries', () => {
});
beforeEach(async (done) => {
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
done();
});

View File

@ -38,6 +38,7 @@ describe('Search input', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickPersonalFiles();
done();
});

View File

@ -102,7 +102,7 @@ describe('Search results - libraries', () => {
await apis.admin.sites.createSite(adminPrivate, SITE_VISIBILITY.PRIVATE);
await apis.user.sites.waitForApi({ expect: 12 });
await apis.user.queries.waitForApi('lib', { expect: 2 });
await apis.user.queries.waitForSites('lib', { expect: 2 });
await loginPage.loginWith(username);
done();

View File

@ -52,7 +52,7 @@ describe('Search results', () => {
await apis.user.sites.createSite(site);
await apis.user.search.waitForApi(username, { expect: 1 });
await apis.user.queries.waitForApi(site, { expect: 1 });
await apis.user.queries.waitForSites(site, { expect: 1 });
await loginPage.loginWith(username);
done();

View File

@ -251,7 +251,7 @@ describe('Viewer actions', () => {
});
beforeEach(async (done) => {
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
done();

View File

@ -23,7 +23,6 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
import { protractor, browser } from 'protractor';
import { LoginPage, BrowsingPage } from '../../pages/pages';
import { FILES, SITE_VISIBILITY } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
@ -83,7 +82,7 @@ describe('Viewer general', () => {
});
afterEach(async (done) => {
await browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
await Utils.pressEscape();
done();
});
@ -101,7 +100,7 @@ describe('Viewer general', () => {
it('Viewer opens when clicking the View action for a file - [C279270]', async () => {
await dataTable.selectItem(xlsxFile);
await page.toolbar.getButtonByTitleAttribute('View').click();
await page.toolbar.clickView();
expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened');
});
@ -139,7 +138,7 @@ describe('Viewer general', () => {
});
it('Viewer opens for a file from File Libraries - [C284633]', async () => {
await page.clickFileLibrariesAndWait();
await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteUser);
await dataTable.waitForHeader();
await dataTable.doubleClickOnRowByName(fileInSite);

View File

@ -42,7 +42,17 @@ export class QueriesApi extends RepoApi {
return this.alfrescoJsApi.core.queriesApi.findSites(searchTerm, data);
}
async waitForApi(searchTerm, data) {
async findNodes(searchTerm: string) {
const data = {
term: searchTerm,
fields: ['name']
};
await this.apiAuth();
return this.alfrescoJsApi.core.queriesApi.findNodes(searchTerm, data);
}
async waitForSites(searchTerm, data) {
try {
const sites = async () => {
const totalItems = (await this.findSites(searchTerm)).list.pagination.totalItems;
@ -58,4 +68,21 @@ export class QueriesApi extends RepoApi {
console.log('-----> catch queries findSites: ', error);
}
}
async waitForFilesAndFolders(searchTerm, data) {
try {
const nodes = async () => {
const totalItems = (await this.findNodes(searchTerm)).list.pagination.totalItems;
if ( totalItems !== data.expect ) {
return Promise.reject(totalItems);
} else {
return Promise.resolve(totalItems);
}
};
return await Utils.retryCall(nodes);
} catch (error) {
console.log('-----> catch queries findFilesAndFolders: ', error);
}
}
}

View File

@ -47,7 +47,36 @@ export class SearchApi extends RepoApi {
await this.apiAuth();
return this.alfrescoJsApi.search.searchApi.search(data);
}
async queryNodesNames(searchTerm: string) {
const data = {
query: {
query: `cm:name:\"${searchTerm}*\"`,
language: 'afts'
},
filterQueries: [
{ query: `+TYPE:'cm:folder' OR +TYPE:'cm:content'`}
]
};
await this.apiAuth();
return this.alfrescoJsApi.search.searchApi.search(data);
}
async queryNodesExactNames(searchTerm: string) {
const data = {
query: {
query: `cm:name:\"${searchTerm}\"`,
language: 'afts'
},
filterQueries: [
{ query: `+TYPE:'cm:folder' OR +TYPE:'cm:content'`}
]
};
await this.apiAuth();
return this.alfrescoJsApi.search.searchApi.search(data);
}
async waitForApi(username, data) {
@ -66,4 +95,21 @@ export class SearchApi extends RepoApi {
console.log('-----> catch search: ', error);
}
}
async waitForNodes(searchTerm: string, data) {
try {
const nodes = async () => {
const totalItems = (await this.queryNodesNames(searchTerm)).list.pagination.totalItems;
if ( totalItems !== data.expect) {
return Promise.reject(totalItems);
} else {
return Promise.resolve(totalItems);
}
};
return await Utils.retryCall(nodes);
} catch (error) {
console.log('-----> catch search nodes: ', error);
}
}
}

View File

@ -66,6 +66,7 @@
</mat-icon>
<span
class="item--label item--parent"
[id]="item.id"
[ngClass]="{
'item--default':
!routerLink.isActive && expansionPanel.expanded,