package agilpizza.modelo;

import static junit.framework.Assert.assertSame;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import agilpizza.modelo.pizza.Endereco;
import agilpizza.modelo.pizza.Pedido;
import agilpizza.modelo.pizza.PedidoDAO;
import agilpizza.modelo.pizza.Pizza;

public class PedidoDAOTest {
	private static PedidoDAO dao;
	private static Endereco endereco;
	private static Endereco enderecoSemTelefone;
	private static List<Pizza> pizzasVazia = null;
	private static List<Pizza> pizzas;

	@BeforeClass
	public static void setUp() {
		endereco = new Endereco("Rua X", "123", "bloco 2", "Butanta",
				"12345-678", "8765-4321");
		enderecoSemTelefone = new Endereco("Rua X", "123", "bloco 2",
				"Butanta", "12345-678", null);
		/**
		 * ok, precisamos das pizzas mas nao dos ingredientes, so precisamos do
		 * nome
		 */
		pizzas = new ArrayList<Pizza>();
		Pizza pizza1 = new Pizza();
		pizza1.setNome("Mussarela");
		pizza1.setIngredientes(null);
		pizzas.add(pizza1);
		dao = PedidoDAO.getInstanciaUnica();
	}

	@AfterClass
	public static void tearDown() {
	}

	@Test
	public void testeInstanciaUnica() {
		PedidoDAO dao2 = PedidoDAO.getInstanciaUnica();
		assertSame("Devem ser o mesmo objeto.", dao, dao2);
	}

	@Test
	public void testeAdicionouPedido() {
		Pedido p1 = new Pedido(pizzas, endereco);
		dao.addPedido(p1);
		List todosOsPedidos = PedidoDAO.getInstanciaUnica().getTodosOsPedidos();
		Iterator it = todosOsPedidos.iterator();
		while (it.hasNext()) {
			Pedido p = (Pedido) it.next();
			assertSame("Devem ser o mesmo objeto.", p, p1);
		}
	}
}
