package org.orienteer.birt;
import org.orienteer.birt.component.BirtHtmlReportPanel;
import org.orienteer.birt.component.resources.HtmlBirtResource;
import org.orienteer.birt.component.service.BirtReportFileConfig;
import org.orienteer.core.OrienteerWebApplication;
import org.orienteer.core.module.IOrienteerModule;
import org.orienteer.junit.OrienteerTestRunner;
import org.orienteer.junit.OrienteerTester;
import static org.junit.Assert.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
import org.apache.wicket.mock.MockWebRequest;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.resource.IResource;
import org.apache.wicket.request.resource.IResource.Attributes;
import org.apache.wicket.response.ByteArrayResponse;
import org.apache.wicket.util.io.IOUtils;
import org.eclipse.birt.report.engine.api.EngineException;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import static org.junit.Assert.*;
@RunWith(OrienteerTestRunner.class)
@Singleton
public class TestModule
{
@Inject
private OrienteerTester tester;
@Test
public void testModuleLoaded() throws EngineException, IOException
{
OrienteerWebApplication app = tester.getApplication();
assertNotNull(app);
IOrienteerModule module = app.getModuleByName(Module.MODULE_NAME);
assertNotNull(module);
assertTrue(module instanceof Module);
ClassLoader loader = getClass().getClassLoader();
URL innerResource = loader.getResource("test.rptdesign");
HtmlBirtResource resource = new HtmlBirtResource(
new BirtHtmlReportPanel("rp",
new BirtReportFileConfig(innerResource.getFile())
)
);
MockWebRequest request = new MockWebRequest(new Url());
ByteArrayResponse response = new ByteArrayResponse();
Attributes attributes = new IResource.Attributes(request, response);
resource.respond(attributes);
String newResult = new String(response.getBytes());
FileInputStream savedStream = new FileInputStream(loader.getResource("test.rptdesign.result.html").getFile());
String oldResult;
try {
oldResult = IOUtils.toString(savedStream);
} finally {
savedStream.close();
}
assertEquals(oldResult,newResult);
//ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
//OutputStream stream = response.getOutputStream();
//FileOutputStream out = new FileOutputStream("test.rptdesign.result.html");
//out.write(response.getBytes());
//out.close();
//System.out.println(new String(response.getBytes()));
//BirtHtmlReportPanel testedPanel = new BirtHtmlReportPanel("panel", null);
}
}