package br.com.dextra.dextranet.web.conteudo.busca;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import br.com.dextra.dextranet.TesteFuncionalBase;
import br.com.dextra.dextranet.conteudo.post.Post;
import br.com.dextra.dextranet.conteudo.post.PostRepository;
import br.com.dextra.dextranet.conteudo.post.comentario.Comentario;
import br.com.dextra.dextranet.conteudo.post.comentario.ComentarioRepository;
import br.com.dextra.dextranet.web.conteudo.post.PaginaPost;
import br.com.dextra.dextranet.web.conteudo.post.comentario.PaginaComentario;
public class BuscaGeralWebTest extends TesteFuncionalBase {
private static final String CONTEUDO_COMENTARIO = "Texto do comentário.";
private static final String CONTEUDO_POST = "Conteúdo do post";
private static final String TITULO_POST = "Título do post";
private static final int QTD_POSTS = 3;
private PaginaPost paginaNovoPost;
private PaginaComentario paginaNovoComentario;
private PaginaBuscaGeral buscaGeralPost;
private PostRepository repositorioDePosts = new PostRepository();
private ComentarioRepository repositorioDeComentarios = new ComentarioRepository();
public BuscaGeralWebTest() {
buscaGeralPost = new PaginaBuscaGeral(driver);
paginaNovoPost = new PaginaPost(driver);
paginaNovoComentario = new PaginaComentario(driver);
}
@Before
public void carregaDados() {
this.criaPostsComComentarios();
}
@After
public void removeDados() {
this.limpaPostsInseridos(repositorioDePosts);
this.limpaComentariosInseridos(repositorioDeComentarios);
}
@Test
public void testaBuscaGeral() {
dadoQueUsuarioAcessaPaginaPrincipal();
quandoEleBuscaPeloTituloDeUmPostExistente();
entaoEleEncontraPostDesejado();
quandoEleBuscaPeloComentarioDeUmPost();
entaoEleEncontraPostComComentarioDesejado();
}
private void quandoEleBuscaPeloComentarioDeUmPost() {
buscaGeralPost.redigeConteudoDaBusca(CONTEUDO_COMENTARIO);
buscaGeralPost.clicaNoBotaoPesquisa();
}
private void entaoEleEncontraPostDesejado() {
String conteudo = CONTEUDO_POST + " 0";
String titulo = TITULO_POST + " 0";
Assert.assertTrue(paginaNovoPost.existePostPor(titulo, conteudo));
}
private void entaoEleEncontraPostComComentarioDesejado() {
paginaNovoComentario.clicaEmMostrarComentarioPrimeiroPost();
Assert.assertTrue(paginaNovoComentario
.existeComentarioPor(CONTEUDO_COMENTARIO));
}
private void quandoEleBuscaPeloTituloDeUmPostExistente() {
buscaGeralPost.redigeConteudoDaBusca("titulo:" + TITULO_POST + " 0");
buscaGeralPost.clicaNoBotaoPesquisa();
}
private void criaPostsComComentarios() {
for (int cont = 0; cont <= QTD_POSTS; cont++) {
String tituloPost = TITULO_POST + " " + cont;
String conteudo = CONTEUDO_POST + " " + cont;
Post novoPost = new Post("usuario", tituloPost, conteudo);
repositorioDePosts.persiste(novoPost);
this.criaComentarioParaPost(novoPost);
}
}
private void criaComentarioParaPost(Post novoPost) {
Comentario novoComentario = novoPost.comentar("dextranet",
CONTEUDO_COMENTARIO);
repositorioDeComentarios.persiste(novoComentario);
}
private void dadoQueUsuarioAcessaPaginaPrincipal() {
paginaPrincipal.acessaPaginaPrincipal();
}
}