mgr/dashboard: do not show non-pool data in pool details

Fixes: https://tracker.ceph.com/issues/42674
Signed-off-by: Alfonso Martínez <almartin@redhat.com>
This commit is contained in:
Alfonso Martínez 2019-11-07 10:15:30 +01:00
parent 8cb1f6bddb
commit 9db76caf8b
5 changed files with 25 additions and 12 deletions

View File

@ -4,7 +4,7 @@
<tab i18n-heading
heading="Details">
<cd-table-key-value [renderObjects]="true"
[data]="selection.first()"
[data]="filterNonPoolData(selection.first())"
[autoReload]="false">
</cd-table-key-value>
</tab>

View File

@ -71,7 +71,7 @@ describe('PoolDetailsComponent', () => {
expect(tabs[0].active).toBeTruthy();
});
it('current active status of tabs should not change when selection is same with previour selection', () => {
it('current active status of tabs should not change when selection is the same as previous selection', () => {
fixture.detectChanges();
const tabs = poolDetailsComponent.tabsetChild.tabs;
expect(tabs[0].active).toBeTruthy();
@ -80,5 +80,23 @@ describe('PoolDetailsComponent', () => {
fixture.detectChanges();
expect(tabs[1].active).toBeTruthy();
});
it('returns pool details correctly', () => {
const pool = { prop1: 1, cdIsBinary: true, prop2: 2, cdExecuting: true, prop3: 3 };
const expectedPool = { prop1: 1, prop2: 2, prop3: 3 };
expect(poolDetailsComponent.filterNonPoolData(pool)).toEqual(expectedPool);
});
it('pool data filtering is called', () => {
const filterNonPoolDataSpy = spyOn(
poolDetailsComponent,
'filterNonPoolData'
).and.callThrough();
fixture.detectChanges();
expect(filterNonPoolDataSpy).toHaveBeenCalled();
});
});
});

View File

@ -1,6 +1,7 @@
import { Component, Input, OnChanges, ViewChild } from '@angular/core';
import { I18n } from '@ngx-translate/i18n-polyfill';
import * as _ from 'lodash';
import { TabsetComponent } from 'ngx-bootstrap/tabs';
import { PoolService } from '../../../shared/api/pool.service';
@ -69,4 +70,8 @@ export class PoolDetailsComponent implements OnChanges {
});
}
}
filterNonPoolData(pool: object): object {
return _.omit(pool, ['cdExecuting', 'cdIsBinary']);
}
}

View File

@ -75,12 +75,6 @@ describe('PoolListComponent', () => {
expect(component.columns.every((column) => Boolean(column.prop))).toBeTruthy();
});
it('returns pool details correctly', () => {
const pool = { prop1: 1, cdIsBinary: true, prop2: 2, cdExecuting: true, prop3: 3 };
const expected = { prop1: 1, prop2: 2, prop3: 3 };
expect(component.getPoolDetails(pool)).toEqual(expected);
});
describe('monAllowPoolDelete', () => {
let configOptRead: boolean;
let configurationService: ConfigurationService;

View File

@ -278,10 +278,6 @@ export class PoolListComponent implements OnInit {
return strings.join(', ');
}
getPoolDetails(pool: object) {
return _.omit(pool, ['cdExecuting', 'cdIsBinary']);
}
getSelectionTiers() {
const cacheTierIds = this.selection.hasSingleSelection
? this.selection.first()['tiers'] || []