package org.webpieces.router.api.mocks;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.junit.Assert;
import org.webpieces.mock.MethodEnum;
import org.webpieces.mock.MockSuperclass;
import org.webpieces.mock.ParametersPassedIn;
import org.webpieces.router.api.ResponseStreamer;
import org.webpieces.router.api.dto.RedirectResponse;
import org.webpieces.router.api.dto.RenderContentResponse;
import org.webpieces.router.api.dto.RenderResponse;
import org.webpieces.router.api.dto.RenderStaticResponse;
public class MockResponseStream extends MockSuperclass implements ResponseStreamer{
private static enum MockMethod implements MethodEnum {
SEND_REDIRECT, FAILURE, SEND_RENDER_HTML, SEND_STATIC_HTML;
}
@Override
public void sendRedirect(RedirectResponse httpResponse) {
super.calledVoidMethod(MockMethod.SEND_REDIRECT, httpResponse);
}
@Override
public void sendRenderHtml(RenderResponse resp) {
super.calledVoidMethod(MockMethod.SEND_RENDER_HTML, resp);
}
@Override
public void failureRenderingInternalServerErrorPage(Throwable e) {
super.calledVoidMethod(MockMethod.FAILURE, e);
}
public List<RedirectResponse> getSendRedirectCalledList() {
Stream<ParametersPassedIn> params = super.getCalledMethods(MockMethod.SEND_REDIRECT);
Stream<RedirectResponse> responseStr = params.map(p -> (RedirectResponse)p.getArgs()[0]);
return responseStr.collect(Collectors.toList());
}
public Exception getOnlyException() {
Stream<ParametersPassedIn> calledMethods = super.getCalledMethods(MockMethod.FAILURE);
Object[] array = calledMethods.toArray();
Assert.assertEquals(1, array.length);
ParametersPassedIn params = (ParametersPassedIn)array[0];
return (Exception) params.getArgs()[0];
}
public List<RenderResponse> getSendRenderHtmlList() {
Stream<ParametersPassedIn> params = super.getCalledMethods(MockMethod.SEND_RENDER_HTML);
Stream<RenderResponse> responseStr = params.map(p -> (RenderResponse)p.getArgs()[0]);
return responseStr.collect(Collectors.toList());
}
@SuppressWarnings("unchecked")
@Override
public CompletableFuture<Void> sendRenderStatic(RenderStaticResponse renderStatic) {
return (CompletableFuture<Void>) super.calledMethod(MockMethod.SEND_STATIC_HTML, renderStatic);
}
@Override
public void sendRenterContent(RenderContentResponse resp) {
throw new UnsupportedOperationException("not implemented yet");
}
}