package agilpizza.modelo;

import static junit.framework.Assert.assertEquals;

import org.junit.Test;

import agilpizza.modelo.pizza.Ingrediente;
import agilpizza.modelo.pizza.Pizza;
import agilpizza.modelo.pizza.PizzasTradicionaisDAO;

public class PizzaTest {
	private static final double PRECO_DA_MASSA = 10.0;

	@Test
	public void testeSemIngredientesCustaZero() throws Exception {
		Pizza p = new Pizza();
		assertEquals(
				"Quando não ingrediente o Preco deve ser custar o valor da massa.",
				PRECO_DA_MASSA + "", p.getPreco());
	}

	@Test
	public void testeComUmIngrediente() throws Exception {
		Pizza p = new Pizza();
		Ingrediente i = new Ingrediente("Calabreza", 1.50);
		p.adicionarIngrediente(i);
		assertEquals(
				"Quando tem só um ingrediente deve ser o valor do ingrediente + a massa.",
				i.getPreco() + PRECO_DA_MASSA + "", p.getPreco());
	}

	@Test
	public void testeCom2Ingredientes() throws Exception {
		Pizza p = new Pizza();
		Ingrediente cal = new Ingrediente("Calabreza", 1.50);
		p.adicionarIngrediente(cal);
		Ingrediente ceb = new Ingrediente("cebola", 0.50);
		p.adicionarIngrediente(ceb);
		assertEquals(
				"Quando tem 2 ingredientes deve ser a soma dos 2 ingredientes + a massa.",
				cal.getPreco() + ceb.getPreco() + PRECO_DA_MASSA + "", p
						.getPreco());
	}

	@Test
	public void testeComPizzaTradicional() throws Exception {
		Pizza p = (Pizza) new PizzasTradicionaisDAO().getNomesPizzas().get(
				"Brasileira");
		assertEquals(
				"A pizza tradicional brasileira deve custar 2.50 + a massa: ",
				2.5 + PRECO_DA_MASSA + "", p.getPreco());
	}
}
