package cz.moneta.test.dsl.newib.savings;

import cz.moneta.test.dsl.newib.NewIbPageFlow;
import cz.moneta.test.harness.support.web.*;

import static cz.moneta.test.dsl.newib.savings.DpsContributionsAndDepositsPage.CONTRIBUTIONS_AND_DEPOSITS_HEADER_XPATH;
import static cz.moneta.test.dsl.newib.savings.DpsContributionsAndDepositsPage.CONTRIBUTIONS_AND_DEPOSITS_TITLE_XPATH;
import static cz.moneta.test.dsl.newib.savings.DpsContributionsAndDepositsPage.YOUR_MONTHLY_DEPOSIT_TEXT_XPATH;
import static cz.moneta.test.dsl.newib.savings.DpsContributionsAndDepositsPage.STATE_CONTRIBUTION_XPATH;
import static cz.moneta.test.dsl.newib.savings.DpsContributionsAndDepositsPage.HAS_EMPLOYER_CONTRIBUTION_XPATH;
import static cz.moneta.test.dsl.newib.savings.DpsContributionsAndDepositsPage.ALERT_DEPOSITS_XPATH;

@Wait({CONTRIBUTIONS_AND_DEPOSITS_HEADER_XPATH, CONTRIBUTIONS_AND_DEPOSITS_TITLE_XPATH, YOUR_MONTHLY_DEPOSIT_TEXT_XPATH, STATE_CONTRIBUTION_XPATH, HAS_EMPLOYER_CONTRIBUTION_XPATH, ALERT_DEPOSITS_XPATH})
public interface DpsContributionsAndDepositsPage extends NewIbPageFlow<DpsContributionsAndDepositsPage> {

    String CONTRIBUTIONS_AND_DEPOSITS_HEADER_XPATH = "//h1[@data-testid='dps-contribution-header' and text()='Doplňkové penzijní spoření']";
    String CONTRIBUTIONS_AND_DEPOSITS_TITLE_XPATH = "//h2[@class='t-title t-title--h4' and normalize-space(.)='Příspěvky a vklady'][following-sibling::node()[contains(normalize-space(.), 'Změny budou platné od prvního dne následujícího měsíce.')]]";
    String YOUR_MONTHLY_DEPOSIT_TEXT_XPATH = "//div[@data-testid='monthlyDeposit-title' and text()='Váš měsíční vklad']";
    String STATE_CONTRIBUTION_XPATH = "//div[@class='c-card__header__text'][.//span[@data-testid='TextComponent' and normalize-space(.)='Státní příspěvek'] and .//div[@data-testid='TextComponent' and contains(normalize-space(.), 'Pro minimální státní příspěvek vkládejte alespoň 500 Kč měsíčně.')] and .//div[@data-testid='TextComponent' and contains(normalize-space(.), 'Pro maximální příspěvek vkládejte 1 700 Kč nebo více.')]]";
    String HAS_EMPLOYER_CONTRIBUTION_XPATH = "//span[@class='u-fontWeightMedium' and text()='Bude mi přispívat i zaměstnavatel']";
    String ALERT_DEPOSITS_XPATH = "//div[@class='c-alert__text' and text()='Aby vám mohl být připsán odpovídající státní příspěvek, je třeba upravit výši vkladu ve smlouvě.']";
    String YOUR_MONTHLY_DEPOSIT_XPATH = "//input[@data-testid='monthlyDeposit-value']";
    String HAS_EMPLOYER_CONTRIBUTION_CHECKBOX_XPATH = "//label[@for='hasEmployerContribution']";
    String CONTINUE_BUTTON_XPATH = "//button[@data-testid='dps-contribution-btn-next' and text()='Pokračovat']";

    @TypeInto(value = YOUR_MONTHLY_DEPOSIT_XPATH, clear = true)
    DpsContributionsAndDepositsPage fillDeposit(String deposit);

    @Click(HAS_EMPLOYER_CONTRIBUTION_CHECKBOX_XPATH)
    DpsContributionsAndDepositsPage clickOnHasEmployerContributionCheckbox();

    @Click(CONTINUE_BUTTON_XPATH)
    DpsRecapitulationPage clickOnContinueButton();
}