import {
configureTestBed,
FixtureHelper,
- i18nProviders
+ i18nProviders,
+ Mocks
} from '../../../../../testing/unit-test-helper';
import { SharedModule } from '../../../../shared/shared.module';
import { InventoryDevice } from '../../inventory/inventory-devices/inventory-device.model';
let component: OsdDevicesSelectionGroupsComponent;
let fixture: ComponentFixture<OsdDevicesSelectionGroupsComponent>;
let fixtureHelper: FixtureHelper;
- const devices: InventoryDevice[] = [
- {
- hostname: 'node0',
- uid: '1',
- path: 'sda',
- sys_api: {
- vendor: 'AAA',
- model: 'aaa',
- size: 1024,
- rotational: 'false',
- human_readable_size: '1 KB'
- },
- available: false,
- rejected_reasons: [''],
- device_id: 'AAA-aaa-id0',
- human_readable_type: 'nvme/ssd',
- osd_ids: []
- }
- ];
+ const devices: InventoryDevice[] = [Mocks.getInventoryDevice('node0', '1')];
const buttonSelector = '.cd-col-form-input button';
const getButton = () => {
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { ToastrModule } from 'ngx-toastr';
-import { configureTestBed, i18nProviders } from '../../../../../testing/unit-test-helper';
+import { configureTestBed, i18nProviders, Mocks } from '../../../../../testing/unit-test-helper';
import { CdTableColumnFiltersChange } from '../../../../shared/models/cd-table-column-filters-change';
import { SharedModule } from '../../../../shared/shared.module';
import { InventoryDevice } from '../../inventory/inventory-devices/inventory-device.model';
describe('OsdDevicesSelectionModalComponent', () => {
let component: OsdDevicesSelectionModalComponent;
let fixture: ComponentFixture<OsdDevicesSelectionModalComponent>;
- const devices: InventoryDevice[] = [
- {
- hostname: 'node0',
- uid: '1',
- path: 'sda',
- sys_api: {
- vendor: 'AAA',
- model: 'aaa',
- size: 1024,
- rotational: 'false',
- human_readable_size: '1 KB'
- },
- available: false,
- rejected_reasons: [''],
- device_id: 'AAA-aaa-id0',
- human_readable_type: 'nvme/ssd',
- osd_ids: []
- }
- ];
+ let timeoutFn: Function;
+
+ const devices: InventoryDevice[] = [Mocks.getInventoryDevice('node0', '1')];
const expectSubmitButton = (enabled: boolean) => {
const nativeElement = fixture.debugElement.nativeElement;
});
beforeEach(() => {
+ spyOn(window, 'setTimeout').and.callFake((fn) => (timeoutFn = fn));
+
fixture = TestBed.createComponent(OsdDevicesSelectionModalComponent);
component = fixture.componentInstance;
component.devices = devices;
+
+ // Mocks InventoryDeviceComponent
+ component.inventoryDevices = {
+ columns: [
+ { name: 'Device path', prop: 'path' },
+ {
+ name: 'Type',
+ prop: 'human_readable_type'
+ },
+ {
+ name: 'Available',
+ prop: 'available'
+ }
+ ]
+ } as InventoryDevicesComponent;
+ // Mocks the update from the above component
+ component.filterColumns = ['path', 'human_readable_type'];
fixture.detectChanges();
});
expectSubmitButton(false);
});
+ it(
+ 'should update requiredFilters after ngAfterViewInit is called to prevent ' +
+ 'ExpressionChangedAfterItHasBeenCheckedError',
+ () => {
+ expect(component.requiredFilters).toEqual([]);
+ timeoutFn();
+ expect(component.requiredFilters).toEqual(['Device path', 'Type']);
+ }
+ );
+
it('should enable submit button after filtering some devices', () => {
const event: CdTableColumnFiltersChange = {
filters: [
import { I18n } from '@ngx-translate/i18n-polyfill';
import { configureTestSuite } from 'ng-bullet';
+import { InventoryDevice } from '../app/ceph/cluster/inventory/inventory-devices/inventory-device.model';
import { TableActionsComponent } from '../app/shared/datatable/table-actions/table-actions.component';
import { Icons } from '../app/shared/enum/icons.enum';
import { CdFormGroup } from '../app/shared/forms/cd-form-group';
];
return rule;
}
+
+ static getInventoryDevice(
+ hostname: string,
+ uid: string,
+ path = 'sda',
+ available = false
+ ): InventoryDevice {
+ return {
+ hostname,
+ uid,
+ path,
+ available,
+ sys_api: {
+ vendor: 'AAA',
+ model: 'aaa',
+ size: 1024,
+ rotational: 'false',
+ human_readable_size: '1 KB'
+ },
+ rejected_reasons: [''],
+ device_id: 'AAA-aaa-id0',
+ human_readable_type: 'nvme/ssd',
+ osd_ids: []
+ };
+ }
}
export class TabHelper {