From baf6050111b27e25d694ab0cead07118d85d1cfc Mon Sep 17 00:00:00 2001 From: jdosti Date: Mon, 29 Oct 2018 15:52:35 +0000 Subject: [PATCH] [ADF-3696] Create an automated test to cover the search filter buckets scenario (#3915) * [ADF-3696] Create an automated test to cover the search filter buckets * Removing comments * Removing spaces and xit * Minor changes * Add spaces where needed * Changing locator * Changes on the splitting of names * Changing to single quotes --- .../search/search_filters.e2e.ts | 38 ++++++++++++++++++- e2e/pages/adf/dialog/contentList.js | 2 +- e2e/pages/adf/paginationPage.js | 11 ++++++ e2e/pages/adf/searchFiltersPage.ts | 18 +++++++++ 4 files changed, 67 insertions(+), 2 deletions(-) diff --git a/e2e/content-services/search/search_filters.e2e.ts b/e2e/content-services/search/search_filters.e2e.ts index 1abeb7294e..4be07fe289 100644 --- a/e2e/content-services/search/search_filters.e2e.ts +++ b/e2e/content-services/search/search_filters.e2e.ts @@ -18,12 +18,15 @@ import { LoginPage } from '../../pages/adf/loginPage'; import SearchDialog = require('../../pages/adf/dialog/searchDialog'); import { SearchFiltersPage } from '../../pages/adf/searchFiltersPage'; +import PaginationPage = require('../../pages/adf/paginationPage'); +import ContentList = require('../../pages/adf/dialog/contentList'); import AcsUserModel = require('../../models/ACS/acsUserModel'); import FileModel = require('../../models/ACS/fileModel'); import TestConfig = require('../../test.config'); import Util = require('../../util/util'); +import resources = require('../../util/resources'); import AlfrescoApi = require('alfresco-js-api-node'); import { UploadActions } from '../../actions/ACS/upload.actions'; @@ -35,6 +38,8 @@ describe('Search Filters', () => { let searchDialog = new SearchDialog(); let searchFiltersPage = new SearchFiltersPage(); let uploadActions = new UploadActions(); + let paginationPage = new PaginationPage(); + let contentList = new ContentList(); let acsUser = new AcsUserModel(); @@ -43,7 +48,15 @@ describe('Search Filters', () => { let fileModel = new FileModel({ 'name': filename, 'shortName': filename.substring(0, 8) }); - let fileUploaded; + + let pngFileModel = new FileModel({ + 'name': resources.Files.ADF_DOCUMENTS.PNG.file_name, + 'location': resources.Files.ADF_DOCUMENTS.PNG.file_location + }); + + let fileUploaded, fileTypePng; + + let filter = {type: 'TYPE-PNG Image'}; beforeAll(async (done) => { @@ -60,6 +73,8 @@ describe('Search Filters', () => { fileUploaded = await uploadActions.uploadFile(this.alfrescoJsApi, fileModel.location, fileModel.name, '-my-'); + fileTypePng = await uploadActions.uploadFile(this.alfrescoJsApi, pngFileModel.location, pngFileModel.name, '-my-'); + loginPage.loginToContentServicesUsingUserModel(acsUser); await browser.driver.sleep(30000); // wait search index previous file/folder uploaded @@ -77,6 +92,7 @@ describe('Search Filters', () => { await this.alfrescoJsApi.login(acsUser.id, acsUser.password); await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, fileUploaded.entry.id); + await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, fileTypePng.entry.id); done(); }); @@ -114,4 +130,24 @@ describe('Search Filters', () => { searchFiltersPage.checkFileSizeFilterIsCollapsed(); }); + it('[C287796] Should be able to display the correct bucket number after selecting a filter', () => { + browser.get(TestConfig.adf.url + '/search;q=*'); + + searchFiltersPage.clickPngImageType(); + + let bucketNumberForFilter = searchFiltersPage.getBucketNumberOfFilterType(filter.type); + + let resultFileNames = contentList.getAllRowsNameColumn(); + + expect(bucketNumberForFilter).not.toEqual('0'); + + expect(paginationPage.getTotalNumberOfFiles()).toEqual(bucketNumberForFilter); + + resultFileNames.then((fileNames) => { + fileNames.map((nameOfResultFiles) => { + expect(nameOfResultFiles).toContain('.png'); + }); + }); + }); + }); diff --git a/e2e/pages/adf/dialog/contentList.js b/e2e/pages/adf/dialog/contentList.js index 3f174378ec..8098d2357d 100644 --- a/e2e/pages/adf/dialog/contentList.js +++ b/e2e/pages/adf/dialog/contentList.js @@ -28,7 +28,7 @@ var ContentList = function () { var actionMenu = element(by.css("div[role='menu']")); var optionButton = by.css("button[data-automation-id*='action_menu_']"); var rowByRowName = by.xpath("ancestor::div[contains(@class, 'adf-datatable-row')]"); - var nameColumn = by.css("div[id*='document-list-container'] div[class*='adf-datatable-row'] div[class*='--text full-width'] span"); + var nameColumn = by.css('div[class*="datatable-body"] div[class*="adf-data-table-cell"][title="Display name"]'); var nameColumnHeader = by.css("div[data-automation-id='auto_id_name']"); var createdByColumn = by.css("div[class*='--text'][title='Created by'] span"); var sizeColumn = by.css("div[id*='document-list-container'] div[class*='adf-datatable-row'] .adf-filesize-cell"); diff --git a/e2e/pages/adf/paginationPage.js b/e2e/pages/adf/paginationPage.js index 64f5bb6322..4eabdd36b8 100644 --- a/e2e/pages/adf/paginationPage.js +++ b/e2e/pages/adf/paginationPage.js @@ -33,6 +33,7 @@ var PaginationPage = function () { var pageDropDownOptions = by.css("div[class*='mat-menu-content'] button"); var paginationSection = element(by.css("adf-pagination")); var paginationSectionEmpty = element(by.css("adf-pagination[class*='adf-pagination__empty ng-star-inserted']")); + var totalFiles = element(by.css('span[class="adf-pagination__range"]')); this.selectItemsPerPage = function (item) { Util.waitUntilElementIsVisible(itemsPerPageDropdown); @@ -130,6 +131,16 @@ var PaginationPage = function () { Util.waitUntilElementIsNotOnPage(previousButtonDisabled); }; + this.getTotalNumberOfFiles = function () { + Util.waitUntilElementIsVisible(totalFiles); + var numberOfFiles = totalFiles.getText().then(function (totalNumber) { + var totalNumberOfFiles = totalNumber.split('of ')[1]; + return totalNumberOfFiles; + }); + + return numberOfFiles; + } }; + module.exports = PaginationPage; diff --git a/e2e/pages/adf/searchFiltersPage.ts b/e2e/pages/adf/searchFiltersPage.ts index cd142eb589..e9f61adf71 100644 --- a/e2e/pages/adf/searchFiltersPage.ts +++ b/e2e/pages/adf/searchFiltersPage.ts @@ -29,6 +29,7 @@ export class SearchFiltersPage { createdFilter = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-SEARCH.FACET_FIELDS.CREATED"')); showMoreButtonForCreated = this.createdFilter.element(by.css('button[title="Show more"]')); showLessButtonForCreated = this.createdFilter.element(by.css('button[title="Show less"]')); + pngImageFileType = element(by.css('mat-checkbox[data-automation-id="checkbox-SEARCH.FACET_FIELDS.TYPE-PNG Image"]')); checkSearchFiltersIsDisplayed() { Util.waitUntilElementIsVisible(this.searchFilters); @@ -166,4 +167,21 @@ export class SearchFiltersPage { Util.waitUntilElementIsVisible(this.showLessButtonForCreated); } + clickPngImageType() { + Util.waitUntilElementIsVisible(this.pngImageFileType); + return this.pngImageFileType.click(); + } + + getBucketNumberOfFilterType(fileType) { + let fileTypeFilter = element(by.css('mat-checkbox[data-automation-id="checkbox-SEARCH.FACET_FIELDS.' + fileType + '"] span')); + Util.waitUntilElementIsVisible(fileTypeFilter); + let bucketNumber = fileTypeFilter.getText().then((valueOfBucket) => { + let numberOfBucket = valueOfBucket.split('(')[1]; + let totalNumberOfBucket = numberOfBucket.split(')')[0]; + return totalNumberOfBucket; + }); + + return bucketNumber; + } + }