Skip to content
Snippets Groups Projects
Commit 9c31aa5b authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6423 improve test structure

parent af7b6f34
No related branches found
No related tags found
No related merge requests found
......@@ -24,7 +24,7 @@
export class NavigationE2EComponent {
private readonly alleFilterToggleButton: string = 'alle-filter-toggle-button';
private readonly meineVorgaengeToggleButton: string = 'meine-vorgaenge-filter-toggle-button';
private readonly nichtZugewiesenToggleButton: string = 'unassigned-filter-toggle-button';
private readonly unassignedToggleButton: string = 'unassigned-filter-toggle-button';
private readonly locatorRoot: string = 'navigation';
......@@ -40,7 +40,7 @@ export class NavigationE2EComponent {
return cy.getTestElement(this.meineVorgaengeToggleButton);
}
public getNichtZugewiesenFilter() {
return cy.getTestElement(this.nichtZugewiesenToggleButton);
public getUnassignedFilter() {
return cy.getTestElement(this.unassignedToggleButton);
}
}
......@@ -89,7 +89,7 @@ describe('VorgangList Page', () => {
it('should focus Nicht zugewiesen filter', () => {
pressTab();
isOdsFocused(navigation.getNichtZugewiesenFilter());
isOdsFocused(navigation.getUnassignedFilter());
});
});
......
......@@ -8,19 +8,10 @@ import { VorgangViewsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/v
import { HttpMethodE2E } from 'apps/alfa-e2e/src/model/util';
import { ClientAttributeNameE2E, VorgangE2E } from 'apps/alfa-e2e/src/model/vorgang';
import { MainPage, waitForSpinnerToDisappear } from 'apps/alfa-e2e/src/page-objects/main.po';
import {
dropCollections,
intercept,
scrollToWindowBottom,
waitOfInterceptor,
} from 'apps/alfa-e2e/src/support/cypress-helper';
import { dropCollections, intercept, scrollToWindowBottom, waitOfInterceptor } from 'apps/alfa-e2e/src/support/cypress-helper';
import { exist } from 'apps/alfa-e2e/src/support/cypress.util';
import { createDateToday, generateIds } from 'apps/alfa-e2e/src/support/tech.util';
import {
getUserSabineId,
initUsermanagerUsers,
loginAsSabine,
} from 'apps/alfa-e2e/src/support/user-util';
import { getUserSabineId, initUsermanagerUsers, loginAsSabine } from 'apps/alfa-e2e/src/support/user-util';
import {
VORGANG_LIST_NEXT_FRIST_PARAM,
VORGANG_LIST_PAGE_SIZE,
......@@ -71,10 +62,7 @@ describe('VorgangList View Wiedervorlagen', () => {
dropCollections();
});
function createVorgaenge(
namePrefix: string,
buildFunction: (id: string, name: string) => VorgangE2E,
): VorgangE2E[] {
function createVorgaenge(namePrefix: string, buildFunction: (id: string, name: string) => VorgangE2E): VorgangE2E[] {
let count = 1;
return generateIds(110).map((randomId) => {
const vorgang: VorgangE2E = buildFunction(randomId, `${namePrefix}_${count}`);
......@@ -111,24 +99,16 @@ describe('VorgangList View Wiedervorlagen', () => {
beforeEach(() => {
navigation.getAlleFilter().click();
waitForSpinnerToDisappear();
intercept(HttpMethodE2E.GET, buildVorgangWithOpenWiedervorlagenPageLink(1)).as(
loadPageInterceptor,
);
intercept(HttpMethodE2E.GET, buildVorgangWithOpenWiedervorlagenPageLink(1)).as(loadPageInterceptor);
});
it('should show 1 page with 100 vorgaenge with open wiedervorlagen', () => {
views.getWiedervorlagen().getRoot().click();
waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
assert(
interception.response.body._embedded.vorgangHeaderList.length ===
VORGANG_LIST_PAGE_SIZE,
);
assert(interception.response.body._embedded.vorgangHeaderList.length === VORGANG_LIST_PAGE_SIZE);
assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME + 1);
assert(
interception.response.body._embedded.vorgangHeaderList[99].name,
ALLE_NAME + VORGANG_LIST_PAGE_SIZE,
);
assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME + VORGANG_LIST_PAGE_SIZE);
});
});
});
......@@ -137,27 +117,16 @@ describe('VorgangList View Wiedervorlagen', () => {
const loadPageInterceptor: string = 'loadPage';
beforeEach(() => {
intercept(HttpMethodE2E.GET, buildVorgangWithOpenWiedervorlagenPageLink(2)).as(
loadPageInterceptor,
);
intercept(HttpMethodE2E.GET, buildVorgangWithOpenWiedervorlagenPageLink(2)).as(loadPageInterceptor);
});
it('should show 2 page with 10 vorgaenge with open wiedervorlagen and 90 vorgaenge with open wiedervorlagen ASSIGNED on scrolling to bottom', () => {
scrollToWindowBottom();
waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
assert(
interception.response.body._embedded.vorgangHeaderList.length ===
VORGANG_LIST_PAGE_SIZE,
);
assert(
interception.response.body._embedded.vorgangHeaderList[0].name,
MEINE_VORGAENGE_NAME + 1,
);
assert(
interception.response.body._embedded.vorgangHeaderList[99].name,
MEINE_VORGAENGE_NAME + VORGANG_LIST_PAGE_SIZE,
);
assert(interception.response.body._embedded.vorgangHeaderList.length === VORGANG_LIST_PAGE_SIZE);
assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME + 1);
assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME + VORGANG_LIST_PAGE_SIZE);
});
});
});
......@@ -166,9 +135,7 @@ describe('VorgangList View Wiedervorlagen', () => {
const loadPageInterceptor: string = 'loadPage';
beforeEach(() => {
intercept(HttpMethodE2E.GET, buildVorgangWithOpenWiedervorlagenPageLink(3)).as(
loadPageInterceptor,
);
intercept(HttpMethodE2E.GET, buildVorgangWithOpenWiedervorlagenPageLink(3)).as(loadPageInterceptor);
});
it('should show 3 page with 10 vorgaenge with open wiedervorlagen ASSIGNED on scrolling to bottom', () => {
......@@ -176,14 +143,8 @@ describe('VorgangList View Wiedervorlagen', () => {
waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
assert(interception.response.body._embedded.vorgangHeaderList.length === 20);
assert(
interception.response.body._embedded.vorgangHeaderList[0].name,
MEINE_VORGAENGE_NAME + 80,
);
assert(
interception.response.body._embedded.vorgangHeaderList[19].name,
MEINE_VORGAENGE_NAME + VORGANG_LIST_PAGE_SIZE,
);
assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME + 80);
assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME + VORGANG_LIST_PAGE_SIZE);
});
});
});
......@@ -198,27 +159,16 @@ describe('VorgangList View Wiedervorlagen', () => {
const loadPageInterceptor: string = 'loadPage';
beforeEach(() => {
intercept(HttpMethodE2E.GET, buildVorgangWithOpenWiedervorlagenAssignedPageLink(1)).as(
loadPageInterceptor,
);
intercept(HttpMethodE2E.GET, buildVorgangWithOpenWiedervorlagenAssignedPageLink(1)).as(loadPageInterceptor);
});
it('should show 1 page with 100 vorgaenge with open wiedervorlagen', () => {
navigation.getMeineVorgaengeFilter().click();
waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
assert(
interception.response.body._embedded.vorgangHeaderList.length ===
VORGANG_LIST_PAGE_SIZE,
);
assert(
interception.response.body._embedded.vorgangHeaderList[0].name,
MEINE_VORGAENGE_NAME + 1,
);
assert(
interception.response.body._embedded.vorgangHeaderList[99].name,
MEINE_VORGAENGE_NAME + VORGANG_LIST_PAGE_SIZE,
);
assert(interception.response.body._embedded.vorgangHeaderList.length === VORGANG_LIST_PAGE_SIZE);
assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME + 1);
assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME + VORGANG_LIST_PAGE_SIZE);
});
});
});
......@@ -227,9 +177,7 @@ describe('VorgangList View Wiedervorlagen', () => {
const loadPageInterceptor: string = 'loadPage';
beforeEach(() => {
intercept(HttpMethodE2E.GET, buildVorgangWithOpenWiedervorlagenAssignedPageLink(2)).as(
loadPageInterceptor,
);
intercept(HttpMethodE2E.GET, buildVorgangWithOpenWiedervorlagenAssignedPageLink(2)).as(loadPageInterceptor);
});
it('should show 2 page with 10 vorgaenge with open wiedervorlagen and 90 vorgaenge with open wiedervorlagen ASSIGNED on scrolling to bottom', () => {
......@@ -237,14 +185,8 @@ describe('VorgangList View Wiedervorlagen', () => {
waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
assert(interception.response.body._embedded.vorgangHeaderList.length === 10);
assert(
interception.response.body._embedded.vorgangHeaderList[0].name,
MEINE_VORGAENGE_NAME + 101,
);
assert(
interception.response.body._embedded.vorgangHeaderList[9].name,
MEINE_VORGAENGE_NAME + 110,
);
assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME + 101);
assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME + 110);
});
});
});
......@@ -259,24 +201,16 @@ describe('VorgangList View Wiedervorlagen', () => {
const loadPageInterceptor: string = 'loadPage';
beforeEach(() => {
intercept(HttpMethodE2E.GET, buildUnassignedVorgangWithOpenWiedervorlagenPageLink(1)).as(
loadPageInterceptor,
);
intercept(HttpMethodE2E.GET, buildUnassignedVorgangWithOpenWiedervorlagenPageLink(1)).as(loadPageInterceptor);
});
it('should show 1 page with 100 vorgaenge with open wiedervorlagen', () => {
navigation.getNichtZugewiesenFilter().click();
navigation.getUnassignedFilter().click();
waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => {
assert(
interception.response.body._embedded.vorgangHeaderList.length ===
VORGANG_LIST_PAGE_SIZE,
);
assert(interception.response.body._embedded.vorgangHeaderList.length === VORGANG_LIST_PAGE_SIZE);
assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME + 1);
assert(
interception.response.body._embedded.vorgangHeaderList[99].name,
ALLE_NAME + VORGANG_LIST_PAGE_SIZE,
);
assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME + VORGANG_LIST_PAGE_SIZE);
});
});
});
......@@ -285,9 +219,7 @@ describe('VorgangList View Wiedervorlagen', () => {
const loadPageInterceptor: string = 'loadPage';
beforeEach(() => {
intercept(HttpMethodE2E.GET, buildUnassignedVorgangWithOpenWiedervorlagenPageLink(2)).as(
loadPageInterceptor,
);
intercept(HttpMethodE2E.GET, buildUnassignedVorgangWithOpenWiedervorlagenPageLink(2)).as(loadPageInterceptor);
});
it('should show 2 page with 10 vorgaenge on scrolling to bottom', () => {
......
......@@ -219,7 +219,7 @@ describe('Vorgang views and filter', () => {
});
it('Nicht zugewiesen should not be selected', () => {
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
});
......@@ -298,7 +298,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should filter List', () => {
......@@ -330,7 +330,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should filter List', () => {
......@@ -362,7 +362,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should filter List', () => {
......@@ -394,7 +394,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should filter List', () => {
......@@ -426,7 +426,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should filter List', () => {
......@@ -458,7 +458,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should filter List', () => {
......@@ -490,7 +490,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should filter List', () => {
......@@ -523,7 +523,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should filter List', () => {
......@@ -556,7 +556,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should show full List', () => {
......@@ -586,7 +586,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should show message', () => {
......@@ -598,10 +598,10 @@ describe('Vorgang views and filter', () => {
describe('Select Filter', () => {
describe('Nicht zugewiesen', () => {
it('should set selected after click', () => {
navigation.getNichtZugewiesenFilter().click();
navigation.getUnassignedFilter().click();
waitForSpinnerToDisappear();
isOdsButtonToggleChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleChecked(navigation.getUnassignedFilter());
});
it('should unselect Meine Vorgänge', () => {
......@@ -674,7 +674,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getMeineVorgaengeFilter());
isOdsButtonToggleNotChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should keep view selection', () => {
......@@ -725,7 +725,7 @@ describe('Vorgang views and filter', () => {
describe('on Nicht zugewiesen filter selection', () => {
it('should show filtered list', () => {
navigation.getNichtZugewiesenFilter().click();
navigation.getUnassignedFilter().click();
waitForSpinnerToDisappear();
haveLength(vorgangList.getItems(), 1);
......@@ -733,7 +733,7 @@ describe('Vorgang views and filter', () => {
});
it('should show Nicht zugewiesen as selected', () => {
isOdsButtonToggleChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleChecked(navigation.getUnassignedFilter());
});
it('should unselect Alle filter', () => {
......@@ -775,7 +775,7 @@ describe('Vorgang views and filter', () => {
it('should keep filter selection', () => {
isOdsButtonToggleChecked(navigation.getAlleFilter());
isOdsButtonToggleNotChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleNotChecked(navigation.getUnassignedFilter());
});
it('should unselect Meine Vorgänge filter', () => {
......@@ -830,7 +830,7 @@ describe('Vorgang views and filter', () => {
describe('on Nicht zugewiesen filter selection', () => {
it('should show filtered list', () => {
navigation.getNichtZugewiesenFilter().click();
navigation.getUnassignedFilter().click();
waitForSpinnerToDisappear();
haveLength(vorgangList.getItems(), 2);
......@@ -839,7 +839,7 @@ describe('Vorgang views and filter', () => {
});
it('should select', () => {
isOdsButtonToggleChecked(navigation.getNichtZugewiesenFilter());
isOdsButtonToggleChecked(navigation.getUnassignedFilter());
});
it('should unselect Meine Vorgänge filter', () => {
......
......@@ -22,56 +22,31 @@ describe('ButtonToggleGroupComponent', () => {
});
describe('component', () => {
describe('setFormControlValue', () => {
describe('ngAfterContentInit', () => {
beforeEach(() => {
component.fieldControl.setValue = jest.fn();
fixture.detectChanges();
});
it('should return function', () => {
const result: Function = component.setFormControlValue('test');
expect(typeof result).toBe('function');
});
it('should set value if values are not equal', () => {
component.setFormControlValue('test')();
expect(component.fieldControl.setValue).toHaveBeenCalledWith('test');
});
it('should not set value if values are equal', () => {
component.setFormControlValue(null)();
expect(component.fieldControl.setValue).not.toHaveBeenCalled();
});
});
describe('isValueSelected', () => {
it('should return function', () => {
const result: Function = component.isValueSelected();
expect(typeof result).toBe('function');
component.passPropsToChild = jest.fn();
});
it('should return true', () => {
const result: boolean = component.isValueSelected()(null);
expect(result).toBe(true);
});
it('should pass props to children', () => {
const queryList: QueryList<ButtonToggleComponent> = new QueryList();
queryList.reset([new ButtonToggleComponent(), new ButtonToggleComponent()]);
component.buttonToggles = queryList;
it('should return false', () => {
const result: boolean = component.isValueSelected()('whatever');
component.ngAfterContentInit();
expect(result).toBe(false);
expect(component.passPropsToChild).toHaveBeenCalledTimes(2);
});
});
describe('passPropsToChild', () => {
const funcOne: () => number = jest.fn().mockReturnValue(1);
const funcTwo: () => number = jest.fn().mockReturnValue(2);
beforeEach(() => {
component.setFormControlValue = jest.fn().mockReturnValue(1);
component.isValueSelected = jest.fn().mockReturnValue(2);
component.setFormControlValue = jest.fn().mockReturnValue(funcOne);
component.isValueSelected = jest.fn().mockReturnValue(funcTwo);
});
it('should call setFormControlValue', () => {
const buttonToggle = new ButtonToggleComponent();
buttonToggle.value = 'test';
......@@ -86,7 +61,7 @@ describe('ButtonToggleGroupComponent', () => {
component.passPropsToChild(buttonToggle);
expect(buttonToggle.onClick).toBe(1);
expect(buttonToggle.onClick).toBe(funcOne);
});
it('should call isValueSelected', () => {
......@@ -102,23 +77,52 @@ describe('ButtonToggleGroupComponent', () => {
component.passPropsToChild(buttonToggle);
expect(buttonToggle.isSelected).toBe(2);
expect(buttonToggle.isSelected).toBe(funcTwo);
});
});
describe('ngAfterContentInit', () => {
describe('setFormControlValue', () => {
beforeEach(() => {
component.passPropsToChild = jest.fn();
component.fieldControl.setValue = jest.fn();
fixture.detectChanges();
});
it('should pass props to children', () => {
const queryList: QueryList<ButtonToggleComponent> = new QueryList();
queryList.reset([new ButtonToggleComponent(), new ButtonToggleComponent()]);
component.buttonToggles = queryList;
it('should return function', () => {
const result: Function = component.setFormControlValue('test');
component.ngAfterContentInit();
expect(typeof result).toBe('function');
});
expect(component.passPropsToChild).toHaveBeenCalledTimes(2);
it('should set value if values are not equal', () => {
component.setFormControlValue('test')();
expect(component.fieldControl.setValue).toHaveBeenCalledWith('test');
});
it('should not set value if values are equal', () => {
component.setFormControlValue(null)();
expect(component.fieldControl.setValue).not.toHaveBeenCalled();
});
});
describe('isValueSelected', () => {
it('should return function', () => {
const result: Function = component.isValueSelected();
expect(typeof result).toBe('function');
});
it('should return true', () => {
const result: boolean = component.isValueSelected()(null);
expect(result).toBe(true);
});
it('should return false', () => {
const result: boolean = component.isValueSelected()('whatever');
expect(result).toBe(false);
});
});
});
......
......@@ -22,6 +22,11 @@ export class ButtonToggleGroupComponent extends FormControlEditorAbstractCompone
this.buttonToggles.forEach((toggleButton: ButtonToggleComponent) => this.passPropsToChild(toggleButton));
}
passPropsToChild(toggleButton: ButtonToggleComponent): void {
toggleButton.onClick = this.setFormControlValue(toggleButton.value);
toggleButton.isSelected = this.isValueSelected();
}
setFormControlValue(value: string): () => void {
const formControl: FormControl = this.fieldControl;
return () => {
......@@ -29,11 +34,6 @@ export class ButtonToggleGroupComponent extends FormControlEditorAbstractCompone
};
}
passPropsToChild(toggleButton: ButtonToggleComponent): void {
toggleButton.onClick = this.setFormControlValue(toggleButton.value);
toggleButton.isSelected = this.isValueSelected();
}
isValueSelected(): (value: string) => boolean {
const formControl: FormControl = this.fieldControl;
return (value: string) => formControl.value === value;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment