package com.yummynoodlebar.rest.functional;
import com.yummynoodlebar.rest.controller.fixture.RestDataFixture;
import com.yummynoodlebar.rest.domain.Order;
import org.junit.Test;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
import java.util.Arrays;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertTrue;
public class OrderTests {
// {!begin first}
@Test
public void thatOrdersCanBeAddedAndQueried() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
RestTemplate template = new RestTemplate();
// {!end first}
// {!begin second}
HttpEntity<String> requestEntity = new HttpEntity<String>(
RestDataFixture.standardOrderJSON(),headers);
// {!end second}
// {!begin third}
ResponseEntity<Order> entity = template.postForEntity(
"http://localhost:8080/aggregators/orders",
requestEntity, Order.class);
// {!end third}
String path = entity.getHeaders().getLocation().getPath();
assertEquals(HttpStatus.CREATED, entity.getStatusCode());
assertTrue(path.startsWith("/aggregators/orders/"));
Order order = entity.getBody();
System.out.println ("The Order ID is " + order.getKey());
System.out.println ("The Location is " + entity.getHeaders().getLocation());
assertEquals(2, order.getItems().size());
}
}