Package com.github.dynamicextensionsalfresco.webscripts

Source Code of com.github.dynamicextensionsalfresco.webscripts.ResponseTemplateTest

package com.github.dynamicextensionsalfresco.webscripts;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.extensions.webscripts.Container;
import org.springframework.extensions.webscripts.Runtime;
import org.springframework.extensions.webscripts.TemplateProcessor;
import org.springframework.extensions.webscripts.TemplateProcessorRegistry;
import org.springframework.extensions.webscripts.processor.FTLTemplateProcessor;
import org.springframework.util.ClassUtils;

import java.io.StringWriter;

import static org.mockito.Mockito.*;

/**
* Tests the handling of response templates.
*
* @author Laurens Fridael
*
*/
public class ResponseTemplateTest extends AbstractWebScriptAnnotationsTest {

  /* Dependencies */

  @Autowired
  private ResponseTemplateHandler handler;

  /* Main operations */

  @Test
  public void testHandleResponseTemplate() {
    final Runtime runtime = createRuntime();
    handleGet("/handleResponseTemplate", new MockWebScriptRequest().format("html").runtime(runtime),
        new MockWebScriptResponse().writer(new StringWriter()));
    verify(handler).handleResponseTemplate();
    final String templateName = templateNameForHandlerMethod("handleResponseTemplate");
    verify(getTemplateProcessor(runtime), atLeastOnce()).hasTemplate(templateName);
  }

  @Test
  public void testHandleResponseTemplateWithAnnotation() {
    final Runtime runtime = createRuntime();
    handleGet("/handleResponseTemplateWithAnnotation", new MockWebScriptRequest().format("html").runtime(runtime),
        new MockWebScriptResponse().writer(new StringWriter()));
    verify(handler).handleResponseTemplateWithAnnotation();
    final String templateName = templateNameForHandlerMethod("handleResponseTemplateWithAnnotation");
    verify(getTemplateProcessor(runtime), atLeastOnce()).hasTemplate(templateName);
  }

  @Test
  public void testHandleResponseTemplateWithCustomName() throws SecurityException, NoSuchMethodException {
    final Runtime runtime = createRuntime();
    handleGet("/handleResponseTemplateWithCustomName", new MockWebScriptRequest().format("html").runtime(runtime),
        new MockWebScriptResponse().writer(new StringWriter()));
    verify(getTemplateProcessor(runtime), atLeastOnce()).hasTemplate("custom-template.html");
  }

  @Test
  public void testCustomReturnedTemplate() throws SecurityException, NoSuchMethodException {
    final Runtime runtime = createRuntime();
    handleGet("/handleResponseTemplateWithReturnValue", new MockWebScriptRequest().format("html").runtime(runtime),
        new MockWebScriptResponse().writer(new StringWriter()));
    verify(getTemplateProcessor(runtime), atLeastOnce()).hasTemplate("custom-returned-template.html");
  }

  @Test
  public void testCustomReturnedTemplateOverride() throws SecurityException, NoSuchMethodException {
    final Runtime runtime = createRuntime();
    handleGet("/handleResponseTemplateWithReturnValueOverride", new MockWebScriptRequest().format("html").runtime(runtime),
        new MockWebScriptResponse().writer(new StringWriter()));
    verify(getTemplateProcessor(runtime), atLeastOnce()).hasTemplate("custom-returned-template.html");
  }

  @Test
  public void testCustomReturnedTemplateDefault() throws SecurityException, NoSuchMethodException {
    final Runtime runtime = createRuntime();
    handleGet("/handleResponseTemplateWithReturnValueDefault", new MockWebScriptRequest().format("html").runtime(runtime),
        new MockWebScriptResponse().writer(new StringWriter()));
    verify(getTemplateProcessor(runtime), atLeastOnce()).hasTemplate("default-template.html");
  }

  /* Utility operations */

  protected Runtime createRuntime() {
    final FTLTemplateProcessor ftlTemplateProcessor = mock(FTLTemplateProcessor.class);
    when(ftlTemplateProcessor.hasTemplate(anyString())).thenReturn(true);
    final TemplateProcessorRegistry templateProcessorRegistry = new TemplateProcessorRegistry();
    templateProcessorRegistry.registerTemplateProcessor(ftlTemplateProcessor, "ftl", "Freemarker");
    final Container container = mock(Container.class);
    when(container.getTemplateProcessorRegistry()).thenReturn(templateProcessorRegistry);
    final Runtime runtime = mock(Runtime.class);
    when(runtime.getContainer()).thenReturn(container);
    return runtime;
  }

  protected String templateNameForHandlerMethod(final String methodName) {
    return String.format("%s.%s.get.html.200.ftl", ClassUtils.getQualifiedName(handler.getClass())
        .replace('.', '/'), methodName);
  }

  protected TemplateProcessor getTemplateProcessor(final Runtime runtime) {
    return runtime.getContainer().getTemplateProcessorRegistry().getTemplateProcessorByExtension("ftl");
  }

}
TOP

Related Classes of com.github.dynamicextensionsalfresco.webscripts.ResponseTemplateTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.