All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.n2oapp.framework.autotest.api.component.DropDownTree Maven / Gradle / Ivy

The newest version!
package net.n2oapp.framework.autotest.api.component;

import com.codeborne.selenide.Condition;
import net.n2oapp.framework.autotest.Colors;

import java.time.Duration;

/**
 * Выпадающий список в виде древа для автотестирования
 */
public interface DropDownTree extends Component {

    /**
     * Возвращает элемент дерева по номеру
     * @param index номер элемента
     * @return Элемент дерева выпадющего списка
     */
    DropDownTreeItem item(int index);

    /**
     * Проверка количества элементов в выпадающем списке
     * @param size ожидаемое количество
     */
    void shouldHaveItems(int size);

    /**
     * Клик на поле поиска элементов
     */
    void clickOnSearchField();

    /**
     * Ввод значение в поле поиска элементов
     * @param value вводимое значение
     */
    void setValue(String value);

    /**
     * Проверка наличия внутреннего элемента по метке
     * @param label метка для поиска
     */
    void shouldHaveOption(String label);


    /**
     * Очистка поля поиска
     */
    void clear();

    interface DropDownTreeItem extends Expandable, Component, DropDown.DropDownItem {

        @Override
        default void shouldHaveDescription(String description, Duration... duration) {
            throw new UnsupportedOperationException();
        }

        @Override
        default void shouldHaveStatusColor(Colors color) {
            throw new UnsupportedOperationException();
        }

        @Override
        default void shouldBeEnabled() {
            element().shouldNotHave(Condition.cssClass("n2o-select-tree-tree-treenode-disabled"));
        }

        @Override
        default void shouldBeDisabled() {
            element().shouldHave(Condition.cssClass("n2o-select-tree-tree-treenode-disabled"));
        }

        void click();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy