From: Henri Sara Date: Thu, 28 Jan 2010 12:10:05 +0000 (+0000) Subject: Test for #4103 and #4107 (validation error indicators for empty fields) X-Git-Tag: 6.7.0.beta1~2065 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=acfc771e70b21fc4064e67b0d2e054cd7b963d85;p=vaadin-framework.git Test for #4103 and #4107 (validation error indicators for empty fields) svn changeset:11036/svn branch:6.3 --- diff --git a/tests/src/com/vaadin/tests/validation/EmptyFieldErrorIndicators.html b/tests/src/com/vaadin/tests/validation/EmptyFieldErrorIndicators.html new file mode 100644 index 0000000000..3d5f70f994 --- /dev/null +++ b/tests/src/com/vaadin/tests/validation/EmptyFieldErrorIndicators.html @@ -0,0 +1,402 @@ + + + + + + +EmptyFieldErrorIndicators + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EmptyFieldErrorIndicators
open/run/com.vaadin.tests.validation.EmptyFieldErrorIndicators?restartApplication
waitForVaadin
screenCaptureinitial
scrollvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VDateFieldCalendar[0]/domChild[0]/domChild[1]/domChild[2]/domChild[0]/domChild[0]/domChild[4]168
pause300
clickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::PID_SvalidatedFieldPart/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]
waitForVaadin
clickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]
waitForVaadin
screenCaptureemptyValidated
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::PID_SvalidatedFieldPart/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VTextField[0]22,15
waitForVaadin
enterCharactervaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::PID_SvalidatedFieldPart/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VTextField[0]a
waitForVaadin
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::PID_SvalidatedFieldPart/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VPopupCalendar[0]/domChild[1]15,10
waitForVaadin
scroll//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[3]/td/div/select[3]312
pause300
mouseClick//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[2]/td/table/tbody/tr[3]/td[1]/span12,8
waitForVaadin
scroll//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[3]/td/div/select[4]5980
pause300
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::PID_SvalidatedFieldPart/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VDateFieldCalendar[0]/domChild[0]/domChild[1]/domChild[1]/domChild[0]/domChild[0]/domChild[1]/domChild[2]/domChild[0]/domChild[0]17,11
waitForVaadin
scrollvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::PID_SvalidatedFieldPart/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VDateFieldCalendar[0]/domChild[0]/domChild[1]/domChild[2]/domChild[0]/domChild[0]/domChild[6]6496
pause300
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::PID_SvalidatedFieldPart/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VPopupCalendar[1]/domChild[1]11,12
waitForVaadin
scroll//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[3]/td/div/select[3]364
pause300
mouseClick//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[2]/td/table/tbody/tr[3]/td[1]/span19,9
waitForVaadin
scroll//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[3]/td/div/select[4]9919
pause300
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::PID_SvalidatedFieldPart/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VFilterSelect[1]/domChild[1]11,11
waitForVaadin
mouseClick//div[@id='VAADIN_COMBOBOX_OPTIONLIST']/div/div[2]/table/tbody/tr[2]/td55,0
waitForVaadin
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::PID_SvalidatedFieldPart/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VOptionGroup[0]/domChild[0]/domChild[0]9,3
waitForVaadin
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::PID_SvalidatedFieldPart/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VOptionGroup[1]/domChild[0]/domChild[0]11,7
waitForVaadin
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VTextField[0]32,14
waitForVaadin
enterCharactervaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VTextField[0]a
waitForVaadin
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VPopupCalendar[0]/domChild[1]12,9
waitForVaadin
scroll//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[3]/td/div/select[3]520
pause300
mouseClick//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[2]/td/table/tbody/tr[3]/td[1]/span12,12
waitForVaadin
scroll//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[3]/td/div/select[4]689
pause300
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VDateFieldCalendar[0]/domChild[0]/domChild[1]/domChild[1]/domChild[0]/domChild[0]/domChild[1]/domChild[2]/domChild[0]/domChild[0]19,15
waitForVaadin
scrollvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VDateFieldCalendar[0]/domChild[0]/domChild[1]/domChild[2]/domChild[0]/domChild[0]/domChild[6]798
pause300
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VPopupCalendar[1]/domChild[1]11,15
waitForVaadin
scroll//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[3]/td/div/select[2]91
pause300
mouseClick//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[2]/td/table/tbody/tr[3]/td[1]/span22,12
waitForVaadin
scroll//table[@id='PID_VAADIN_POPUPCAL']/tbody/tr[3]/td/div/select[4]4303
pause300
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VFilterSelect[1]/domChild[1]9,13
waitForVaadin
mouseClick//div[@id='VAADIN_COMBOBOX_OPTIONLIST']/div/div[2]/table/tbody/tr[2]/td/span23,9
waitForVaadin
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VOptionGroup[0]/domChild[0]/domChild[0]5,6
waitForVaadin
mouseClickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VHorizontalLayout[0]/ChildComponentContainer[1]/VPanel[0]/VVerticalLayout[0]/ChildComponentContainer[0]/VForm[0]/VFormLayout[0]/VFormLayout$VFormLayoutTable[0]/VOptionGroup[1]/domChild[0]/domChild[0]7,7
waitForVaadin
clickvaadin=runcomvaadintestsvalidationEmptyFieldErrorIndicators::PID_SvalidatedFieldPart/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]
waitForVaadin
screenCapturefilledValidated
+ + diff --git a/tests/src/com/vaadin/tests/validation/EmptyFieldErrorIndicators.java b/tests/src/com/vaadin/tests/validation/EmptyFieldErrorIndicators.java new file mode 100644 index 0000000000..9ea28f672e --- /dev/null +++ b/tests/src/com/vaadin/tests/validation/EmptyFieldErrorIndicators.java @@ -0,0 +1,136 @@ +package com.vaadin.tests.validation; + +import com.vaadin.data.Validator.InvalidValueException; +import com.vaadin.data.validator.AbstractValidator; +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.Button; +import com.vaadin.ui.ComponentContainer; +import com.vaadin.ui.DateField; +import com.vaadin.ui.Field; +import com.vaadin.ui.Form; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.InlineDateField; +import com.vaadin.ui.NativeSelect; +import com.vaadin.ui.OptionGroup; +import com.vaadin.ui.Panel; +import com.vaadin.ui.PopupDateField; +import com.vaadin.ui.Select; +import com.vaadin.ui.TextField; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Button.ClickListener; + +public class EmptyFieldErrorIndicators extends TestBase { + + @Override + protected void setup() { + getLayout().setSizeFull(); + + HorizontalLayout hl = new HorizontalLayout(); + hl.setSizeFull(); + hl.setSpacing(true); + + ComponentContainer part1 = createPart( + "Empty required fields validation", true, false); + part1.setDebugId("emptyFieldPart"); + hl.addComponent(part1); + + ComponentContainer part2 = createPart( + "Empty required fields with failing validator", true, true); + part1.setDebugId("validatedFieldPart"); + hl.addComponent(part2); + + Panel panel = new Panel(); + panel.setSizeFull(); + panel.setStyleName(Panel.STYLE_LIGHT); + panel.addComponent(hl); + panel.setScrollable(true); + addComponent(panel); + } + + private ComponentContainer createPart(String caption, boolean required, + boolean failValidator) { + VerticalLayout part = new VerticalLayout(); + part.setMargin(true); + + final Form form = createForm(required, failValidator); + part.addComponent(form); + + Button validate = new Button("Validate fields"); + validate.addListener(new ClickListener() { + public void buttonClick(ClickEvent event) { + try { + form.validate(); + } catch (InvalidValueException e) { + } + } + }); + part.addComponent(validate); + + Panel panel = new Panel(caption, part); + panel.setHeight("100%"); + return panel; + } + + private Form createForm(final boolean required, final boolean failValidator) { + // hand-crafted form, not using form field factory + Form form = new Form() { + @Override + public void addField(Object propertyId, Field field) { + super.addField(propertyId, field); + field.setRequired(required); + field.setRequiredError("Missing required value!"); + if (failValidator) { + field + .addValidator(new AbstractValidator( + "Validation error") { + public boolean isValid(Object value) { + return false; + } + }); + } + } + }; + + form.addField("Field", new TextField("Text")); + form.addField("Date", new DateField("Date")); + form.addField("Inline Date", new InlineDateField("Date")); + form.addField("Popup Date", new PopupDateField("Date")); + + form.addField("Native Select", new NativeSelect("NativeSelect")); + + // in #4103, the Select component was behaving differently from others + form.addField("Select", new Select("Select")); + + Select select2 = new Select("Select 2"); + select2.addItem("Value 1"); + form.addField("Select 2", select2); + + OptionGroup optionGroup = new OptionGroup("OptionGroup"); + optionGroup.setMultiSelect(false); + optionGroup.addItem("Option 1"); + optionGroup.addItem("Option 2"); + form.addField("Option Group 1", optionGroup); + + OptionGroup optionGroup2 = new OptionGroup("OptionGroup"); + optionGroup2.setMultiSelect(true); + optionGroup2.addItem("Option 1"); + optionGroup2.addItem("Option 2"); + form.addField("Option Group 2", optionGroup2); + + // TODO could add more different fields + + return form; + } + + @Override + protected String getDescription() { + return "Fields on a form should not show the error indicator if required and empty"; + } + + @Override + protected Integer getTicketNumber() { + return 4013; + } + +}