mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-19 17:14:57 +00:00
* AAE-1841 - start adding e2e for delete directive * AAE-1841 - added delete directive test * AAE-1841 - fixed PR review
271 lines
15 KiB
TypeScript
271 lines
15 KiB
TypeScript
/*!
|
|
* @license
|
|
* Copyright 2019 Alfresco Software, Ltd.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import { ContentServicesPage } from '../../pages/adf/content-services.page';
|
|
import { AcsUserModel } from '../../models/ACS/acs-user.model';
|
|
import { FileModel } from '../../models/ACS/file.model';
|
|
import { LoginPage, UploadActions, PaginationPage, StringUtil, PermissionActions } from '@alfresco/adf-testing';
|
|
import { browser } from 'protractor';
|
|
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
|
import { FolderModel } from '../../models/ACS/folder.model';
|
|
|
|
describe('Delete Directive', () => {
|
|
|
|
this.alfrescoJsApi = new AlfrescoApi({
|
|
provider: 'ECM',
|
|
hostEcm: browser.params.testConfig.adf_acs.host
|
|
});
|
|
|
|
const loginPage = new LoginPage();
|
|
const contentServicesPage = new ContentServicesPage();
|
|
const paginationPage = new PaginationPage();
|
|
const contentListPage = contentServicesPage.getDocumentList();
|
|
const acsUser = new AcsUserModel();
|
|
const secondAcsUser = new AcsUserModel();
|
|
const uploadActions = new UploadActions(this.alfrescoJsApi);
|
|
const permissionActions = new PermissionActions(this.alfrescoJsApi);
|
|
let baseFolderUploaded;
|
|
|
|
const txtFileModel = new FileModel({
|
|
name: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_name,
|
|
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_location
|
|
});
|
|
|
|
const file0BytesModel = new FileModel({
|
|
name: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_name,
|
|
location: browser.params.resources.Files.ADF_DOCUMENTS.TXT_0B.file_location
|
|
});
|
|
|
|
const pdfFileModel = new FileModel({
|
|
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_name,
|
|
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF.file_location
|
|
});
|
|
|
|
const secondPdfFileModel = new FileModel({
|
|
name: browser.params.resources.Files.ADF_DOCUMENTS.PDF_B.file_name,
|
|
location: browser.params.resources.Files.ADF_DOCUMENTS.PDF_B.file_location
|
|
});
|
|
|
|
const pngFileModel = new FileModel({
|
|
name: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name,
|
|
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_location
|
|
});
|
|
|
|
const secondPngFileModel = new FileModel({
|
|
name: browser.params.resources.Files.ADF_DOCUMENTS.PNG_B.file_name,
|
|
location: browser.params.resources.Files.ADF_DOCUMENTS.PNG_B.file_location
|
|
});
|
|
|
|
const folderInfo = new FolderModel({
|
|
name: 'myFolder',
|
|
location: browser.params.resources.Files.ADF_DOCUMENTS.TEXT_FOLDER.folder_location
|
|
});
|
|
|
|
const folderSecond = new FolderModel({
|
|
name: 'myrSecondFolder',
|
|
location: browser.params.resources.Files.ADF_DOCUMENTS.TEXT_FOLDER.folder_location
|
|
});
|
|
|
|
const baseFolder = new FolderModel({
|
|
name: 'BASE_FOLDER',
|
|
location: browser.params.resources.Files.ADF_DOCUMENTS.TEXT_FOLDER.folder_location
|
|
});
|
|
|
|
beforeAll(async () => {
|
|
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
|
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
|
await this.alfrescoJsApi.core.peopleApi.addPerson(secondAcsUser);
|
|
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
baseFolderUploaded = await uploadActions.createFolder(
|
|
baseFolder.name,
|
|
'-my-'
|
|
);
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await uploadActions.deleteFileOrFolder(baseFolderUploaded.entry.id);
|
|
});
|
|
|
|
describe('Handling multiselection', () => {
|
|
|
|
beforeEach(async () => {
|
|
await uploadActions.uploadFile(txtFileModel.location, txtFileModel.name, baseFolderUploaded.entry.id);
|
|
await uploadActions.uploadFile(file0BytesModel.location, file0BytesModel.name, baseFolderUploaded.entry.id);
|
|
const textFolderUploaded = await uploadActions.createFolder(folderInfo.name, baseFolderUploaded.entry.id);
|
|
await uploadActions.uploadFolder(folderInfo.location, textFolderUploaded.entry.id);
|
|
await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, textFolderUploaded.entry.id);
|
|
await uploadActions.createFolder(folderSecond.name, baseFolderUploaded.entry.id);
|
|
|
|
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
|
await browser.get(`${browser.baseUrl}/files/${baseFolderUploaded.entry.id}`);
|
|
await contentServicesPage.waitForTableBody();
|
|
});
|
|
|
|
it('[C260188] - Delete multiple content', async () => {
|
|
await contentListPage.selectRowWithKeyboard(txtFileModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
|
|
await contentListPage.selectRowWithKeyboard(file0BytesModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', file0BytesModel.name);
|
|
await contentListPage.selectRowWithKeyboard(folderSecond.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', file0BytesModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', folderSecond.name);
|
|
await contentListPage.selectRowWithKeyboard(folderInfo.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', folderInfo.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', file0BytesModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', folderSecond.name);
|
|
await contentServicesPage.clickDeleteOnToolbar();
|
|
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderInfo.name);
|
|
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', txtFileModel.name);
|
|
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', file0BytesModel.name);
|
|
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderSecond.name);
|
|
});
|
|
|
|
it('[C260192] - Delete file and folder with hierarchy', async () => {
|
|
await contentListPage.selectRowWithKeyboard(txtFileModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
|
|
await contentListPage.selectRowWithKeyboard(folderInfo.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', folderInfo.name);
|
|
await contentServicesPage.clickDeleteOnToolbar();
|
|
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', txtFileModel.name);
|
|
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderInfo.name);
|
|
});
|
|
|
|
it('[C260193] - Delete file when different selections are set', async () => {
|
|
await contentServicesPage.chooseSelectionMode('None');
|
|
await contentListPage.selectRow(txtFileModel.name);
|
|
await contentListPage.dataTable.checkRowIsNotSelected('Display name', txtFileModel.name);
|
|
await contentServicesPage.checkToolbarDeleteIsDisabled();
|
|
|
|
await contentServicesPage.chooseSelectionMode('Single');
|
|
await contentListPage.selectRow(txtFileModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
|
|
await contentListPage.selectRowWithKeyboard(folderInfo.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', folderInfo.name);
|
|
await contentListPage.dataTable.checkRowIsNotSelected('Display name', txtFileModel.name);
|
|
await contentServicesPage.clickDeleteOnToolbar();
|
|
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderInfo.name);
|
|
await contentListPage.dataTable.checkContentIsDisplayed('Display name', txtFileModel.name);
|
|
|
|
await contentServicesPage.chooseSelectionMode('Multiple');
|
|
await contentListPage.selectRow(txtFileModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
|
|
await contentListPage.selectRowWithKeyboard(file0BytesModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', file0BytesModel.name);
|
|
await contentServicesPage.clickDeleteOnToolbar();
|
|
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', txtFileModel.name);
|
|
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', file0BytesModel.name);
|
|
});
|
|
});
|
|
|
|
describe('When selection on multiple pages', () => {
|
|
|
|
beforeEach(async () => {
|
|
await uploadActions.uploadFile( txtFileModel.location, txtFileModel.name, baseFolderUploaded.entry.id);
|
|
await uploadActions.uploadFile(file0BytesModel.location, file0BytesModel.name, baseFolderUploaded.entry.id);
|
|
await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, baseFolderUploaded.entry.id);
|
|
await uploadActions.uploadFile(secondPdfFileModel.location, secondPdfFileModel.name, baseFolderUploaded.entry.id);
|
|
await uploadActions.uploadFile(pngFileModel.location, pngFileModel.name, baseFolderUploaded.entry.id);
|
|
await uploadActions.uploadFile(secondPngFileModel.location, secondPngFileModel.name, baseFolderUploaded.entry.id);
|
|
|
|
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
|
await browser.get(`${browser.baseUrl}/files/${baseFolderUploaded.entry.id}`);
|
|
await contentServicesPage.waitForTableBody();
|
|
});
|
|
|
|
it('[C260191] - Delete content selected from different pages', async () => {
|
|
await contentServicesPage.sortByName('ASC');
|
|
await paginationPage.selectItemsPerPage('5');
|
|
|
|
await contentListPage.selectRowWithKeyboard(txtFileModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
|
|
await paginationPage.clickOnNextPage();
|
|
await contentListPage.selectRowWithKeyboard(file0BytesModel.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', file0BytesModel.name);
|
|
await contentServicesPage.clickDeleteOnToolbar();
|
|
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', file0BytesModel.name);
|
|
await contentListPage.dataTable.checkContentIsDisplayed('Display name', txtFileModel.name);
|
|
});
|
|
|
|
});
|
|
|
|
describe('when user does not have `delete` permission', () => {
|
|
|
|
let createdSite = null;
|
|
let fileTxt, filePdf, folderA, folderB;
|
|
|
|
beforeAll(async () => {
|
|
createdSite = await this.alfrescoJsApi.core.sitesApi.createSite({
|
|
title: StringUtil.generateRandomString(20).toLowerCase(),
|
|
visibility: 'PRIVATE'
|
|
});
|
|
|
|
await this.alfrescoJsApi.core.sitesApi.addSiteMember(createdSite.entry.id, {
|
|
id: secondAcsUser.id,
|
|
role: 'SiteCollaborator'
|
|
});
|
|
|
|
fileTxt = await uploadActions.uploadFile(txtFileModel.location, txtFileModel.name, createdSite.entry.guid);
|
|
filePdf = await uploadActions.uploadFile(pdfFileModel.location, pdfFileModel.name, createdSite.entry.guid);
|
|
folderA = await uploadActions.createFolder(StringUtil.generateRandomString(5), createdSite.entry.guid);
|
|
folderB = await uploadActions.createFolder(StringUtil.generateRandomString(5), createdSite.entry.guid);
|
|
|
|
await permissionActions.addRoleForUser(secondAcsUser.getId(), 'SiteManager', folderA);
|
|
await permissionActions.addRoleForUser(secondAcsUser.getId(), 'SiteManager', fileTxt);
|
|
await permissionActions.addRoleForUser(secondAcsUser.getId(), 'SiteConsumer', folderB);
|
|
await permissionActions.addRoleForUser(secondAcsUser.getId(), 'SiteConsumer', filePdf);
|
|
|
|
await permissionActions.disableInheritedPermissionsForNode(folderA.entry.id);
|
|
await permissionActions.disableInheritedPermissionsForNode(folderB.entry.id);
|
|
await permissionActions.disableInheritedPermissionsForNode(fileTxt.entry.id);
|
|
await permissionActions.disableInheritedPermissionsForNode(filePdf.entry.id);
|
|
|
|
await loginPage.loginToContentServicesUsingUserModel(secondAcsUser);
|
|
await browser.get(`${browser.baseUrl}/files/${createdSite.entry.guid}`);
|
|
await contentServicesPage.waitForTableBody();
|
|
});
|
|
|
|
afterAll(async () => {
|
|
try {
|
|
await this.alfrescoJsApi.core.sitesApi.deleteSite(
|
|
createdSite.entry.id
|
|
);
|
|
} catch (error) {}
|
|
});
|
|
|
|
it('[C216426] - Delete file without delete permissions', async () => {
|
|
await contentListPage.selectRowWithKeyboard(filePdf.entry.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', filePdf.entry.name);
|
|
await contentServicesPage.checkToolbarDeleteIsDisabled();
|
|
await contentListPage.selectRowWithKeyboard(folderB.entry.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', folderB.entry.name);
|
|
await contentServicesPage.checkToolbarDeleteIsDisabled();
|
|
await contentListPage.selectRowWithKeyboard(folderA.entry.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', folderA.entry.name);
|
|
await contentServicesPage.checkToolbarDeleteIsDisabled();
|
|
await contentListPage.selectRowWithKeyboard(fileTxt.entry.name);
|
|
await contentListPage.dataTable.checkRowIsSelected('Display name', fileTxt.entry.name);
|
|
await contentServicesPage.checkToolbarDeleteIsDisabled();
|
|
});
|
|
});
|
|
});
|