package br.com.dextra.dextranet.conteudo.post; import java.util.Date; import org.junit.Assert; import org.junit.Test; import br.com.dextra.dextranet.conteudo.post.comentario.Comentario; import br.com.dextra.dextranet.conteudo.post.curtida.Curtida; import br.com.dextra.dextranet.utils.TimeMachine; import br.com.dextra.teste.TesteIntegracaoBase; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.Text; //a heranca eh para poder testar os objetos envolvendo entity public class PostTest extends TesteIntegracaoBase { private TimeMachine timeMachine = new TimeMachine(); @Test public void testaPreenche() { Post novoPost = new Post("usuario", "<script>alert('Hello!');</script><h3>titulo</h3>", "<script>alert('Hello!');</script><h1>conteudo</h1>"); Assert.assertEquals("<h3>titulo</h3>", novoPost.getTitulo()); Assert.assertEquals("<h1>conteudo</h1>", novoPost.getConteudo()); } @Test public void testaConstrutorComEntity() { Post postTemporario = new Post("usuario", "titulo", "Conteudo de teste."); postTemporario.curtir("dextranet"); Entity postEntity = postTemporario.toEntity(); Post post = new Post(postEntity); Assert.assertEquals(postEntity.getProperty(PostFields.id.name()), post.getId()); Assert.assertEquals(postEntity.getProperty(PostFields.titulo.name()), post.getTitulo()); Assert.assertEquals(((Text) postEntity.getProperty(PostFields.conteudo.name())).getValue(), post.getConteudo()); Assert.assertEquals(postEntity.getProperty(PostFields.quantidadeDeCurtidas.name()), post.getQuantidadeDeCurtidas()); Assert.assertEquals(postEntity.getProperty(PostFields.usuario.name()), post.getUsuario()); Assert.assertEquals(postEntity.getProperty(PostFields.usuariosQueCurtiram.name()), post.getUsuariosQueCurtiram()); Assert.assertEquals(postEntity.getProperty(PostFields.usuarioMD5.name()), post.getUsuarioMD5()); Assert.assertEquals(postEntity.getProperty(PostFields.dataDeCriacao.name()), post.getDataDeCriacao()); Assert.assertEquals(postEntity.getProperty(PostFields.dataDeAtualizacao.name()), post.getDataDeAtualizacao()); } @Test public void testeToEntity() { Post post = new Post("usuario", "titulo", "Conteudo de teste."); post.curtir("dextranet"); Entity postEntity = post.toEntity(); Assert.assertEquals(post.getId(), postEntity.getProperty(PostFields.id.name())); Assert.assertEquals(post.getTitulo(), postEntity.getProperty(PostFields.titulo.name())); Assert.assertEquals(post.getConteudo(), ((Text) postEntity.getProperty(PostFields.conteudo.name())).getValue()); Assert.assertEquals(post.getQuantidadeDeCurtidas(), postEntity.getProperty(PostFields.quantidadeDeCurtidas.name())); Assert.assertEquals(post.getUsuario(), postEntity.getProperty(PostFields.usuario.name())); Assert.assertEquals(post.getUsuariosQueCurtiram(), postEntity.getProperty(PostFields.usuariosQueCurtiram.name())); Assert.assertEquals(post.getUsuarioMD5(), postEntity.getProperty(PostFields.usuarioMD5.name())); Assert.assertEquals(post.getDataDeCriacao(), postEntity.getProperty(PostFields.dataDeCriacao.name())); Assert.assertEquals(post.getDataDeAtualizacao(), postEntity.getProperty(PostFields.dataDeAtualizacao.name())); } @Test public void testeCurtida() { Post post = new Post("usuario", "titulo", "Conteudo de teste"); Curtida curtida = post.curtir("dextranet"); Assert.assertEquals(1, post.getQuantidadeDeCurtidas()); Assert.assertTrue(post.usuarioJaCurtiu("dextranet")); Assert.assertTrue(post.getUsuariosQueCurtiram().contains("dextranet")); Assert.assertEquals(post.getId(), curtida.getConteudoId()); post.curtir("outro-usuario"); Assert.assertEquals(2, post.getQuantidadeDeCurtidas()); Assert.assertTrue(post.usuarioJaCurtiu("outro-usuario")); Assert.assertTrue(post.getUsuariosQueCurtiram().contains("outro-usuario")); } @Test public void testeCurtidaDuplicada() { Post post = new Post("usuario", "titulo", "Conteudo de teste"); post.curtir("dextranet"); Assert.assertEquals(1, post.getQuantidadeDeCurtidas()); post.curtir("dextranet"); Assert.assertEquals(1, post.getQuantidadeDeCurtidas()); } @Test public void testeDescurtida() { Post post = new Post("usuario", "titulo", "Conteudo de teste"); post.curtir("dextranet"); post.curtir("outro-usuario"); Assert.assertEquals(2, post.getQuantidadeDeCurtidas()); post.descurtir("dextranet"); Assert.assertEquals(1, post.getQuantidadeDeCurtidas()); Assert.assertFalse(post.getUsuariosQueCurtiram().contains("dextranet")); post.descurtir("dextranet"); Assert.assertEquals(1, post.getQuantidadeDeCurtidas()); } @Test public void testeComentario() { Post post = new Post("usuario", "titulo", "Conteudo de teste"); Comentario comentario = post.comentar("dextranet", "<script>alert('Hello!');</script>meu comentario"); Assert.assertEquals(1, post.getQuantidadeDeComentarios()); Assert.assertEquals(post.getId(), comentario.getPostId()); Assert.assertEquals("meu comentario", comentario.getConteudo()); post.comentar("outro-usuario", "mais um comentario"); Assert.assertEquals(2, post.getQuantidadeDeComentarios()); } @Test public void testaRegistraDataMigracao() { Date cincoDiasAtras = timeMachine.diasParaAtras(5); Post post = new Post("usuario", "titulo", "Conteudo de teste"); post.registraDataDeMigracao(cincoDiasAtras); String cincoDiasAtrasFormat = timeMachine.formataData(cincoDiasAtras); String dataCriacaoFormat = timeMachine.formataData(post.getDataDeCriacao()); Assert.assertEquals(cincoDiasAtrasFormat, dataCriacaoFormat); } }