package org.multibit.mbm.test;
import com.google.common.base.Optional;
import com.google.common.collect.Lists;
import org.joda.time.DateTime;
import org.joda.time.DateTimeUtils;
import org.joda.time.DateTimeZone;
import org.multibit.mbm.api.hal.HalMediaType;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import java.util.List;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
* A base test class for testing resources against a simulated container
*/
public abstract class BaseResourceTest {
protected HttpHeaders httpHeaders;
static {
// Fix all DateTime values to midnight on January 01 2000 UTC
DateTimeUtils.setCurrentMillisFixed(new DateTime(2000, 1, 1, 0, 0, 0, 0).withZone(DateTimeZone.UTC).getMillis());
}
/**
* @param acceptableMediaTypes An optional list of acceptable media types with default of HAL+JSON
*/
protected void setUpHttpHeaders(Optional<List<MediaType>> acceptableMediaTypes) {
if (!acceptableMediaTypes.isPresent()) {
List<MediaType> defaultAcceptableMediaTypes= Lists.newArrayList();
defaultAcceptableMediaTypes.add(HalMediaType.APPLICATION_HAL_JSON_TYPE);
acceptableMediaTypes=Optional.of(defaultAcceptableMediaTypes);
}
httpHeaders = mock(HttpHeaders.class);
when(httpHeaders.getAcceptableMediaTypes()).thenReturn(acceptableMediaTypes.get());
}
}