package ungp.sampleng.cucumber;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;
import org.junit.Assert;
import org.springframework.beans.factory.annotation.Autowired;
import ungp.sampleng.backend.entity.Condutor;
import ungp.sampleng.backend.entity.Infracao;
import ungp.sampleng.backend.entity.Logradouro;
import ungp.sampleng.backend.entity.Veiculo;
import ungp.sampleng.backend.resource.CondutorResource;
import ungp.sampleng.backend.resource.InfracaoResource;
import ungp.sampleng.backend.resource.LogradouroResource;
import ungp.sampleng.backend.resource.VeiculoResource;
import ungp.sampleng.cucumber.util.SpringStep;
import cucumber.api.DataTable;
import cucumber.api.java.pt.Dado;
import cucumber.api.java.pt.Entao;
import cucumber.api.java.pt.Quando;
public class InfracaoFeatureSteps extends SpringStep {
@Autowired
private InfracaoResource infracaoResource;
@Autowired
private VeiculoResource veiculoResource;
@Autowired
private CondutorResource condutorResource;
@Autowired
private LogradouroResource logradouroResource;
private Veiculo veiculo;
private Infracao infracao;
@Dado("^Um veiculo com placa \"(.*?)\" e renavam \"(.*?)\"$")
public void criarVeiculo(String placa, String renavam) throws Throwable {
veiculo = new Veiculo();
veiculo.setPlaca(placa);
veiculo.setRenavam(renavam);
}
@Dado("^um proprietario com cpf \"(.*?)\" e nome \"(.*?)\" e cnh \"(.*?)\"$")
public void criarProprietario(String cpf, String nome, String cnh) throws Throwable {
Condutor condutor = new Condutor();
condutor.setCpf(cpf);
condutor.setNome(nome);
condutor.setCnh(cnh);
condutorResource.insert(condutor);
veiculo.setProprietario(condutor);
veiculoResource.insert(veiculo);
}
@Dado("^com o logradouro com id \"(.*?)\" e descricao \"(.*?)\" e cep \"(.*?)\" e tipo de logradouro \"(.*?)\"$")
public void criarLogradouro(String id, String logradouroStr, String cep, String tipo) throws Throwable {
Logradouro logradouro = new Logradouro();
logradouro.setId(id);
logradouro.setLogradouro(logradouroStr);
logradouro.setCep(cep);
logradouro.setTp_logradouro(tipo);
logradouroResource.insert(logradouro);
}
@Dado("^com as seguintes infracoes:$")
public void criarInfracoes(List<Map<String, String>> listMap) throws Throwable {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
for (Map<String, String> map : listMap) {
Infracao infracao = new Infracao();
String cnh = map.get("proprietario");
infracao.setDtInfracao(sdf.parse(map.get("data da infracao")));
infracao.setId(map.get("id"));
infracao.setCondutor(condutorResource.findById(cnh));
infracao.setLogradouro(logradouroResource.findById(map.get("logradouro")));
infracaoResource.insert(infracao);
}
}
@Quando("^buscar infracao com id = (\\d+)$")
public void buscarInfracao(String id) throws Throwable {
infracao = infracaoResource.findById(id);
}
@Entao("^o sistema deve retornar a infracao:$")
public void verificarInfracao(DataTable dataTable) throws Throwable {
Assert.assertNotNull("infracao", infracao);
}
}