/*
* Demoiselle Framework
* Copyright (C) 2013 SERPRO
* ----------------------------------------------------------------------------
* This file is part of Demoiselle Framework.
*
* Demoiselle Framework is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License version 3
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License version 3
* along with this program; if not, see <http://www.gnu.org/licenses/>
* or write to the Free Software Foundation, Inc., 51 Franklin Street,
* Fifth Floor, Boston, MA 02110-1301, USA.
* ----------------------------------------------------------------------------
* Este arquivo é parte do Framework Demoiselle.
*
* O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
* do Software Livre (FSF).
*
* Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
* GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
* APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
* para maiores detalhes.
*
* Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
* "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
* ou escreva para a Fundação do Software Livre (FSF) Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
*/
package br.gov.frameworkdemoiselle.behave.parser.jbehave;
import junit.framework.Assert;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;
import br.gov.frameworkdemoiselle.behave.exception.BehaveException;
import br.gov.frameworkdemoiselle.behave.internal.util.DataProviderUtil;
import br.gov.frameworkdemoiselle.behave.message.BehaveMessage;
import br.gov.frameworkdemoiselle.behave.runner.ui.Element;
import br.gov.frameworkdemoiselle.behave.runner.ui.Grid;
public class TableSteps extends CommonSteps {
private static BehaveMessage message = new BehaveMessage(JBehaveParser.MESSAGEBUNDLE);
@Then("clico na linha da tabela \"$table\" referente a \"$reference\"")
@When("clico na linha da tabela \"$table\" referente a \"$reference\"")
public void clickRowTable(String table, String reference) {
Element element = runner.getElement(currentPageName, table);
if (element instanceof Grid) {
((Grid) element).clickRow(reference);
} else {
throw new BehaveException(message.getString("exception-invalid-type", element.getClass().getName()));
}
}
/**
*
* Armazena um campo de texto exibido em uma Table no dataProvider
*
* @author Tiago Tosta Peres<tiago.peres@serpro.gov.br>
* @param l
* linha da tabela
* @param c
* coluna da tabela
* @param tabela
* tabela a ser lida
* @param container
* chave no dataProvider para armazenar o texto encontrado
*/
@Then("armazeno a célula \"$l\",\"$c\" da tabela \"$tabela\" em \"$container\"")
@When("armazeno a célula \"$l\",\"$c\" da tabela \"$tabela\" em \"$container\"")
public void tableTextStore(String l, String c, String tabela, String container) {
Element element = runner.getElement(currentPageName, tabela);
dataProvider.put(container, ((Grid) element).findTextInTable(element, l, c));
}
/**
*
* Armazena um campo de texto exibido em uma Table no dataProvider Este
* método utiliza a última linha exibida da tabela, por isso não é informada
* a linha.
*
* @author Tiago Tosta Peres<tiago.peres@serpro.gov.br>
* @param c
* coluna da tabela
* @param tabela
* tabela a ser lida
* @param container
* chave no dataProvider para armazenar o texto encontrado
*/
@Then("armazeno a coluna \"$c\" da tabela \"$tabela\" em \"$container\"")
@When("armazeno a coluna \"$c\" da tabela \"$tabela\" em \"$container\"")
public void tableTextStoreLL(String c, String tabela, String container) {
Element element = runner.getElement(currentPageName, tabela);
tableTextStore(((Grid) element).findLastLine(element), c, tabela, container);
}
/**
*
* Compara um campo de texto exibido em uma Table com o texto do
* dataProvider ou, caso não seja encontrado, com o texto enviado
*
* @author Tiago Tosta Peres<tiago.peres@serpro.gov.br>
* @param l
* linha da tabela
* @param c
* coluna da tabela
* @param tabela
* tabela a ser lida
* @param container
* chave no dataProvider para ler o texto ou texto desejado
*/
@Then("comparo o texto da célula \"$l\",\"$c\" da tabela \"$tabela\" com \"$container\"")
@When("comparo o texto da célula \"$l\",\"$c\" da tabela \"$tabela\" com \"$container\"")
public void tableTextCheck(String l, String c, String tabela, String container) {
Element element = runner.getElement(currentPageName, tabela);
while (!container.equals(DataProviderUtil.replaceValue(container)))
container = DataProviderUtil.replaceValue(container);
Assert.assertEquals(container, ((Grid) element).findTextInTable(element, l, c));
}
/**
*
* Compara um campo de texto exibido em uma Table com o texto do
* dataProvider ou, caso não seja encontrado, com o texto enviado Este
* método utiliza a última linha exibida da tabela, por isso não é informada
* a linha.
*
* @author Tiago Tosta Peres<tiago.peres@serpro.gov.br>
* @param l
* linha da tabela
* @param c
* coluna da tabela
* @param tabela
* tabela a ser lida
* @param container
* chave no dataProvider para ler o texto ou texto desejado
*/
@Then("comparo o texto da coluna \"$c\" da tabela \"$tabela\" com \"$container\"")
@When("comparo o texto da coluna \"$c\" da tabela \"$tabela\" com \"$container\"")
public void tableTextCheckLL(String c, String tabela, String container) {
Element element = runner.getElement(currentPageName, tabela);
tableTextCheck(((Grid) element).findLastLine(element), c, tabela, container);
}
/**
*
* Clica em um botão (submit ou button), checkbox, radio, expansor de
* detalhes do prime ou link
*
* @author Tiago Tosta Peres<tiago.peres@serpro.gov.br>
* @param l
* linha da tabela
* @param c
* coluna da tabela
* @param tabela
* tabela a ser lida
*/
@Then("clico na célula \"$l\",\"$c\" da tabela \"$tabela\"")
@When("clico na célula \"$l\",\"$c\" da tabela \"$tabela\"")
public void tableButtonClick(String l, String c, String tabela) {
Element element = runner.getElement(currentPageName, tabela);
((Grid) element).tableButtonClick(element, l, c);
}
/**
*
* Clica em um botão (submit ou button), checkbox, radio, expansor de
* detalhes do prime ou link Este método utiliza a última linha exibida da
* tabela, por isso não é informada a linha.
*
* @author Tiago Tosta Peres<tiago.peres@serpro.gov.br>
* @param l
* linha da tabela
* @param c
* coluna da tabela
* @param tabela
* tabela a ser lida
*/
@Then("clico na coluna \"$c\" da tabela \"$tabela\"")
@When("clico na coluna \"$c\" da tabela \"$tabela\"")
public void tableButtonClickLL(String c, String tabela) {
Element element = runner.getElement(currentPageName, tabela);
tableButtonClick(((Grid) element).findLastLine(element), c, tabela);
}
/**
* Seleciona uma opção pelo texto exibido em um input select do prime em
* determinada linha e coluna da tabela
*
* @author Tiago Tosta Peres<tiago.peres@serpro.gov.br>
* @param l
* linha da tabela
* @param c
* coluna da tabela
* @param tabela
* tabela a ser lida
*/
@Then("escolho a opção \"$value\" na célula \"$l\",\"$c\" da tabela \"$tabela\"")
@When("escolho a opção \"$value\" na célula \"$l\",\"$c\" da tabela \"$tabela\"")
public void tableSelectClick(String value, String l, String c, String tabela) {
Element element = runner.getElement(currentPageName, tabela);
((Grid) element).tableSelectClick(value, l, c, element);
}
/**
*
* Seleciona uma opção pelo texto exibido em um input select do prime em
* determinada linha e coluna da tabela Este método utiliza a última linha
* exibida da tabela, por isso não é informada a linha.
*
* @author Tiago Tosta Peres<tiago.peres@serpro.gov.br>
* @param l
* linha da tabela
* @param c
* coluna da tabela
* @param tabela
* tabela a ser lida
*/
@Then("escolho a opção \"$value\" na coluna \"$c\" da tabela \"$tabela\"")
@When("escolho a opção \"$value\" na coluna \"$c\" da tabela \"$tabela\"")
public void tableSelectClickLL(String value, String c, String tabela) {
Element element = runner.getElement(currentPageName, tabela);
tableSelectClick(value, ((Grid) element).findLastLine(element), c, tabela);
}
/**
*
* Preenche o conteúdo de um input text ou textarea localizado em uma tabela
*
* @author Tiago Tosta Peres<tiago.peres@serpro.gov.br>
* @param l
* linha da tabela
* @param c
* coluna da tabela
* @param tabela
* tabela a ser lida
*/
@Then("informo o texto \"$value\" na célula \"$l\",\"$c\" da tabela \"$tabela\"")
@When("informo o texto \"$value\" na célula \"$l\",\"$c\" da tabela \"$tabela\"")
public void tableTextSendKeys(String value, String l, String c, String tabela) {
Element element = runner.getElement(currentPageName, tabela);
while (!value.equals(DataProviderUtil.replaceValue(value)))
value = DataProviderUtil.replaceValue(value);
((Grid) element).tableTextSendKeys(value, l, c, element);
}
/**
*
* Preenche o conteúdo de um input text ou textarea localizado em uma tabela
* Este método utiliza a última linha exibida da tabela, por isso não é
* informada a linha.
*
* @author Tiago Tosta Peres<tiago.peres@serpro.gov.br>
* @param l
* linha da tabela
* @param c
* coluna da tabela
* @param tabela
* tabela a ser lida
*/
@Then("informo o texto \"$value\" na coluna \"$c\" da tabela \"$tabela\"")
@When("informo o texto \"$value\" na coluna \"$c\" da tabela \"$tabela\"")
public void tableTextSendKeysLL(String value, String c, String tabela) {
Element element = runner.getElement(currentPageName, tabela);
tableTextSendKeys(value, ((Grid) element).findLastLine(element), c, tabela);
}
}