import { BsModalRef } from 'ngx-bootstrap/modal';
import { of } from 'rxjs';
-import { configureTestBed, FormHelper, i18nProviders } from '../../../../testing/unit-test-helper';
+import {
+ configureTestBed,
+ FixtureHelper,
+ FormHelper,
+ i18nProviders
+} from '../../../../testing/unit-test-helper';
import { ErasureCodeProfileService } from '../../../shared/api/erasure-code-profile.service';
import { ErasureCodeProfile } from '../../../shared/models/erasure-code-profile';
import { TaskWrapperService } from '../../../shared/services/task-wrapper.service';
let ecpService: ErasureCodeProfileService;
let fixture: ComponentFixture<ErasureCodeProfileFormComponent>;
let formHelper: FormHelper;
+ let fixtureHelper: FixtureHelper;
let data: {};
configureTestBed({
beforeEach(() => {
fixture = TestBed.createComponent(ErasureCodeProfileFormComponent);
+ fixtureHelper = new FixtureHelper(fixture);
component = fixture.componentInstance;
formHelper = new FormHelper(component.form);
ecpService = TestBed.get(ErasureCodeProfileService);
it(`should show all default form controls`, () => {
const showDefaults = (plugin) => {
formHelper.setValue('plugin', plugin);
- formHelper.expectIdElementsVisible(
- fixture,
+ fixtureHelper.expectIdElementsVisible(
[
'name',
'plugin',
});
it(`should show 'packetSize' and 'technique'`, () => {
- formHelper.expectIdElementsVisible(fixture, ['packetSize', 'technique'], true);
+ fixtureHelper.expectIdElementsVisible(['packetSize', 'technique'], true);
});
it(`should not show any other plugin specific form control`, () => {
- formHelper.expectIdElementsVisible(fixture, ['c', 'l', 'crushLocality'], false);
+ fixtureHelper.expectIdElementsVisible(['c', 'l', 'crushLocality'], false);
});
});
});
it(`should show 'technique'`, () => {
- formHelper.expectIdElementsVisible(fixture, ['technique'], true);
+ fixtureHelper.expectIdElementsVisible(['technique'], true);
expect(fixture.debugElement.query(By.css('#technique'))).toBeTruthy();
});
it(`should not show any other plugin specific form control`, () => {
- formHelper.expectIdElementsVisible(
- fixture,
- ['c', 'l', 'crushLocality', 'packetSize'],
- false
- );
+ fixtureHelper.expectIdElementsVisible(['c', 'l', 'crushLocality', 'packetSize'], false);
});
});
});
it(`should show 'l' and 'crushLocality'`, () => {
- formHelper.expectIdElementsVisible(fixture, ['l', 'crushLocality'], true);
+ fixtureHelper.expectIdElementsVisible(['l', 'crushLocality'], true);
});
it(`should not show any other plugin specific form control`, () => {
- formHelper.expectIdElementsVisible(fixture, ['c', 'packetSize', 'technique'], false);
+ fixtureHelper.expectIdElementsVisible(['c', 'packetSize', 'technique'], false);
});
});
});
it(`should show 'c'`, () => {
- formHelper.expectIdElementsVisible(fixture, ['c'], true);
+ fixtureHelper.expectIdElementsVisible(['c'], true);
});
it(`should not show any other plugin specific form control`, () => {
- formHelper.expectIdElementsVisible(
- fixture,
+ fixtureHelper.expectIdElementsVisible(
['l', 'crushLocality', 'packetSize', 'technique'],
false
);
import { TabsModule } from 'ngx-bootstrap/tabs';
import { of } from 'rxjs';
-import { configureTestBed, FormHelper, i18nProviders } from '../../../../testing/unit-test-helper';
+import {
+ configureTestBed,
+ FixtureHelper,
+ FormHelper,
+ i18nProviders
+} from '../../../../testing/unit-test-helper';
import { NotFoundComponent } from '../../../core/not-found/not-found.component';
import { ErasureCodeProfileService } from '../../../shared/api/erasure-code-profile.service';
import { PoolService } from '../../../shared/api/pool.service';
describe('PoolFormComponent', () => {
const OSDS = 8;
let formHelper: FormHelper;
+ let fixtureHelper: FixtureHelper;
let component: PoolFormComponent;
let fixture: ComponentFixture<PoolFormComponent>;
let poolService: PoolService;
const setUpPoolComponent = () => {
fixture = TestBed.createComponent(PoolFormComponent);
+ fixtureHelper = new FixtureHelper(fixture);
component = fixture.componentInstance;
component.info = {
pool_names: [],
});
it('should not show info per default', () => {
- formHelper.expectElementVisible(fixture, '#crushRule', true);
- formHelper.expectElementVisible(fixture, '#crush-info-block', false);
+ fixtureHelper.expectElementVisible('#crushRule', true);
+ fixtureHelper.expectElementVisible('#crush-info-block', false);
});
it('should show info if the info button is clicked', () => {
expect(component.data.crushInfo).toBeTruthy();
fixture.detectChanges();
expect(infoButton.classes['active']).toBeTruthy();
- formHelper.expectIdElementsVisible(fixture, ['crushRule', 'crush-info-block'], true);
+ fixtureHelper.expectIdElementsVisible(['crushRule', 'crush-info-block'], true);
});
});
});
it('should not show info per default', () => {
- formHelper.expectElementVisible(fixture, '#erasureProfile', true);
- formHelper.expectElementVisible(fixture, '#ecp-info-block', false);
+ fixtureHelper.expectElementVisible('#erasureProfile', true);
+ fixtureHelper.expectElementVisible('#ecp-info-block', false);
});
it('should show info if the info button is clicked', () => {
expect(component.data.erasureInfo).toBeTruthy();
fixture.detectChanges();
expect(infoButton.classes['active']).toBeTruthy();
- formHelper.expectIdElementsVisible(fixture, ['erasureProfile', 'ecp-info-block'], true);
+ fixtureHelper.expectIdElementsVisible(['erasureProfile', 'ecp-info-block'], true);
});
describe('ecp deletion', () => {
expectError(control: AbstractControl | string, error: string) {
expect(this.getControl(control).hasError(error)).toBeTruthy();
}
+}
+
+export class FixtureHelper {
+ fixture: ComponentFixture<any>;
+
+ constructor(fixture: ComponentFixture<any>) {
+ this.fixture = fixture;
+ }
/**
* Expect a list of id elements to be visible or not.
*/
- expectIdElementsVisible(fixture: ComponentFixture<any>, ids: string[], visibility: boolean) {
- fixture.detectChanges();
+ expectIdElementsVisible(ids: string[], visibility: boolean) {
ids.forEach((css) => {
- this.expectElementVisible(fixture, `#${css}`, visibility);
+ this.expectElementVisible(`#${css}`, visibility);
});
}
/**
- * Expect a specific element in fixture to be visible or not.
+ * Expect a specific element to be visible or not.
*/
- expectElementVisible(fixture: ComponentFixture<any>, css: string, visibility: boolean) {
- expect(Boolean(fixture.debugElement.query(By.css(css)))).toBe(visibility);
+ expectElementVisible(css: string, visibility: boolean) {
+ expect(Boolean(this.getElementByCss(css))).toBe(visibility);
+ }
+
+ expectFormFieldToBe(css: string, value: string) {
+ const props = this.getElementByCss(css).properties;
+ expect(props['value'] || props['checked'].toString()).toBe(value);
+ }
+
+ clickElement(css: string) {
+ this.getElementByCss(css).triggerEventHandler('click', null);
+ this.fixture.detectChanges();
+ }
+
+ getText(css: string) {
+ const e = this.getElementByCss(css);
+ return e ? e.nativeElement.textContent.trim() : null;
+ }
+
+ getElementByCss(css: string) {
+ this.fixture.detectChanges();
+ return this.fixture.debugElement.query(By.css(css));
}
}