From 380b626704d7fd08fa17a15f085853a872fd1dd0 Mon Sep 17 00:00:00 2001 From: Adam King Date: Tue, 20 Aug 2019 15:03:41 -0400 Subject: [PATCH] mgr/dashboard: Edit Pool Placement Group E2E Test Test that the user can edit a pool's placement group Fixes: https://tracker.ceph.com/issues/41357 Signed-off-by: Adam King Signed-off-by: Rafael Quintero --- .../dashboard/frontend/e2e/page-helper.po.ts | 4 +++ .../frontend/e2e/pools/pools.e2e-spec.ts | 7 +++++ .../dashboard/frontend/e2e/pools/pools.po.ts | 30 +++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts index 1e96b55f4ece5..ede59c18b68d3 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts @@ -59,6 +59,10 @@ export abstract class PageHelper { return element(by.cssContainingText('.datatable-body-cell-label', content)); } + getTableRow(content) { + return element(by.cssContainingText('.datatable-body-row', content)); + } + getTable() { return element.all(by.css('.datatable-body')); } diff --git a/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts index 26166fa2775e4..b56ca7ee5cf29 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts @@ -41,6 +41,13 @@ describe('Pools page', () => { }); }); + it('should edit a pools placement group', () => { + pools.exist(poolName, true).then(() => { + pools.navigateTo(); + pools.edit_pool_pg(poolName, 32); + }); + }); + it('should delete a pool', () => { pools.exist(poolName); pools.delete(poolName).then(() => { diff --git a/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts index 968bcde019f63..55f1a43b10d0b 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts @@ -52,6 +52,36 @@ export class PoolPageHelper extends PageHelper { }); } + edit_pool_pg(name: string, new_pg: number): promise.Promise { + if (!this.isPowerOf2(new_pg)) { + return Promise.reject(`Placement groups ${new_pg} are not a power of 2`); + } + return this.getTableCellByContent(name).then((elem) => { + elem.click(); // select pool from the table + element(by.cssContainingText('button', 'Edit')).click(); // click edit button + expect(this.getBreadcrumbText()).toEqual('Edit'); // verify we are now on edit page + $('input[name=pgNum]') + .sendKeys(protractor.Key.CONTROL, 'a', protractor.Key.NULL, new_pg) + .then(() => { + element(by.css('cd-submit-button')).click(); + const str = `${new_pg} active+clean`; + browser + .wait( + EC.visibilityOf(this.getTableRow(name)), + Helper.TIMEOUT, + 'Timed out waiting for table row to load' + ) + .then(() => { + return browser.wait( + EC.textToBePresentInElement(this.getTableRow(name), str), + Helper.TIMEOUT, + 'Timed out waiting for placement group to be updated' + ); + }); + }); + }); + } + private setApplications(apps: string[]) { if (!apps || apps.length === 0) { return; -- 2.39.5