package fr.mch.mdo.restaurant.controller;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import junit.framework.Assert;
import org.junit.Test;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.ClientHttpResponse;
import fr.mch.mdo.restaurant.dto.beans.AcknowledgmentMessage;
import fr.mch.mdo.restaurant.dto.beans.DinnerTableDtoBean;
import fr.mch.mdo.restaurant.dto.beans.ProductDtoBean;
import fr.mch.mdo.restaurant.dto.beans.TableHeader;
import fr.mch.mdo.restaurant.web.AbstractControllerTest;
public final class OrdersControllerTest extends AbstractControllerTest
{
public static final String context = SERVER_URL + "/orders";
@Test
public void tables() {
String type = "type";
Long restaurantId = 1L;
StringBuilder sb = new StringBuilder(context).append("/{restaurantId}/tables/{type}");
ResponseEntity<DinnerTableDtoBean[]> response = restTemplate.getForEntity(sb.toString(), DinnerTableDtoBean[].class, restaurantId, type);
Assert.assertNotNull(response.getBody());
}
@Test
public void deleteTable() {
Long tableId = 1L;
StringBuilder sb = new StringBuilder(context).append("/delete/table/{id}");
// Do not use delete method because the service returns nothing
ResponseEntity<AcknowledgmentMessage> response = restTemplate.exchange(sb.toString(), HttpMethod.DELETE, null, AcknowledgmentMessage.class, tableId);
Assert.assertNotNull(response.getBody());
}
@Test
public void deleteOrderLine() {
Long orderLineId = 1L;
StringBuilder sb = new StringBuilder(context).append("/delete/order/line/{id}");
// Do not use delete method because the service returns nothing
ResponseEntity<AcknowledgmentMessage> response = restTemplate.exchange(sb.toString(), HttpMethod.DELETE, null, AcknowledgmentMessage.class, orderLineId);
Assert.assertNotNull(response.getBody());
}
@Test
public void tableHeader() {
String tableNumber = "2";
StringBuilder sb = new StringBuilder(context).append("/table/header/by/number/{number}");
ResponseEntity<TableHeader> response = restTemplate.getForEntity(sb.toString(), TableHeader.class, tableNumber);
Assert.assertNotNull(response.getBody());
}
@Test
public void createTable() {
StringBuilder sb = new StringBuilder(context).append("/create/table");
ResponseEntity<DinnerTableDtoBean> response = restTemplate.postForEntity(sb.toString(), new TableHeader(), DinnerTableDtoBean.class);
Assert.assertNotNull(response.getBody());
}
@Test
public void findTable() {
String tableNumber = "2";
StringBuilder sb = new StringBuilder(context).append("/find/table/by/number/{number}");
ResponseEntity<DinnerTableDtoBean> response = restTemplate.getForEntity(sb.toString(), DinnerTableDtoBean.class, tableNumber);
Assert.assertNotNull(response.getBody());
}
@Test
public void findProduct() {
Long restaurantId = 1L;
String code = "11";
StringBuilder sb = new StringBuilder(context).append("/{restaurantId}/find/product/{code}");
ResponseEntity<ProductDtoBean> response = restTemplate.getForEntity(sb.toString(), ProductDtoBean.class, restaurantId, code);
Assert.assertNotNull(response.getBody());
}
@Test
public void tablesView() {
String type = "type";
StringBuilder sb = new StringBuilder(context).append("/tables/{type}/view");
ResponseEntity<String> response = restTemplate.exchange(sb.toString(), HttpMethod.GET, null, String.class, type);
Assert.assertNull(response.getBody());
Assert.assertEquals("OK", response.getStatusCode().name());
try {
ClientHttpResponse chr = super.get("/orders/tables/type/view");
BufferedReader br = new BufferedReader(new InputStreamReader(chr.getBody()));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
Assert.assertNotNull(chr);
} catch (Exception e) {
e.printStackTrace();
}
}
}