// Path: src/main/java/com/boaglio/casadocodigo/greendogdelivery/domain/Pedido.java
// @Entity
// @JsonInclude(Include.NON_NULL)
// public class Pedido {
// 
// 	@Id
// 	@GeneratedValue(strategy = GenerationType.IDENTITY)
// 	private Long id;
// 
// 	@ManyToOne(optional = true)
// 	private Cliente cliente;
// 
// 	@ManyToMany
// 	@Cascade(CascadeType.MERGE)
// 	private List<Item> itens;
// 
// 	@DateTimeFormat(pattern = "dd-MM-yyyy")
// 	private Date data;
// 
// 	@Min(1)
// 	private Double valorTotal;
// 
// 	private String status;
// 
// 	public Pedido() {
// 	}
// 
// 	public Pedido(Long id, Cliente cliente, List<Item> itens, Double valorTotal, String status) {
// 		super();
// 		this.id = id;
// 		this.cliente = cliente;
// 		this.itens = itens;
// 		this.data = new Date();
// 		this.valorTotal = valorTotal;
// 		this.status = status;
// 	}
// 
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	public Cliente getCliente() {
// 		return cliente;
// 	}
// 
// 	public void setCliente(Cliente cliente) {
// 		this.cliente = cliente;
// 	}
// 
// 	public List<Item> getItens() {
// 		return itens;
// 	}
// 
// 	public void setItens(List<Item> itens) {
// 		this.itens = itens;
// 	}
// 
// 	public Date getData() {
// 		return data;
// 	}
// 
// 	public void setData(Date data) {
// 		this.data = data;
// 	}
// 
// 	public Double getValorTotal() {
// 		return valorTotal;
// 	}
// 
// 	public void setValorTotal(Double valorTotal) {
// 		this.valorTotal = valorTotal;
// 	}
// 
// 	public String getStatus() {
// 		return status;
// 	}
// 
// 	public void setStatus(String status) {
// 		this.status = status;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((id == null) ? 0 : id.hashCode());
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Pedido other = (Pedido) obj;
// 		if (id == null) {
// 			if (other.id != null)
// 				return false;
// 		} else if (!id.equals(other.id))
// 			return false;
// 		return true;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "Pedido [id=" + id + ", cliente=" + cliente + ", itens=" + itens + ", data=" + data + ", valorTotal="
// 				+ valorTotal + ", status=" + status + "]";
// 	}
// 
// }


import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.client.RestTemplate;
import com.boaglio.casadocodigo.greendogdelivery.domain.Pedido;
package com.boaglio.casadocodigo.greendogdelivery.api;





@RunWith(SpringRunner.class)
@SpringBootTest
public class TesteComRestTemplate {

	@Test
	public void testPedidoCompleto() throws Exception {

		RestTemplate restTemplate = new RestTemplate();
		String resourceUrl = "http://localhost:8080/";

		// GET  /api/pedido/all
		ResponseEntity<String> responsePedidoAll = restTemplate.getForEntity(resourceUrl + "/api/pedido/all", String.class);
		
		assertThat(responsePedidoAll.getStatusCode(), equalTo(HttpStatus.OK));
		assertThat(responsePedidoAll.getBody(), containsString("Green Dog tradicional picante"));

		// POST /api/pedido/
		List<Long> itensId = List.of(2l);
		NovoPedido novoPedido = new NovoPedido(2l , itensId, 30.0);
		HttpEntity<NovoPedido> requestNovoPedido = new HttpEntity<>(novoPedido);
		
// Path: src/main/java/com/boaglio/casadocodigo/greendogdelivery/domain/Pedido.java
// @Entity
// @JsonInclude(Include.NON_NULL)
// public class Pedido {
// 
// 	@Id
// 	@GeneratedValue(strategy = GenerationType.IDENTITY)
// 	private Long id;
// 
// 	@ManyToOne(optional = true)
// 	private Cliente cliente;
// 
// 	@ManyToMany
// 	@Cascade(CascadeType.MERGE)
// 	private List<Item> itens;
// 
// 	@DateTimeFormat(pattern = "dd-MM-yyyy")
// 	private Date data;
// 
// 	@Min(1)
// 	private Double valorTotal;
// 
// 	private String status;
// 
// 	public Pedido() {
// 	}
// 
// 	public Pedido(Long id, Cliente cliente, List<Item> itens, Double valorTotal, String status) {
// 		super();
// 		this.id = id;
// 		this.cliente = cliente;
// 		this.itens = itens;
// 		this.data = new Date();
// 		this.valorTotal = valorTotal;
// 		this.status = status;
// 	}
// 
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	public Cliente getCliente() {
// 		return cliente;
// 	}
// 
// 	public void setCliente(Cliente cliente) {
// 		this.cliente = cliente;
// 	}
// 
// 	public List<Item> getItens() {
// 		return itens;
// 	}
// 
// 	public void setItens(List<Item> itens) {
// 		this.itens = itens;
// 	}
// 
// 	public Date getData() {
// 		return data;
// 	}
// 
// 	public void setData(Date data) {
// 		this.data = data;
// 	}
// 
// 	public Double getValorTotal() {
// 		return valorTotal;
// 	}
// 
// 	public void setValorTotal(Double valorTotal) {
// 		this.valorTotal = valorTotal;
// 	}
// 
// 	public String getStatus() {
// 		return status;
// 	}
// 
// 	public void setStatus(String status) {
// 		this.status = status;
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((id == null) ? 0 : id.hashCode());
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Pedido other = (Pedido) obj;
// 		if (id == null) {
// 			if (other.id != null)
// 				return false;
// 		} else if (!id.equals(other.id))
// 			return false;
// 		return true;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "Pedido [id=" + id + ", cliente=" + cliente + ", itens=" + itens + ", data=" + data + ", valorTotal="
// 				+ valorTotal + ", status=" + status + "]";
// 	}
// 
// }


// Path: src/test/java/com/boaglio/casadocodigo/greendogdelivery/api/TesteComRestTemplate.java
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.client.RestTemplate;
import com.boaglio.casadocodigo.greendogdelivery.domain.Pedido;

package com.boaglio.casadocodigo.greendogdelivery.api;





@RunWith(SpringRunner.class)
@SpringBootTest
public class TesteComRestTemplate {

	@Test
	public void testPedidoCompleto() throws Exception {

		RestTemplate restTemplate = new RestTemplate();
		String resourceUrl = "http://localhost:8080/";

		// GET  /api/pedido/all
		ResponseEntity<String> responsePedidoAll = restTemplate.getForEntity(resourceUrl + "/api/pedido/all", String.class);
		
		assertThat(responsePedidoAll.getStatusCode(), equalTo(HttpStatus.OK));
		assertThat(responsePedidoAll.getBody(), containsString("Green Dog tradicional picante"));

		// POST /api/pedido/
		List<Long> itensId = List.of(2l);
		NovoPedido novoPedido = new NovoPedido(2l , itensId, 30.0);
		HttpEntity<NovoPedido> requestNovoPedido = new HttpEntity<>(novoPedido);
		
		Pedido responseNovoPedido = restTemplate.postForObject(resourceUrl + "/api/pedido/", requestNovoPedido, Pedido.class);