package org.jboss.seam.wiki.test.editing;
import org.dbunit.operation.DatabaseOperation;
import org.jboss.seam.wiki.core.upload.Uploader;
import org.jboss.seam.wiki.core.upload.editor.WikiUploadEditor;
import org.jboss.seam.wiki.core.action.UploadHome;
import org.jboss.seam.mock.DBUnitSeamTest;
import org.testng.annotations.Test;
import org.hibernate.StatelessSession;
import org.hibernate.ejb.HibernateEntityManagerFactory;
import java.util.List;
public class Uploading extends DBUnitSeamTest {
protected void prepareDBUnitOperations() {
beforeTestOperations.add(
new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
);
beforeTestOperations.add(
new DataSetOperation("org/jboss/seam/wiki/test/UploadData.dbunit.xml", DatabaseOperation.INSERT)
);
}
@Test
public void createUpload() throws Exception {
final String conversationId = new NonFacesRequest("/uploadCreate_d.xhtml") {
protected void beforeRequest() {
setParameter("parentDirectoryId", "2");
}
}.run();
new FacesRequest("/uploadCreate_d.xhtml") {
protected void beforeRequest() {
setParameter("cid", conversationId);
}
protected void invokeApplication() throws Exception {
Uploader uploader = (Uploader) getInstance(Uploader.class);
assert uploader.getParentDirectoryId().equals(2l);
byte[] uploadData = getBinaryFile("testupload2.zip");
uploader.setData(uploadData);
uploader.setContentType("application/zip");
uploader.setFilename("testupload2.zip");
assert uploader.uploadNewInstance().equals("WikiUpload");
assert uploader.getUpload().getContentType().equals("application/zip");
assert uploader.getUpload().getFilesize() == uploadData.length;
assert uploader.getUpload().getFilename().equals("testupload2.zip");
assert uploader.getUpload().getFilenameWithoutExtension().equals("testupload2");
assert uploader.getUpload().getExtension().equals("zip");
assert uploader.getUpload().getData() == uploadData;
}
}.run();
new FacesRequest("/uploadEdit_d.xhtml") {
protected void beforeRequest() {
setParameter("cid", conversationId);
setParameter("parentDirectoryId", "2");
}
protected void invokeApplication() throws Exception {
UploadHome uploadHome = (UploadHome)getInstance(UploadHome.class);
uploadHome.initEditor();
assert uploadHome.getInstance().getFilename().equals("testupload2.zip");
assert uploadHome.getUploadEditor().getClass().equals(WikiUploadEditor.class);
assert uploadHome.getUploadEditor().getIncludeName().equals("wikiUploadEditor");
assert invokeMethod("#{uploadHome.persist}").equals("persisted");
}
protected void renderResponse() throws Exception {
StatelessSession ss = getStatelessSession();
List<String> uploads =
ss.createQuery("select wu.filename from WikiUpload wu where wu.parent.id = :parent order by wu.createdOn desc ")
.setParameter("parent" , 2l).list();
assert uploads.size() == 3;
assert uploads.get(0).equals("testupload2.zip");
}
}.run();
}
private StatelessSession getStatelessSession() throws Exception {
org.jboss.ejb3.entity.InjectedEntityManagerFactory jbossEMF =
(org.jboss.ejb3.entity.InjectedEntityManagerFactory) getInitialContext().lookup("java:/entityManagerFactories/wiki");
return ((HibernateEntityManagerFactory) jbossEMF.getDelegate()).getSessionFactory().openStatelessSession();
}
}