package br.com.dextra.dextranet.microblog;
import static org.junit.Assert.assertEquals;
import java.util.Date;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import br.com.dextra.dextranet.persistencia.EntidadeOrdenacao;
import br.com.dextra.dextranet.usuario.Usuario;
import br.com.dextra.dextranet.usuario.UsuarioRepository;
import br.com.dextra.dextranet.utils.TimeMachine;
import br.com.dextra.teste.TesteIntegracaoBase;
import com.google.appengine.api.datastore.EntityNotFoundException;
import com.google.appengine.api.datastore.Query.SortDirection;
public class MicroBlogRepositoryTest extends TesteIntegracaoBase {
private final Usuario usuario = new Usuario("autor");
public UsuarioRepository usuarioRepository = new UsuarioRepository();
private MicroBlogRepository repository = new MicroBlogRepository();
@Before
public void criaUsuario() {
usuarioRepository.persiste(usuario);
}
@After
public void removeDados() throws EntityNotFoundException {
this.limpaMicroPostsInseridos(repository);
this.limpaUsuariosInseridos(usuarioRepository);
}
@Test
public void removerMicroPost() {
MicroPost micropost = new MicroPost("micromessage", usuario);
repository.salvar(micropost);
assertEquals(1, repository.buscarMicroPosts().size());
repository.remove(micropost.getId());
assertEquals(0, repository.buscarMicroPosts().size());
}
@Test
public void micropostar() {
MicroPost micropost = new MicroPost("micromessage", usuario);
repository.salvar(micropost);
assertEquals(1, repository.buscarMicroPosts().size());
MicroPost post = repository.buscarMicroPosts().get(0);
assertEquals("micromessage", post.getTexto());
assertEquals("autor", post.getAutor().getUsername());
}
@Test
public void testOrdemPosts() {
TimeMachine timeMachine = new TimeMachine();
Date hoje = timeMachine.inicioDoDia(new Date());
Date diasAtras3 = timeMachine.diasParaAtras(hoje, 3);
Date diasAtras10 = timeMachine.diasParaAtras(hoje, 10);
MicroPost microPost1 = new MicroPost("micromessa1", usuario, diasAtras10);
repository.salvar(microPost1);
MicroPost microPost2 = new MicroPost("micromessa2", usuario, diasAtras3);
repository.salvar(microPost2);
MicroPost microPost3 = new MicroPost("micromessa3", usuario, hoje);
repository.salvar(microPost3);
EntidadeOrdenacao ordem = new EntidadeOrdenacao(MicroBlogFields.DATA.getField(), SortDirection.DESCENDING);
List<MicroPost> buscarMicroPosts = repository.lista(ordem);
assertEquals(3, buscarMicroPosts.size());
assertEquals("micromessa3", buscarMicroPosts.get(0).getTexto());
assertEquals("micromessa2", buscarMicroPosts.get(1).getTexto());
assertEquals("micromessa1", buscarMicroPosts.get(2).getTexto());
}
}