package com.jquery.datepicker.locators;
import com.algocrafts.conditions.Equals;
import com.algocrafts.conditions.PagePredicates;
import com.algocrafts.converters.FirstMatch;
import com.algocrafts.datepicker.DayPicker;
import com.algocrafts.locators.Locators;
import com.algocrafts.pages.Page;
import static com.algocrafts.converters.ElementFunctions.CLICK;
import static com.algocrafts.converters.GetText.TEXT;
import static com.algocrafts.converters.OptionalGetter.GET;
import static com.algocrafts.locators.Locators.element;
import static com.algocrafts.locators.Locators.elements;
import static com.algocrafts.selectors.ClassName.UI_DATEPICKER_CALENDAR;
import static com.algocrafts.selectors.Id.UI_DATEPICKER_DIV;
import static com.algocrafts.selectors.TagName.TD;
public class JQueryDayPicker implements DayPicker {
private Page browser;
private PagePredicates jqueryCalendarNotDisplayed;
public JQueryDayPicker(Page browser, PagePredicates jqueryCalendarNotDisplayed) {
this.browser = browser;
this.jqueryCalendarNotDisplayed = jqueryCalendarNotDisplayed;
}
public void pick(int day) {
Locators.<Page>element(UI_DATEPICKER_DIV)
.andThen(element(UI_DATEPICKER_CALENDAR))
.andThen(elements(TD))
.andThen(new FirstMatch<>(TEXT.and(new Equals(day))))
.andThen(GET)
.andThen(CLICK).locate(browser);
browser.until(jqueryCalendarNotDisplayed);
}
}