package com.constellio.app.ui.tools; import java.util.List; import org.openqa.selenium.By; import com.constellio.app.ui.framework.components.RecordForm; import com.constellio.app.ui.tools.components.basic.DateFieldWebElement; import com.constellio.app.ui.tools.components.basic.TextFieldWebElement; import com.constellio.app.ui.tools.components.listAddRemove.ListAddRemoveDateFieldWebElement; import com.constellio.app.ui.tools.components.listAddRemove.ListAddRemoveDateTimeFieldWebElement; import com.constellio.app.ui.tools.components.listAddRemove.ListAddRemoveDropDownWebElement; import com.constellio.app.ui.tools.components.listAddRemove.ListAddRemoveLookupWebElement; import com.constellio.app.ui.tools.components.listAddRemove.ListAddRemoveRichTextFieldWebElement; import com.constellio.app.ui.tools.components.listAddRemove.ListAddRemoveTextFieldWebElement; import com.constellio.app.ui.tools.vaadin.TextFieldWebFacade; import com.constellio.sdk.tests.selenium.adapters.constellio.ConstellioWebElement; import com.constellio.sdk.tests.selenium.conditions.ConditionTimeoutRuntimeException; public class RecordFormWebElement { ConstellioWebElement nestedElement; public RecordFormWebElement(ConstellioWebElement nestedElement) { this.nestedElement = nestedElement; } @Deprecated public RecordFormWebElement setValue(String metadataCode, Object value) { TextFieldWebFacade textFieldWebFacade = new TextFieldWebFacade(nestedElement.findElement(By.id(metadataCode))); textFieldWebFacade.setValue(value.toString()); return this; } public RecordFormWebElement setValue(String value) { setValue(value); return this; } @SuppressWarnings("unchecked") @Deprecated public <T> T getValue(String metadataCode) { TextFieldWebFacade textFieldWebFacade = new TextFieldWebFacade(nestedElement.findElement(By.id(metadataCode))); return (T) textFieldWebFacade.getValue(); } public void clickSaveButtonAndWaitForPageReload() { ConstellioWebElement button = nestedElement.findElement(By.className(RecordForm.SAVE_BUTTON)); button.clickAndWaitForPageReload(); } public void clickCancelButtonAndWaitForPageReload() { ConstellioWebElement button = nestedElement.findElement(By.className(RecordForm.CANCEL_BUTTON)); button.clickAndWaitForPageReload(); } public ListAddRemoveTextFieldWebElement getListAddRemoveTextField(String metadataCode) { return new ListAddRemoveTextFieldWebElement(getField(metadataCode)); } public ListAddRemoveRichTextFieldWebElement getListAddRemoveRichTextField(String metadataCode) { return new ListAddRemoveRichTextFieldWebElement(getField(metadataCode)); } public ListAddRemoveLookupWebElement getListAddRemoveLookupWebElement(String metadataCode) { return new ListAddRemoveLookupWebElement(getField(metadataCode)); } public ListAddRemoveDropDownWebElement getListAddRemoveDropDownWebElement(String metadataCode) { return new ListAddRemoveDropDownWebElement(getField(metadataCode)); } public ListAddRemoveDateFieldWebElement getListAddRemoveDateFieldWebElement(String metadataCode) { return new ListAddRemoveDateFieldWebElement(getField(metadataCode)); } public ListAddRemoveDateTimeFieldWebElement getListAddRemoveDateTimeFieldWebElement(String metadataCode) { return new ListAddRemoveDateTimeFieldWebElement(getField(metadataCode)); } public AutocompleteWebElement getDropDown(String metadataCode) { return new DropDownWebElement(getField(metadataCode)); } public LookupWebElement getLookupField(String metadataCode) { return new LookupWebElement(getField(metadataCode)); } public OptionGroupWebElement getRadioButton(String metadataCode) { return new OptionGroupWebElement(getField(metadataCode)); } public RichTextFieldWebElement getRichTextField(String metadataCode) { return new RichTextFieldWebElement(getField(metadataCode)); } public TextFieldWebElement getTextField(String metadataCode) { return new TextFieldWebElement(getField(metadataCode)); } public DateFieldWebElement getDateField(String metadataCode) { return new DateFieldWebElement(getField(metadataCode)); } public DateFieldWebElement getDatetimeField(String metadataCode) { return new DateFieldWebElement(getField(metadataCode), "yyyy-MM-dd hh:mm:ss"); } public RecordFormWebElement toggleAllCheckbox() { List<ConstellioWebElement> listCheckbox = nestedElement.findAdaptElements(By.className("v-checkbox")); for (ConstellioWebElement checkboxNumber : listCheckbox) { CheckboxWebElement checkboxElement = new CheckboxWebElement(checkboxNumber); checkboxElement.toggle(); } return this; } public RecordFormWebElement toggleFirstCheckbox(String metadataCode) { new CheckboxWebElement(getField(metadataCode)).toggle(); return this; } public RecordFormWebElement removeCheckbox() { List<ConstellioWebElement> listCheckbox = nestedElement.findAdaptElements(By.className("v-checkbox")); for (ConstellioWebElement checkboxNumber : listCheckbox) { CheckboxWebElement checkboxElement = new CheckboxWebElement(checkboxNumber); if (checkboxElement.isChecked()) { checkboxElement.toggle(); } } return this; } public ConstellioWebElement getField(String metadataCode) { try { nestedElement.waitUntilElementExist(By.id(metadataCode)); ConstellioWebElement field = nestedElement.findElement(By.id(metadataCode)); field.scrollIntoView(); return field; } catch (ConditionTimeoutRuntimeException e) { throw new RuntimeException("Could not locate field '" + metadataCode + "'", e); } } public boolean isVisible(String metadataCode) { try { nestedElement.findElement(By.id(metadataCode)).getText(); return true; } catch (Exception e) { return false; } } }