[ADF-3715]Refactor search filters page (#3933)

* Add tests for text widget

* Propose refactor search filters component

* Fix lint errors

* [ADF-3715]Refactor searchFiltersPage

* Change describe

* Replaced use of searchDialog with browser.get

* Added a test case

* Modifications to enterConfiguration method

* Create a new method enterBigConfigurationText

* Fix lint issues

* no message
This commit is contained in:
cristinaj
2018-11-03 17:02:31 +00:00
committed by Eugenio Romano
parent ca3e1035fa
commit a6cd910466
12 changed files with 584 additions and 161 deletions
@@ -0,0 +1,123 @@
/*!
* @license
* Copyright 2016 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 { browser } from 'protractor';
import AcsUserModel = require('../../../models/ACS/acsUserModel');
import FolderModel = require('../../../models/ACS/folderModel');
import TestConfig = require('../../../test.config');
import AlfrescoApi = require('alfresco-js-api-node');
import { LoginPage } from '../../../pages/adf/loginPage';
import SearchDialog = require('../../../pages/adf/dialog/searchDialog');
import { SearchResultsPage } from '../../../pages/adf/searchResultsPage';
import { SearchFiltersPage } from '../../../pages/adf/searchFiltersPage';
import { ConfigEditorPage } from '../../../pages/adf/configEditorPage';
import { NavigationBarPage } from '../../../pages/adf/navigationBarPage';
import path = require('path');
describe('Search component - Text widget', () => {
const configEditorPage = new ConfigEditorPage();
const navigationBarPage = new NavigationBarPage();
const searchFiltersPage = new SearchFiltersPage();
let loginPage = new LoginPage();
let searchDialog = new SearchDialog();
let searchResultPage = new SearchResultsPage();
let acsUser = new AcsUserModel();
let newFolderModel = new FolderModel({ 'name': 'newFolder' , 'description': 'newDescription' });
beforeAll(async (done) => {
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: TestConfig.adf.url
});
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await this.alfrescoJsApi.nodes.addNode('-my-', {
'name': newFolderModel.name,
'nodeType': 'cm:folder',
'properties':
{
'cm:description': newFolderModel.description
}
}, {}, {});
await browser.driver.sleep(10000);
loginPage.loginToContentServicesUsingUserModel(acsUser);
done();
});
it('[C289329] Placeholder should be displayed in the widget when the input string is empty', () => {
browser.get(TestConfig.adf.url + '/search;q=*');
searchResultPage.tableIsLoaded();
searchFiltersPage.checkNameFilterIsDisplayed();
expect(searchFiltersPage.textFiltersPage().getNamePlaceholder()).toEqual('Enter the name');
});
it('[C289330] Should be able to change the Field setting', () => {
browser.get(TestConfig.adf.url + '/search;q=*');
searchResultPage.tableIsLoaded();
searchFiltersPage.checkCheckListFilterIsDisplayed();
searchFiltersPage.clickCheckListFilter();
searchFiltersPage.checkListFiltersPage().clickCheckListOption('Folder');
searchFiltersPage.checkNameFilterIsDisplayed();
searchFiltersPage.textFiltersPage().searchByName(newFolderModel.name);
searchResultPage.checkContentIsDisplayed(newFolderModel.name);
searchFiltersPage.textFiltersPage().searchByName(newFolderModel.description);
searchResultPage.checkContentIsNotDisplayed(newFolderModel.name);
let json = JSON.parse(require('fs').readFileSync(path.join(TestConfig.main.rootPath, '/content-services/search/search.config.json'), 'utf8'));
json.categories[0].component.settings.field = 'cm:description';
navigationBarPage.clickConfigEditorButton();
configEditorPage.clickSearchConfiguration();
configEditorPage.clickClearButton();
configEditorPage.enterBigConfigurationText(JSON.stringify(json));
configEditorPage.clickSaveButton();
searchDialog.clickOnSearchIcon().enterTextAndPressEnter('*');
searchResultPage.tableIsLoaded();
searchFiltersPage.checkCheckListFilterIsDisplayed();
searchFiltersPage.clickCheckListFilter();
searchFiltersPage.checkListFiltersPage().clickCheckListOption('Folder');
searchFiltersPage.checkNameFilterIsDisplayed();
searchFiltersPage.textFiltersPage().searchByName(newFolderModel.name);
searchResultPage.checkContentIsNotDisplayed(newFolderModel.name);
searchFiltersPage.textFiltersPage().searchByName(newFolderModel.description);
searchResultPage.checkContentIsDisplayed(newFolderModel.name);
});
});
@@ -0,0 +1,135 @@
{
"include": ["path", "allowableOperations"],
"sorting": {
"options": [
{ "key": "name", "label": "Name", "type": "FIELD", "field": "cm:name", "ascending": true },
{ "key": "content.sizeInBytes", "label": "Size", "type": "FIELD", "field": "content.size", "ascending": true },
{ "key": "description", "label": "Description", "type": "FIELD", "field": "cm:description", "ascending": true },
{ "key": "createdByUser", "label": "Author", "type": "FIELD", "field": "cm:creator", "ascending": true },
{ "key": "createdAt", "label": "Created", "type": "FIELD", "field": "cm:created", "ascending": true }
],
"defaults": [
{ "key": "name", "type": "FIELD", "field": "cm:name", "ascending": true }
]
},
"filterQueries": [
{ "query": "TYPE:'cm:folder' OR TYPE:'cm:content'" },
{ "query": "NOT cm:creator:System" }
],
"facetFields": {
"expanded": true,
"fields": [
{ "field": "content.mimetype", "mincount": 1, "label": "1:Type" },
{ "field": "content.size", "mincount": 1, "label": "2:Size" },
{ "field": "creator", "mincount": 1, "label": "3:Creator" },
{ "field": "modifier", "mincount": 1, "label": "4:Modifier" },
{ "field": "created", "mincount": 1, "label": "5:Created" }
]
},
"facetQueries": {
"label": "My facet queries",
"pageSize": 5,
"queries": [
{ "query": "created:2018", "label": "1.Created This Year" },
{ "query": "content.mimetype", "label": "2.Type" },
{ "query": "content.size:[0 TO 10240]", "label": "3.Size: xtra small"},
{ "query": "content.size:[10240 TO 102400]", "label": "4.Size: small"},
{ "query": "content.size:[102400 TO 1048576]", "label": "5.Size: medium" },
{ "query": "content.size:[1048576 TO 16777216]", "label": "6.Size: large" },
{ "query": "content.size:[16777216 TO 134217728]", "label": "7.Size: xtra large" },
{ "query": "content.size:[134217728 TO MAX]", "label": "8.Size: XX large" }
]
},
"categories": [
{
"id": "queryName",
"name": "Name",
"enabled": true,
"expanded": true,
"component": {
"selector": "text",
"settings": {
"pattern": "cm:name:'(.*?)'",
"field": "cm:name",
"placeholder": "Enter the name"
}
}
},
{
"id": "checkList",
"name": "Check List",
"enabled": true,
"component": {
"selector": "check-list",
"settings": {
"pageSize": 5,
"operator": "OR",
"options": [
{ "name": "Folder", "value": "TYPE:'cm:folder'" },
{ "name": "Document", "value": "TYPE:'cm:content'" }
]
}
}
},
{
"id": "contentSize",
"name": "Content Size",
"enabled": true,
"component": {
"selector": "slider",
"settings": {
"field": "cm:content.size",
"min": 0,
"max": 18,
"step": 1,
"thumbLabel": true
}
}
},
{
"id": "contentSizeRange",
"name": "Content Size (range)",
"enabled": true,
"component": {
"selector": "number-range",
"settings": {
"field": "cm:content.size",
"format": "[{FROM} TO {TO}]"
}
}
},
{
"id": "createdDateRange",
"name": "Created Date (range)",
"enabled": true,
"component": {
"selector": "date-range",
"settings": {
"field": "cm:created",
"dateFormat": "DD-MMM-YY"
}
}
},
{
"id": "queryType",
"name": "Type",
"enabled": true,
"component": {
"selector": "radio",
"settings": {
"field": null,
"pageSize": 5,
"options": [
{ "name": "APP.SEARCH.RADIO.NONE", "value": "", "default": true },
{ "name": "APP.SEARCH.RADIO.ALL", "value": "TYPE:'cm:folder' OR TYPE:'cm:content'" },
{ "name": "APP.SEARCH.RADIO.FOLDER", "value": "TYPE:'cm:folder'" },
{ "name": "APP.SEARCH.RADIO.DOCUMENT", "value": "TYPE:'cm:content'" }
]
}
}
}
]
}
@@ -20,6 +20,7 @@ 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 { SearchCategoriesPage } from '../../pages/adf/content_services/search/search-categories';
import AcsUserModel = require('../../models/ACS/acsUserModel');
import FileModel = require('../../models/ACS/fileModel');
@@ -37,6 +38,7 @@ describe('Search Filters', () => {
let loginPage = new LoginPage();
let searchDialog = new SearchDialog();
let searchFiltersPage = new SearchFiltersPage();
const searchCategoriesPage = new SearchCategoriesPage();
let uploadActions = new UploadActions();
let paginationPage = new PaginationPage();
let contentList = new ContentList();
@@ -98,44 +100,43 @@ describe('Search Filters', () => {
});
it('[C286298] Should be able to cancel a filter using "x" button from the toolbar', () => {
searchFiltersPage.filterByCreator(acsUser.firstName, acsUser.lastName);
searchFiltersPage.checkCreatorChipIsDisplayed(acsUser.firstName, acsUser.lastName);
searchFiltersPage.removeCreatorFilter(acsUser.firstName, acsUser.lastName);
searchFiltersPage.checkCreatorChipIsNotDisplayed(acsUser.firstName, acsUser.lastName);
let userOption = `${acsUser.firstName} ${acsUser.lastName}`;
searchFiltersPage.creatorCheckListFiltersPage().filterBy(userOption)
.checkChipIsDisplayed(userOption)
.removeFilterOption(userOption)
.checkChipIsNotDisplayed(userOption);
});
it('[C277146] Should Show more/less buttons be hidden when inactive', () => {
browser.get(TestConfig.adf.url + '/search;q=*');
searchFiltersPage.checkCreatedShowLessButtonIsNotDisplayed();
searchFiltersPage.checkCreatedShowMoreButtonIsDisplayed();
searchFiltersPage.clickCreatedShowMoreButtonUntilIsNotDisplayed();
searchFiltersPage.checkCreatedShowLessButtonIsDisplayed();
searchFiltersPage.clickCreatedShowLessButtonUntilIsNotDisplayed();
searchFiltersPage.creatorCheckListFiltersPage().checkShowLessButtonIsNotDisplayed()
.checkShowMoreButtonIsDisplayed()
.clickShowMoreButtonUntilIsNotDisplayed()
.checkShowLessButtonIsDisplayed()
.clickShowLessButtonUntilIsNotDisplayed();
});
it('[C286556] Search categories should preserve their collapsed/expanded state after the search', () => {
browser.get(TestConfig.adf.url + '/search;q=*');
searchFiltersPage.clickFileTypeFilterHeader();
searchFiltersPage.checkFileTypeFilterIsCollapsed();
searchFiltersPage.clickFileSizeFilterHeader();
searchFiltersPage.checkFileSizeFilterIsCollapsed();
searchFiltersPage.clickFileTypeListFilter()
.checkFileTypeFilterIsCollapsed()
.clickFileSizeFilterHeader()
.checkFileSizeFilterIsCollapsed();
searchFiltersPage.selectCreator('Administrator');
searchFiltersPage.creatorCheckListFiltersPage().clickCheckListOption('Administrator');
searchFiltersPage.checkFileTypeFilterIsCollapsed();
searchFiltersPage.checkFileSizeFilterIsCollapsed();
searchFiltersPage.checkFileTypeFilterIsCollapsed()
.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();
searchFiltersPage.fileTypeCheckListFiltersPage().clickCheckListOption('PNG Image');
let bucketNumberForFilter = searchFiltersPage.getBucketNumberOfFilterType(filter.type);
let bucketNumberForFilter = searchFiltersPage.fileTypeCheckListFiltersPage().getBucketNumberOfFilterType(filter.type);
let resultFileNames = contentList.getAllRowsNameColumn();
@@ -38,7 +38,7 @@ describe('Search Component - Multi-Select Facet', () => {
let searchResultsPage = new SearchResultsPage();
let uploadActions = new UploadActions();
let searchFiltersPage = new SearchFiltersPage();
let site;
let site, userOption;
beforeAll(() => {
this.alfrescoJsApi = new AlfrescoApi({
@@ -89,8 +89,10 @@ describe('Search Component - Multi-Select Facet', () => {
searchDialog.clickOnSearchIcon();
searchDialog.enterTextAndPressEnter(`${randomName}`);
userOption = `${acsUser.firstName} ${acsUser.lastName}`;
searchFiltersPage.checkSearchFiltersIsDisplayed();
searchFiltersPage.filterByCreator(acsUser.firstName, acsUser.lastName);
searchFiltersPage.creatorCheckListFiltersPage().filterBy(userOption);
done();
});
@@ -109,13 +111,13 @@ describe('Search Component - Multi-Select Facet', () => {
});
it('[C280054] Should be able to select multiple items from a search facet filter', () => {
searchFiltersPage.filterByFileType('Plain Text');
searchFiltersPage.fileTypeCheckListFiltersPage().filterBy('Plain Text');
expect(searchResultsPage.numberOfResultsDisplayed()).toBe(2);
searchResultsPage.checkContentIsDisplayed(txtFile.entry.name);
searchResultsPage.checkContentIsDisplayed(txtFileSite.entry.name);
searchFiltersPage.filterByFileType('JPEG Image');
searchFiltersPage.fileTypeCheckListFiltersPage().filterBy('JPEG Image');
expect(searchResultsPage.numberOfResultsDisplayed()).toBe(4);
searchResultsPage.checkContentIsDisplayed(txtFile.entry.name);
@@ -176,17 +178,18 @@ describe('Search Component - Multi-Select Facet', () => {
});
it('[C280056] Should be able to select multiple items from multiple search facet filters', () => {
searchFiltersPage.checkSearchFiltersIsDisplayed();
searchFiltersPage.filterByCreator(userUploadingTxt.firstName, userUploadingTxt.lastName);
searchFiltersPage.creatorCheckListFiltersPage().filterBy(`${userUploadingTxt.firstName} ${userUploadingTxt.lastName}`);
searchFiltersPage.filterByCreator(userUploadingImg.firstName, userUploadingImg.lastName);
searchFiltersPage.creatorCheckListFiltersPage().filterBy(`${userUploadingImg.firstName} ${userUploadingImg.lastName}`);
searchResultsPage.checkContentIsDisplayed(txtFile.entry.name);
searchResultsPage.checkContentIsDisplayed(jpgFile.entry.name);
searchFiltersPage.filterByFileType('Plain Text');
searchFiltersPage.filterByFileType('JPEG Image');
searchFiltersPage.fileTypeCheckListFiltersPage().filterBy('Plain Text');
searchFiltersPage.fileTypeCheckListFiltersPage().filterBy('JPEG Image');
expect(searchResultsPage.numberOfResultsDisplayed()).toBe(2);
searchResultsPage.checkContentIsDisplayed(txtFile.entry.name);
@@ -237,9 +240,8 @@ describe('Search Component - Multi-Select Facet', () => {
});
it('[C280058] Should update filter facets items number when another filter facet item is selected', () => {
searchFiltersPage.filterByFileType('Plain Text');
searchFiltersPage.filterByCreator(acsUser.firstName, acsUser.lastName);
searchFiltersPage.fileTypeCheckListFiltersPage().filterBy('Plain Text');
searchFiltersPage.creatorCheckListFiltersPage().filterBy(`${acsUser.firstName} ${acsUser.lastName}`);
expect(searchResultsPage.numberOfResultsDisplayed()).toBe(1);
searchResultsPage.checkContentIsDisplayed(txtFile.entry.name);