package com.restbucks.ordering.resources;
// eoneil note: kept in sources but commented out
// because dependence on mockito causes build problems
import static com.restbucks.ordering.domain.OrderBuilder.order;
import static org.junit.Assert.assertEquals;
//import static org.mockito.Mockito.mock;
//import static org.mockito.Mockito.when;

import java.net.URI;

import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.restbucks.ordering.domain.Identifier;
import com.restbucks.ordering.domain.Order;
import com.restbucks.ordering.repositories.OrderRepository;

public class CancelOrderTest {
    
    private static final String baseOrderUri = "http://restbucks.com/order/";
    private Identifier identifier;
    
    @Before
    public void createAnOrder() throws Exception {
        Order order = order().build();
        identifier = OrderRepository.current().store(order);
    }
    
    @After
    public void clearOutOldOrders() {
        OrderRepository.current().clear();
    }
    
    @Test
    public void shouldBeAbleToCancelAnOrderUsingDeleteOnItsUri() throws Exception {
//        UriInfo mockUriInfo = mock(UriInfo.class);
//        when(mockUriInfo.getRequestUri()).thenReturn(new URI(baseOrderUri + identifier.toString()));
//        OrderResource orderResource = new OrderResource(mockUriInfo); 
//        Response response = orderResource.removeOrder(identifier.toString());
//        
//        assertEquals(200, response.getStatus());
    }
  
    
    @Test
    public void shouldNotBeAbleToCancelAnOrderThatDoesNotExist() throws Exception {
//        UriInfo mockUriInfo = mock(UriInfo.class);
//        when(mockUriInfo.getRequestUri()).thenReturn(new URI(baseOrderUri + "987654321"));
//        OrderResource orderResource = new OrderResource(mockUriInfo); 
//        Response response = orderResource.removeOrder("987654321");
//        
//        assertEquals(404, response.getStatus());
    }
   
}
