package br.com.dextra.dextranet.conteudo.post;
import java.util.List;
import org.junit.Assert;
import org.junit.After;
import org.junit.Test;
import br.com.dextra.dextranet.conteudo.post.comentario.Comentario;
import br.com.dextra.dextranet.conteudo.post.comentario.ComentarioRepository;
import br.com.dextra.dextranet.persistencia.EntidadeOrdenacao;
import br.com.dextra.teste.TesteIntegracaoBase;
import com.google.appengine.api.datastore.EntityNotFoundException;
import com.google.appengine.api.datastore.Query.SortDirection;
public class PostRepositoryTest extends TesteIntegracaoBase {
private PostRepository repositorio = new PostRepository();
@After
public void removePostsInseridos() {
this.limpaPostsInseridos(repositorio);
}
@Test
public void testaRemocao() {
Post novoPost = new Post("usuario", "titulo", "conteudo");
Post postCriado = repositorio.persiste(novoPost);
postCriado.curtir("dextranet");
String idDoPostCriado = postCriado.getId();
repositorio.remove(idDoPostCriado);
try {
repositorio.obtemPorId(idDoPostCriado);
Assert.fail();
} catch (EntityNotFoundException e) {
Assert.assertTrue(true);
}
}
@Test
public void testaListarPaginado() {
int registrosPorPagina = 3;
int pagina1 = 1;
int pagina2 = 2;
EntidadeOrdenacao dataAtualizacaoDescentente = new EntidadeOrdenacao(PostFields.dataDeAtualizacao.name(), SortDirection.DESCENDING);
Post post01 = new Post("dextranet", "titulo 01", "conteudo 01");
repositorio.persiste(post01);
Post post02 = new Post("usuario", "titulo 02", "conteudo 02");
repositorio.persiste(post02);
Post post03 = new Post("dextranet", "titulo 03", "conteudo 03");
repositorio.persiste(post03);
Post post04 = new Post("outro-usuario", "titulo 04", "conteudo 04");
repositorio.persiste(post04);
Post post05 = new Post("usuario", "titulo 05", "conteudo 05");
repositorio.persiste(post05);
Post post06 = new Post("usuario", "titulo 06", "conteudo 06");
repositorio.persiste(post06);
List<Post> postsPagina01 = repositorio.lista(registrosPorPagina, pagina1, dataAtualizacaoDescentente);
Assert.assertEquals(3, postsPagina01.size());
Assert.assertEquals(post06, postsPagina01.get(0));
Assert.assertEquals(post05, postsPagina01.get(1));
Assert.assertEquals(post04, postsPagina01.get(2));
List<Post> postsPagina02 = repositorio.lista(registrosPorPagina, pagina2, dataAtualizacaoDescentente);
Assert.assertEquals(3, postsPagina02.size());
Assert.assertEquals(post03, postsPagina02.get(0));
Assert.assertEquals(post02, postsPagina02.get(1));
Assert.assertEquals(post01, postsPagina02.get(2));
}
@Test
public void testaRemocaoComentariosPorPost() {
Post post01 = new Post("dextranet", "titulo 01", "conteudo 01");
repositorio.persiste(post01);
Comentario c = new Comentario(post01.getId(), "username", "conteudo");
ComentarioRepository repositorioDeComentarios = new ComentarioRepository();
repositorioDeComentarios.persiste(c);
repositorio.remove(post01.getId());
Assert.assertEquals(0, repositorioDeComentarios.listaPorPost(post01.getId()).size());
}
}