content: package ro.isdc.wro.extensions.processor.support.dustjs;
  
  import static org.junit.Assert.assertEquals;
  
  import java.io.File;
  import java.io.FileOutputStream;
  
  import org.apache.commons.io.IOUtils;
  import org.junit.After;
  import org.junit.AfterClass;
  import org.junit.Before;
  import org.junit.BeforeClass;
  import org.junit.Test;
  
  import ro.isdc.wro.WroRuntimeException;
  import ro.isdc.wro.config.Context;
  import ro.isdc.wro.util.WroUtil;
  
  
  /**
   * @author Alex Objelean
   */
  public class TestDustJs {
    private DustJs victim;
  
    @BeforeClass
    public static void onBeforeClass() {
      assertEquals(0, Context.countActive());
    }
  
    @AfterClass
    public static void onAfterClass() {
      assertEquals(0, Context.countActive());
    }
  
    @Before
    public void setUp() {
      victim = new DustJs();
    }
  
    @Test
    public void shouldCompileNullContent() {
      assertEquals("(function(){dust.register(null,body_0);function body_0(chk,ctx){return chk;}return body_0;})();",
          victim.compile(null, null));
    }
  
    @Test
    public void shouldUseConfiguredCompiler()
        throws Exception {
      final File temp = WroUtil.createTempFile();
      IOUtils.copy(victim.getDefaultCompilerStream(), new FileOutputStream(temp));
      System.setProperty(DustJs.PARAM_COMPILER_PATH, temp.getPath());
      assertEquals("(function(){dust.register(null,body_0);function body_0(chk,ctx){return chk;}return body_0;})();",
          victim.compile(null, null));
    }
  
    @Test(expected = WroRuntimeException.class)
    public void cannotCompileUsingWrongPathCompiler()
        throws Exception {
      System.setProperty(DustJs.PARAM_COMPILER_PATH, "/invalid/path/to/dust.js");
      victim.compile(null, null);
    }
  
    @After
    public void tearDown() {
      System.setProperty(DustJs.PARAM_COMPILER_PATH, "");
    }
  }
  