Skip to content

Instantly share code, notes, and snippets.

@fbenevides
Created November 17, 2010 17:59
Show Gist options
  • Save fbenevides/703733 to your computer and use it in GitHub Desktop.
Save fbenevides/703733 to your computer and use it in GitHub Desktop.
package org.benevides.shop.infra;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;
import java.math.BigDecimal;
import org.benevides.shop.model.Categoria;
import org.benevides.shop.model.Produto;
import org.junit.Before;
import org.junit.Test;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyFactory;
public class ProdutoDaoTest extends DaoTest {
ProdutoDao produtoDao;
Objectify objectify;
@Before
public void setup() {
super.setup();
ObjectifyFactory factory = new ObjectifyFactory();
this.objectify = factory.begin();
factory.register(Produto.class);
factory.register(Categoria.class);
this.produtoDao = new ProdutoDao(objectify);
}
@Test
public void deveriaMostrarTodosOsProdutosQueNaoForamVendidos() {
Produto bodyboard = new Produto("Bodyboard Genesis", "Modelo Genesis Uri Valadão", new BigDecimal("250.00"));
produtoDao.adicionar(bodyboard);
Produto mochila = new Produto("Mochila Targus", "Modelo Genesis Uri Valadão", new BigDecimal("250.00"));
mochila.definirComoVendido();
produtoDao.adicionar(mochila);
assertThat(produtoDao.produtosAVenda(), hasItem(bodyboard));
assertThat(produtoDao.produtosAVenda(), not(hasItem(mochila)));
}
@Test
public void deveriaMostrarTodosOsProdutos() {
Produto bodyboard = new Produto("Bodyboard Genesis", "Modelo Genesis Uri Valadão", new BigDecimal("250.00"));
produtoDao.adicionar(bodyboard);
Produto mochila = new Produto("Mochila Targus", "Modelo Genesis Uri Valadão", new BigDecimal("250.00"));
mochila.definirComoVendido();
produtoDao.adicionar(mochila);
Produto camisa = new Produto("Camisa Aeropostale", "Tamanho M, estado muito bom!", new BigDecimal("250.00"));
produtoDao.adicionar(camisa);
assertThat(produtoDao.todos(), hasItems(bodyboard, mochila, camisa));
}
@Test
public void deveriaMostrarTodosOsProdutosDeUmaCategoria() {
Categoria esporte = new Categoria("Esporte");
Produto bodyboard = new Produto("Bodyboard Genesis", "Modelo Genesis Uri Valadão", new BigDecimal("250.00"), esporte);
produtoDao.adicionar(bodyboard);
Categoria informatica = new Categoria("Informática");
Produto mochila = new Produto("Mochila Targus", "Modelo Genesis Uri Valadão", new BigDecimal("250.00"), informatica);
mochila.definirComoVendido();
produtoDao.adicionar(mochila);
Categoria vestuario = new Categoria("Vestuário");
Produto camisa = new Produto("Camisa Aeropostale", "Tamanho M, estado muito bom!", new BigDecimal("250.00"), vestuario);
produtoDao.adicionar(camisa);
assertThat(produtoDao.daCategoria(esporte), hasItems(bodyboard));
assertThat(produtoDao.daCategoria(esporte), not(hasItems(mochila)));
assertThat(produtoDao.daCategoria(esporte), not(hasItems(camisa)));
}
@Test
public void deveriaMostrarUmProdutoComCodigo() {
Categoria esporte = new Categoria("Esporte");
Produto bodyboard = new Produto("Bodyboard Genesis", "Modelo Genesis Uri Valadão", new BigDecimal("250.00"), esporte);
produtoDao.adicionar(bodyboard);
Categoria informatica = new Categoria("Informática");
Produto mochila = new Produto("Mochila Targus", "Modelo Genesis Uri Valadão", new BigDecimal("250.00"), informatica);
mochila.definirComoVendido();
produtoDao.adicionar(mochila);
Categoria vestuario = new Categoria("Vestuário");
Produto camisa = new Produto("Camisa Aeropostale", "Tamanho M, estado muito bom!", new BigDecimal("250.00"), vestuario);
produtoDao.adicionar(camisa);
assertThat(produtoDao.obter(2L), is(bodyboard));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment