@Test
  public void testResolvesTemplateFromFinder() {
    AssetsFinder finder = spy(new TestAssetsFinder());
    mustacheTemplateProcessor.setAssetsFinder(finder);

    mustacheTemplateProcessor.resolve("/test.mustache", MediaType.TEXT_HTML_TYPE);

    verify(finder).find("/test.mustache");
  }
  @Test
  public void testKeepsAssetsFinder() {
    AssetsFinder finder = new TestAssetsFinder();

    mustacheTemplateProcessor.setAssetsFinder(finder);

    AssetsFinder actualFinder = mustacheTemplateProcessor.getAssetsFinder();
    assertThat(actualFinder).isSameAs(finder);
  }
  @Test
  public void testWritesTemplate() throws IOException {
    mustacheTemplateProcessor.setAssetsFinder(new TestAssetsFinder());
    Mustache mustache =
        mustacheTemplateProcessor.resolve("/test.mustache", MediaType.TEXT_HTML_TYPE);
    Viewable viewable = mock(Viewable.class);
    when(viewable.getModel()).thenReturn(new TestModel("bar"));
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    MultivaluedMap<String, Object> httpHeaders = new MultivaluedHashMap<>();

    mustacheTemplateProcessor.writeTo(
        mustache, viewable, MediaType.TEXT_HTML_TYPE, httpHeaders, out);

    out.close();
    String result = new String(out.toByteArray(), Charsets.UTF_8);
    assertThat(result).isEqualTo("test bar");
  }
  @Test
  public void testWritesTemplateAndSetsEncodingHeader() throws IOException {
    mustacheTemplateProcessor.setAssetsFinder(new TestAssetsFinder());
    Mustache mustache =
        mustacheTemplateProcessor.resolve("/test.mustache", MediaType.TEXT_HTML_TYPE);
    Viewable viewable = mock(Viewable.class);
    when(viewable.getModel()).thenReturn(new TestModel("bar"));
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    MultivaluedMap<String, Object> httpHeaders = new MultivaluedHashMap<>();
    MediaType type = MediaType.TEXT_HTML_TYPE.withCharset("ISO-8859-1");

    mustacheTemplateProcessor.writeTo(mustache, viewable, type, httpHeaders, out);

    out.close();
    String result = new String(out.toByteArray(), Charset.forName("ISO-8859-1"));
    assertThat(result).isEqualTo("test bar");
    assertThat(httpHeaders.get(HttpHeaders.CONTENT_TYPE).get(0))
        .isEqualTo("text/html;charset=ISO-8859-1");
  }
 @Test(expected = IllegalStateException.class)
 public void testFailsResolvingWithoutResourceFinder() {
   mustacheTemplateProcessor.resolve("foo.mustache", MediaType.TEXT_HTML_TYPE);
 }
 @Test(expected = IllegalArgumentException.class)
 public void testFailsToAddNullAssetsFinder() {
   mustacheTemplateProcessor.setAssetsFinder(null);
 }