mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
AAE-1941 - Added unit test for Number Widget (#5498)
* AAE-1938 - added first stack of visibility tests for form * AAE-1941 - added number widget unit test * fixed wrong import * AAE-1941 - fixed unit test for form rendering
This commit is contained in:
@@ -16,18 +16,26 @@
|
||||
*/
|
||||
|
||||
import { TestBed, ComponentFixture } from '@angular/core/testing';
|
||||
import { setupTestBed } from '../../testing/setup-test-bed';
|
||||
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||
import { FormRendererComponent } from './form-renderer.component';
|
||||
import { FormBaseModule } from '../form-base.module';
|
||||
import { formDisplayValueVisibility, formDisplayValueForm, formDisplayValueCombinedVisibility } from './mock/form-renderer.component.mock';
|
||||
import { formDisplayValueVisibility,
|
||||
formDisplayValueForm,
|
||||
formDisplayValueCombinedVisibility,
|
||||
formNumberWidgetVisibility,
|
||||
formNumberTextJson,
|
||||
formRequiredNumberWidget,
|
||||
colspanForm,
|
||||
numberNotRequiredForm,
|
||||
numberMinMaxForm } from './mock/form-renderer.component.mock';
|
||||
import { TranslationService } from 'core/services';
|
||||
import { TranslationMock } from 'core/mock';
|
||||
import { TranslateStore } from '@ngx-translate/core';
|
||||
import { FormService } from '../services/form.service';
|
||||
import { setupTestBed } from '../../testing/setup-test-bed';
|
||||
|
||||
function typeIntoInput(targetInput: HTMLInputElement, message: string ) {
|
||||
expect(targetInput).not.toBeNull();
|
||||
expect(targetInput).not.toBeNull('Expected input to set to be valid and not null');
|
||||
targetInput.value = message;
|
||||
targetInput.dispatchEvent(new Event('input'));
|
||||
}
|
||||
@@ -35,19 +43,30 @@ function typeIntoInput(targetInput: HTMLInputElement, message: string ) {
|
||||
function expectElementToBeHidden(targetElement: HTMLElement): void {
|
||||
expect(targetElement).not.toBeNull();
|
||||
expect(targetElement).toBeDefined();
|
||||
expect(targetElement.hidden).toBe(true);
|
||||
expect(targetElement.hidden).toBe(true, `${targetElement.id} should be hidden but it is not`);
|
||||
}
|
||||
|
||||
function expectElementToBeVisible(targetElement: HTMLElement): void {
|
||||
expect(targetElement).not.toBeNull();
|
||||
expect(targetElement).toBeDefined();
|
||||
expect(targetElement.hidden).toBe(false);
|
||||
expect(targetElement.hidden).toBe(false, `${targetElement.id} should be visibile but it is not`);
|
||||
}
|
||||
|
||||
function expectInputElementValueIs(targetElement: HTMLInputElement, value: string): void {
|
||||
expect(targetElement).not.toBeNull();
|
||||
expect(targetElement).toBeDefined();
|
||||
expect(targetElement.value).toBe(value);
|
||||
expect(targetElement.value).toBe(value, `invalid value for ${targetElement.name}`);
|
||||
}
|
||||
|
||||
function expectElementToBeInvalid(fieldId: string, fixture: ComponentFixture<FormRendererComponent>): void {
|
||||
const invalidElementContainer = fixture.nativeElement.querySelector(`#field-${fieldId}-container .adf-invalid`);
|
||||
expect(invalidElementContainer).not.toBeNull();
|
||||
expect(invalidElementContainer).toBeDefined();
|
||||
}
|
||||
|
||||
function expectElementToBeValid(fieldId: string, fixture: ComponentFixture<FormRendererComponent>): void {
|
||||
const invalidElementContainer = fixture.nativeElement.querySelector(`#field-${fieldId}-container .adf-invalid`);
|
||||
expect(invalidElementContainer).toBeNull();
|
||||
}
|
||||
|
||||
describe('Form Renderer Component', () => {
|
||||
@@ -73,122 +92,324 @@ describe('Form Renderer Component', () => {
|
||||
formService = TestBed.get(FormService);
|
||||
});
|
||||
|
||||
it('Should be able to see Display value widget when visibility condition refers to another field with specific value', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formDisplayValueVisibility.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
let displayValueElementContainer: HTMLDivElement = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
const formInputText: HTMLInputElement = fixture.nativeElement.querySelector('#Text0bq3ar');
|
||||
expectElementToBeHidden(displayValueElementContainer);
|
||||
typeIntoInput(formInputText, 'DisplayValue');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
displayValueElementContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectElementToBeVisible(displayValueElementContainer);
|
||||
const displayValueElement: HTMLInputElement = fixture.nativeElement.querySelector('#Displayvalue0g6092');
|
||||
expectInputElementValueIs(displayValueElement, 'No field selected');
|
||||
afterEach(() => {
|
||||
fixture.destroy();
|
||||
});
|
||||
|
||||
it('Should be able to see Display value widget when visibility condition refers to a form variable and a field', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formDisplayValueForm.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
let displayValueElementContainer: HTMLDivElement = fixture.nativeElement.querySelector('#field-DisplayValueOne-container');
|
||||
expectElementToBeHidden(displayValueElementContainer);
|
||||
describe('Display Value Widget', () => {
|
||||
it('[C309862] - Should be able to see Display value widget when visibility condition refers to another field with specific value', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formDisplayValueVisibility.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
const formInputText: HTMLInputElement = fixture.nativeElement.querySelector('#Text0howrc');
|
||||
typeIntoInput(formInputText, 'aaa');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
let displayValueElementContainer: HTMLDivElement = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
const formInputText: HTMLInputElement = fixture.nativeElement.querySelector('#Text0bq3ar');
|
||||
expectElementToBeHidden(displayValueElementContainer);
|
||||
typeIntoInput(formInputText, 'DisplayValue');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
displayValueElementContainer = fixture.nativeElement.querySelector('#field-DisplayValueOne-container');
|
||||
expectElementToBeVisible(displayValueElementContainer);
|
||||
const displayValueElement: HTMLInputElement = fixture.nativeElement.querySelector('#DisplayValueOne');
|
||||
expectInputElementValueIs(displayValueElement, 'No field selected');
|
||||
displayValueElementContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectElementToBeVisible(displayValueElementContainer);
|
||||
const displayValueElement: HTMLInputElement = fixture.nativeElement.querySelector('#Displayvalue0g6092');
|
||||
expectInputElementValueIs(displayValueElement, 'No field selected');
|
||||
});
|
||||
|
||||
typeIntoInput(formInputText, 'aaab');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueElementContainer = fixture.nativeElement.querySelector('#field-DisplayValueOne-container');
|
||||
expectElementToBeHidden(displayValueElementContainer);
|
||||
it('[C309863] - Should be able to see Display value widget when visibility condition refers to a form variable and a field', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formDisplayValueForm.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
let displayValueElementContainer: HTMLDivElement = fixture.nativeElement.querySelector('#field-DisplayValueOne-container');
|
||||
expectElementToBeHidden(displayValueElementContainer);
|
||||
|
||||
const formInputText: HTMLInputElement = fixture.nativeElement.querySelector('#Text0howrc');
|
||||
typeIntoInput(formInputText, 'aaa');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
displayValueElementContainer = fixture.nativeElement.querySelector('#field-DisplayValueOne-container');
|
||||
expectElementToBeVisible(displayValueElementContainer);
|
||||
const displayValueElement: HTMLInputElement = fixture.nativeElement.querySelector('#DisplayValueOne');
|
||||
expectInputElementValueIs(displayValueElement, 'No field selected');
|
||||
|
||||
typeIntoInput(formInputText, 'aaab');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueElementContainer = fixture.nativeElement.querySelector('#field-DisplayValueOne-container');
|
||||
expectElementToBeHidden(displayValueElementContainer);
|
||||
});
|
||||
|
||||
it('[C309864] - Should be able to see Display value widget when visibility condition refers to another field and form variable', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formDisplayValueForm.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
let displayValueElementContainer: HTMLDivElement = fixture.nativeElement.querySelector('#field-DisplayValueVariableField-container');
|
||||
expectElementToBeHidden(displayValueElementContainer);
|
||||
|
||||
const formInputText: HTMLInputElement = fixture.nativeElement.querySelector('#TextOne');
|
||||
typeIntoInput(formInputText, 'aaa');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
displayValueElementContainer = fixture.nativeElement.querySelector('#field-DisplayValueVariableField-container');
|
||||
expectElementToBeVisible(displayValueElementContainer);
|
||||
const displayValueElement: HTMLInputElement = fixture.nativeElement.querySelector('#DisplayValueVariableField');
|
||||
expectInputElementValueIs(displayValueElement, 'No field selected');
|
||||
|
||||
typeIntoInput(formInputText, 'aaab');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueElementContainer = fixture.nativeElement.querySelector('#field-DisplayValueVariableField-container');
|
||||
expectElementToBeHidden(displayValueElementContainer);
|
||||
});
|
||||
|
||||
it('[C309865] - Should be able to see Display value widget when has multiple visibility conditions and next condition operators', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formDisplayValueCombinedVisibility.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
const textInputElement: HTMLInputElement = fixture.nativeElement.querySelector('#Text0bq3ar');
|
||||
const textTwoInputElement: HTMLInputElement = fixture.nativeElement.querySelector('#TextTwo');
|
||||
let displayValueHiddenContainer: HTMLDivElement = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectElementToBeVisible(textInputElement);
|
||||
expectElementToBeVisible(textTwoInputElement);
|
||||
expectElementToBeHidden(displayValueHiddenContainer);
|
||||
|
||||
typeIntoInput(textInputElement, 'aaa');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueHiddenContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectInputElementValueIs(textInputElement, 'aaa');
|
||||
expectInputElementValueIs(textTwoInputElement, '');
|
||||
expectElementToBeVisible(displayValueHiddenContainer);
|
||||
|
||||
typeIntoInput(textInputElement, 'bbb');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueHiddenContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectInputElementValueIs(textInputElement, 'bbb');
|
||||
expectInputElementValueIs(textTwoInputElement, '');
|
||||
expectElementToBeHidden(displayValueHiddenContainer);
|
||||
|
||||
typeIntoInput(textTwoInputElement, 'aaa');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueHiddenContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectInputElementValueIs(textInputElement, 'bbb');
|
||||
expectInputElementValueIs(textTwoInputElement, 'aaa');
|
||||
expectElementToBeHidden(displayValueHiddenContainer);
|
||||
|
||||
typeIntoInput(textInputElement, 'aaa');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueHiddenContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectInputElementValueIs(textInputElement, 'aaa');
|
||||
expectInputElementValueIs(textTwoInputElement, 'aaa');
|
||||
expectElementToBeHidden(displayValueHiddenContainer);
|
||||
|
||||
typeIntoInput(textTwoInputElement, 'bbb');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueHiddenContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectInputElementValueIs(textInputElement, 'aaa');
|
||||
expectInputElementValueIs(textTwoInputElement, 'bbb');
|
||||
expectElementToBeVisible(displayValueHiddenContainer);
|
||||
});
|
||||
});
|
||||
|
||||
it('Should be able to see Display value widget when visibility condition refers to another field and form variable', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formDisplayValueForm.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
let displayValueElementContainer: HTMLDivElement = fixture.nativeElement.querySelector('#field-DisplayValueVariableField-container');
|
||||
expectElementToBeHidden(displayValueElementContainer);
|
||||
describe('Number widget', () => {
|
||||
|
||||
const formInputText: HTMLInputElement = fixture.nativeElement.querySelector('#TextOne');
|
||||
typeIntoInput(formInputText, 'aaa');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
it('[C315169] - Should be able to complete a task with a form with number widgets', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formNumberWidgetVisibility.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
displayValueElementContainer = fixture.nativeElement.querySelector('#field-DisplayValueVariableField-container');
|
||||
expectElementToBeVisible(displayValueElementContainer);
|
||||
const displayValueElement: HTMLInputElement = fixture.nativeElement.querySelector('#DisplayValueVariableField');
|
||||
expectInputElementValueIs(displayValueElement, 'No field selected');
|
||||
let inputNumberOne = fixture.nativeElement.querySelector('#Number1');
|
||||
let inputNumber2Container = fixture.nativeElement.querySelector('#field-Number2-container');
|
||||
expectElementToBeVisible(inputNumberOne);
|
||||
expectElementToBeHidden(inputNumber2Container);
|
||||
expect(formRendererComponent.formDefinition.isValid).toBe(true, 'Form should be valid by default');
|
||||
|
||||
typeIntoInput(inputNumberOne, '5');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
inputNumberOne = fixture.nativeElement.querySelector('#Number1');
|
||||
inputNumber2Container = fixture.nativeElement.querySelector('#field-Number2-container');
|
||||
expectElementToBeVisible(inputNumberOne);
|
||||
expectElementToBeVisible(inputNumber2Container);
|
||||
expect(formRendererComponent.formDefinition.isValid).toBe(true, 'Form should be valid with a valid value');
|
||||
|
||||
typeIntoInput(inputNumberOne, 'az');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
inputNumberOne = fixture.nativeElement.querySelector('#Number1');
|
||||
inputNumber2Container = fixture.nativeElement.querySelector('#field-Number2-container');
|
||||
expectElementToBeVisible(inputNumberOne);
|
||||
expectElementToBeHidden(inputNumber2Container);
|
||||
expect(formRendererComponent.formDefinition.isValid).toBe(false, 'Form should be invalid with an invalid value');
|
||||
});
|
||||
|
||||
it('[C309663] - Should be able to see Number widget when visibility condition refers to another field with specific value', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formNumberTextJson.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
const textInput: HTMLInputElement = fixture.nativeElement.querySelector('#Text');
|
||||
let numberFieldContainer: HTMLDivElement = fixture.nativeElement.querySelector('#field-NumberFieldValue-container');
|
||||
expectElementToBeVisible(textInput);
|
||||
expectElementToBeHidden(numberFieldContainer);
|
||||
|
||||
typeIntoInput(textInput, 'aaa');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
numberFieldContainer = fixture.nativeElement.querySelector('#field-NumberFieldValue-container');
|
||||
expectElementToBeVisible(numberFieldContainer);
|
||||
|
||||
typeIntoInput(textInput, 'bbb');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
numberFieldContainer = fixture.nativeElement.querySelector('#field-NumberFieldValue-container');
|
||||
expectElementToBeHidden(numberFieldContainer);
|
||||
});
|
||||
|
||||
it('[C315170] - Should be able to complete a task with a form with required number widgets', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formRequiredNumberWidget.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
const inputElementNumber: HTMLInputElement = fixture.nativeElement.querySelector('#Number1');
|
||||
let numberContainerElement: HTMLDivElement = fixture.nativeElement.querySelector('#field-Number2-container');
|
||||
expectElementToBeHidden(numberContainerElement);
|
||||
expectElementToBeVisible(inputElementNumber);
|
||||
|
||||
typeIntoInput(inputElementNumber, '5');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
numberContainerElement = fixture.nativeElement.querySelector('#field-Number2-container');
|
||||
expectElementToBeVisible(numberContainerElement);
|
||||
|
||||
typeIntoInput(inputElementNumber, '123');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
numberContainerElement = fixture.nativeElement.querySelector('#field-Number2-container');
|
||||
expectElementToBeHidden(numberContainerElement);
|
||||
const errorWidetText: HTMLDivElement = fixture.nativeElement.querySelector('#field-Number1-container error-widget .adf-error-text');
|
||||
expect(errorWidetText.textContent).toBe(`FORM.FIELD.VALIDATOR.NOT_GREATER_THAN`);
|
||||
expect(formRendererComponent.formDefinition.isValid).toBe(false, 'Form should not be valid without mandatory field');
|
||||
});
|
||||
|
||||
it('[C309653] - Should disable the save button when Number widget is required', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formNumberTextJson.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
const numberRequired: HTMLInputElement = fixture.nativeElement.querySelector('#NumberReq');
|
||||
const numberNotRequired: HTMLInputElement = fixture.nativeElement.querySelector('#NumberNotReq');
|
||||
expectElementToBeVisible(numberRequired);
|
||||
expectElementToBeVisible(numberNotRequired);
|
||||
expect(formRendererComponent.formDefinition.isValid).toBe(false, 'Form should be invalid with an empty required value');
|
||||
|
||||
typeIntoInput(numberNotRequired, '5');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
expect(formRendererComponent.formDefinition.isValid).toBe(false, 'Form should be invalid with an empty required value');
|
||||
|
||||
typeIntoInput(numberRequired, '5');
|
||||
typeIntoInput(numberNotRequired, '');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
expect(formRendererComponent.formDefinition.isValid).toBe(true, 'Form should be valid when required field are filled');
|
||||
});
|
||||
|
||||
it('[C309654] - Should display Number widget spans on 2 columns when colspan is set to 2', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(colspanForm.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
const formSizedElement = fixture.nativeElement.querySelector('#field-2bc275fb-e113-4d7d-885f-6e74a7332d40-container section.adf-grid-list');
|
||||
expectElementToBeVisible(formSizedElement);
|
||||
const sectionGridElement: HTMLElement[] = fixture.nativeElement.querySelectorAll('#field-2bc275fb-e113-4d7d-885f-6e74a7332d40-container section .adf-grid-list-item');
|
||||
sectionGridElement.forEach((element) => {
|
||||
expect(element.style['width']).toBe('50%', 'Elemens is wrong sized for this section');
|
||||
});
|
||||
|
||||
const fullWidthElement = fixture.nativeElement.querySelector('#field-d52ada4e-cbdc-4f0c-a480-5b85fa00e4f8-container section.adf-grid-list .adf-grid-list-item');
|
||||
expect(fullWidthElement.style['width']).toBe('100%');
|
||||
});
|
||||
|
||||
it('[C309655] - Should display validation error message when Number widget has invalid value', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(numberNotRequiredForm.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
const numberInputRequired: HTMLInputElement = fixture.nativeElement.querySelector('#Number0x8cbv');
|
||||
expectElementToBeVisible(numberInputRequired);
|
||||
expectElementToBeInvalid('Number0x8cbv', fixture);
|
||||
|
||||
typeIntoInput(numberInputRequired, '5');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
expectElementToBeValid('Number0x8cbv', fixture);
|
||||
|
||||
typeIntoInput(numberInputRequired, 'a');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
expectElementToBeInvalid('Number0x8cbv', fixture);
|
||||
let errorWidgetText: HTMLDivElement = fixture.nativeElement.querySelector('#field-Number0x8cbv-container error-widget .adf-error-text');
|
||||
expect(errorWidgetText.textContent).toBe(`FORM.FIELD.VALIDATOR.INVALID_NUMBER`);
|
||||
expect(formRendererComponent.formDefinition.isValid).toBe(false, 'Form should not be valid without mandatory field');
|
||||
|
||||
typeIntoInput(numberInputRequired, '?');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
expectElementToBeInvalid('Number0x8cbv', fixture);
|
||||
errorWidgetText = fixture.nativeElement.querySelector('#field-Number0x8cbv-container error-widget .adf-error-text');
|
||||
expect(errorWidgetText.textContent).toBe(`FORM.FIELD.VALIDATOR.INVALID_NUMBER`);
|
||||
expect(formRendererComponent.formDefinition.isValid).toBe(false, 'Form should not be valid without mandatory field');
|
||||
|
||||
typeIntoInput(numberInputRequired, '-5');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
expectElementToBeValid('Number0x8cbv', fixture);
|
||||
});
|
||||
|
||||
it('[C309660] - Should display validation error message when Number widget value is not respecting min max interval', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(numberMinMaxForm.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
const numberInputElement: HTMLInputElement = fixture.nativeElement.querySelector('#Number0him2z');
|
||||
expectElementToBeVisible(numberInputElement);
|
||||
expectElementToBeValid('Number0him2z', fixture);
|
||||
|
||||
typeIntoInput(numberInputElement, '9');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
expectElementToBeInvalid('Number0him2z', fixture);
|
||||
let errorWidgetText = fixture.nativeElement.querySelector('#field-Number0him2z-container error-widget .adf-error-text');
|
||||
expect(errorWidgetText.textContent).toBe(`FORM.FIELD.VALIDATOR.NOT_LESS_THAN`);
|
||||
expect(formRendererComponent.formDefinition.isValid).toBe(false, 'Form should not be valid without valid field');
|
||||
|
||||
typeIntoInput(numberInputElement, '10');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
expectElementToBeValid('Number0him2z', fixture);
|
||||
|
||||
typeIntoInput(numberInputElement, '60');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
expectElementToBeValid('Number0him2z', fixture);
|
||||
|
||||
typeIntoInput(numberInputElement, '61');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
expectElementToBeInvalid('Number0him2z', fixture);
|
||||
errorWidgetText = fixture.nativeElement.querySelector('#field-Number0him2z-container error-widget .adf-error-text');
|
||||
expect(errorWidgetText.textContent).toBe(`FORM.FIELD.VALIDATOR.NOT_GREATER_THAN`);
|
||||
expect(formRendererComponent.formDefinition.isValid).toBe(false, 'Form should not be valid without valid field');
|
||||
});
|
||||
|
||||
typeIntoInput(formInputText, 'aaab');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueElementContainer = fixture.nativeElement.querySelector('#field-DisplayValueVariableField-container');
|
||||
expectElementToBeHidden(displayValueElementContainer);
|
||||
});
|
||||
|
||||
it('Should be able to see Display value widget when has multiple visibility conditions and next condition operators', async () => {
|
||||
formRendererComponent.formDefinition = formService.parseForm(formDisplayValueCombinedVisibility.formRepresentation.formDefinition);
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
const textInputElement: HTMLInputElement = fixture.nativeElement.querySelector('#Text0bq3ar');
|
||||
const textTwoInputElement: HTMLInputElement = fixture.nativeElement.querySelector('#TextTwo');
|
||||
let displayValueHiddenContainer: HTMLDivElement = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectElementToBeVisible(textInputElement);
|
||||
expectElementToBeVisible(textTwoInputElement);
|
||||
expectElementToBeHidden(displayValueHiddenContainer);
|
||||
|
||||
typeIntoInput(textInputElement, 'aaa');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueHiddenContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectInputElementValueIs(textInputElement, 'aaa');
|
||||
expectInputElementValueIs(textTwoInputElement, '');
|
||||
expectElementToBeVisible(displayValueHiddenContainer);
|
||||
|
||||
typeIntoInput(textInputElement, 'bbb');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueHiddenContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectInputElementValueIs(textInputElement, 'bbb');
|
||||
expectInputElementValueIs(textTwoInputElement, '');
|
||||
expectElementToBeHidden(displayValueHiddenContainer);
|
||||
|
||||
typeIntoInput(textTwoInputElement, 'aaa');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueHiddenContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectInputElementValueIs(textInputElement, 'bbb');
|
||||
expectInputElementValueIs(textTwoInputElement, 'aaa');
|
||||
expectElementToBeHidden(displayValueHiddenContainer);
|
||||
|
||||
typeIntoInput(textInputElement, 'aaa');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueHiddenContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectInputElementValueIs(textInputElement, 'aaa');
|
||||
expectInputElementValueIs(textTwoInputElement, 'aaa');
|
||||
expectElementToBeHidden(displayValueHiddenContainer);
|
||||
|
||||
typeIntoInput(textTwoInputElement, 'bbb');
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
displayValueHiddenContainer = fixture.nativeElement.querySelector('#field-Displayvalue0g6092-container');
|
||||
expectInputElementValueIs(textInputElement, 'aaa');
|
||||
expectInputElementValueIs(textTwoInputElement, 'bbb');
|
||||
expectElementToBeVisible(displayValueHiddenContainer);
|
||||
});
|
||||
|
||||
});
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user