package org.trimou.spring.web.view;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.trimou.Mustache;
import org.trimou.engine.MustacheEngine;
/**
* @author Minkyu Cho
*/
@RunWith(MockitoJUnitRunner.class)
public class TrimouViewTest {
@Mock
private HttpServletResponse response;
@Mock
private PrintWriter writer;
@Mock
private MustacheEngine engine;
@Mock
private Mustache template;
@Test
public void rendersAModelUsingItsTemplate() throws Exception {
//given
final Map<String, Object> model = new HashMap<>();
final String viewName = "foo.mustache";
HttpServletRequest UNUSED_REQUEST = null;
//when
when(engine.getMustache(viewName)).thenReturn(template);
when(response.getWriter()).thenReturn(writer);
TrimouView view = new TrimouView();
view.setEngine(engine);
view.setViewName(viewName);
view.renderMergedTemplateModel(model, UNUSED_REQUEST, response);
//then
verify(response).setContentType(anyString());
verify(template).render(writer, model);
verify(writer).flush();
}
}