/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package de.knurt.fam.test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import de.knurt.fam.service.pdf.control.FileFactoryUtil; import de.knurt.fam.service.pdf.control.bu.HttpServletRequest2File; import de.knurt.fam.service.pdf.control.bu.PDFOption2File; import de.knurt.fam.service.pdf.model.PDFOption; import de.knurt.fam.service.pdf.model.TextContent; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:/config.xml" }) public class FamPdfFileTest { public FamPdfFileTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() { } @After public void tearDown() { } @Test public void outputDirectory() { File outputDirectory = FileFactoryUtil.outputDirectory(); assertTrue(outputDirectory.exists()); assertTrue(outputDirectory.canRead()); assertTrue(outputDirectory.canWrite()); assertTrue(outputDirectory.isDirectory()); } /** * filename must be [timestamp]-[serial number]-[id].pdf e.g.: * 20110530111502-3-daoltman.pdf (for the 3rd document generated on * 05/30/2011 11:15 0045ms) */ @Test public void filename() { String filename = FileFactoryUtil.filename("foo"); assertNotNull(filename); assertTrue(filename.matches(FileFactoryUtil.outputDirectory() + File.separator + "[0-9]{14}-[0-9]+-foo\\.pdf")); // is unique int filesBefore = FileFactoryUtil.outputDirectory().listFiles().length; int i = 0; while (i++ < 20) { try { assertTrue(new File(FileFactoryUtil.filename("foo")).createNewFile()); } catch (IOException e) { assertTrue(false); } } assertEquals(filesBefore + 20, FileFactoryUtil.outputDirectory().listFiles().length); } @Test public void request2file() { MockHttpServletRequest mockrq = new MockHttpServletRequest(); // // EasyMock.expect(mockrq.getAttribute("bla")).andReturn("blub"); File f = new HttpServletRequest2File().process(mockrq); assertNotNull(f); assertTrue(f.exists()); assertTrue(f.canRead()); assertTrue(f.canWrite()); } @Test public void pdfoption2file_noContent() { PDFOption options = new PDFOption(); File f = new PDFOption2File().process(options); assertNotNull(f); assertTrue(f.exists()); assertTrue(f.canRead()); assertTrue(f.canWrite()); } @Test public void pdfoption2file_withParagraph() { PDFOption options = new PDFOption(); TextContent p = new TextContent(); options.add(p); File f = new PDFOption2File().process(options); assertNotNull(f); assertTrue(f.exists()); assertTrue(f.canRead()); assertTrue(f.canWrite()); } @Test public void pdfoption2file_withStyledParagraph() { PDFOption options = new PDFOption(); TextContent p = new TextContent(); p.setText(this.getTestText()); p.putStyle("font-family", "Courier"); p.putStyle("font-size", 104); p.putStyle("text-align", "left"); p.putStyle("left", 100); p.putStyle("bottom", 800); p.putStyle("color", "#990000"); p.putStyle("font-style", "italic"); p.putStyle("font-weight", "bold"); p.putStyle("text-decoration", "line-through"); options.add(p); File f = new PDFOption2File().process(options); assertNotNull(f); assertTrue(f.exists()); assertTrue(f.canRead()); assertTrue(f.canWrite()); } /** * assert size 595.0x842.0 */ @Test public void pdfoption2file_asNeeded4MPI() { PDFOption options = new PDFOption(); options.setCustomId("example"); int left = 56; int textWidth = 375; int left2 = 440; int fontsize = 10; TextContent recipient = new TextContent(); recipient.setText("To\nLorem ipsum\nconsetetur sadipscing"); recipient.putStyle("font-family", "Helvetica"); recipient.putStyle("font-size", fontsize); recipient.putStyle("line-height", 13); recipient.putStyle("left", left); recipient.putStyle("bottom", 615); recipient.putStyle("width", 220); recipient.putStyle("height", 70); options.add(recipient); TextContent telephone = new TextContent(); telephone.setText("Tel.: 555 2 05 43 54"); telephone.putStyle("font-family", "Helvetica"); telephone.putStyle("font-size", fontsize); telephone.putStyle("line-height", 13); telephone.putStyle("left", left2); telephone.putStyle("bottom", 615); telephone.putStyle("width", 220); telephone.putStyle("height", 70); options.add(telephone); TextContent headline = new TextContent(); headline.setText("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt"); headline.putStyle("font-family", "Helvetica"); headline.putStyle("font-size", fontsize); headline.putStyle("font-weight", "bold"); headline.putStyle("font-style", "italic"); headline.putStyle("left", left); headline.putStyle("bottom", 600); headline.putStyle("width", textWidth); headline.putStyle("height", 25); options.add(headline); TextContent date = new TextContent(); date.setText("07.06.2011"); date.putStyle("font-family", "Helvetica"); date.putStyle("font-size", fontsize); date.putStyle("left", left2); date.putStyle("bottom", 600); date.putStyle("width", 90); date.putStyle("height", 25); options.add(date); TextContent billaddress = new TextContent(); billaddress.setText("Lorem ipsum dolor\nconsetetur sadipscing elitr\nnonumy eirmod"); billaddress.putStyle("font-family", "Helvetica"); billaddress.putStyle("font-size", fontsize); billaddress.putStyle("line-height", 16); billaddress.putStyle("left", left); billaddress.putStyle("bottom", 470); billaddress.putStyle("width", textWidth); billaddress.putStyle("height", 100); options.add(billaddress); TextContent maintext = new TextContent(); maintext .setText("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore:\n\n" + "et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores\n" + "et ea rebum. Stet clita kasd gubergren\n" + "et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."); maintext.putStyle("font-family", "Helvetica"); maintext.putStyle("font-size", fontsize); maintext.putStyle("line-height", 16); maintext.putStyle("left", left); maintext.putStyle("bottom", 55); maintext.putStyle("width", textWidth); maintext.putStyle("height", 425); options.add(maintext); TextContent city = new TextContent(); city.setText("Lorem, 11.11.2011"); city.putStyle("font-family", "Helvetica"); city.putStyle("font-size", fontsize); city.putStyle("left", left); city.putStyle("bottom", 170); city.putStyle("width", textWidth); city.putStyle("height", 25); options.add(city); TextContent signer = new TextContent(); signer.setText("Lorem ipsum"); signer.putStyle("font-family", "Helvetica"); signer.putStyle("font-size", fontsize); signer.putStyle("left", left); signer.putStyle("bottom", 105); signer.putStyle("width", textWidth); signer.putStyle("height", 25); options.add(signer); File f = new PDFOption2File().process(options); assertNotNull(f); } private String getTestText() { String result = ""; for (int i = 0; i < 20; i++) { result += "This is a test text for a long paragraph. "; } return result; } }