package steps;

import junit.framework.Assert;

import org.jbehave.core.annotations.Aliases;
import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;

/**
 * @author $author
 * @version $revision
 * @create $date
 */
public class StepsLoginAplicacao extends StepsFrameWorkAutomacao {

    // 1º Teste

    @Given("eu esteja na pagina de \"login\"")
    public void abrirAplicacao() throws Exception {
	func.getAcessar().abrirAplicacao();
	func.getEsperar().elementoCarregar(ref.getDetalhe().getTela().campo("Usuário"));
    }

    @When("eu clico no botão \"$pBotao\"")
    public void clicarBotao(final String pBotao) throws Exception {
	func.getAcessar().pressionar(pBotao);
    }

    @When("eu clico \"$pTipImagem\"")
    public void clicarImagemTIP(final String pTipImagem) throws Exception {
	String localizador = ref.getBarra().getTela().imagemTIP(pTipImagem);
	func.getAcessar().pressionar(localizador);
    }

    @Given("exista um usuario bloqueado")
    public void executarPreCondicao() throws Exception {
	func.getAcessar().bancoExecutar("C:\\temp\\CtrlUsu\\Cenario01.sql");
    }

    @Given("eu esteja logado")
    public void logarUsuarioPadrao() throws Exception {
	func.getAcessar().logIn("admin", "12345");
    }

    // 2º Teste

    @Given("eu esteja na tela \"$pNomeTela\"")
    public void navegarTelaMenuPrincipal(final String pNomeTela) throws Exception {
	func.getAcessar().menuPrincipal(pNomeTela);
    }

    @When("eu ordeno decrescente a coluna \"$pRotulo\"")
    public void ordenarColunaDecrescente(final String pRotulo) throws Exception {
	String localizador = ref.getLista().getTela().rotuloColuna(pRotulo);
	func.getAcessar().ordenarDecrescente(localizador);
    }

    @When("eu preencho o campo \"$pCampo\" com o valor \"$pValor\"")
    public void preencherCampo(final String pCampo, final String pValor) throws Exception {
	String localizador = ref.getDetalhe().getTela().campo(pCampo);
	func.getAcessar().preencherCampo(localizador).comValor(pValor);
    }

    @When("eu seleciono o registro \"$pRegistro\"")
    public void selecionarRegistroLista(final String pRegistro) throws Exception {
	String localizador = ref.getLista().getTela().selecionarLinha(pRegistro);
	func.getAcessar().selecionarLinha(localizador);
    }

    @Then("eu devo receber um email com a nova senha")
    public void verificarEmail() {
	// Não implemetado
    }

    @Then("eu deveria ver a mensagem \"$pMensagem\"")
    @Aliases(values = { "eu devo ver o popup \"$pMensagem\"" })
    public void verificarMensagem(final String pMensagem) throws Exception {
	func.getEsperar().textoCarregar(pMensagem);
	boolean resultado = func.getVerificar().verdadeiro(pMensagem, "Esperado que o texto seja encontrado na tela!");
	Assert.assertTrue(resultado);
    }

    // 3º Teste

}

