public void testBreakSection() throws Exception { String sampleDate = "2004-06-19"; MockMartusApp app = createAppWithBulletinsForBreaks(sampleDate); ReportFormat rf = new ReportFormat(); String breakSection = "$BreakLevel had $BreakCount\n" + "#foreach($x in [0..$BreakLevel])\n" + "$BreakFields.get($x).getLocalizedLabelHtml($localization): " + "$BreakFields.get($x).html($localization) " + "#end\n\n"; rf.setBreakSection(breakSection); RunReportOptions options = new RunReportOptions(); options.includePrivate = true; options.hideDetail = false; options.printBreaks = true; MiniLocalization localization = new MiniLocalization(); String authorLabel = localization.getFieldLabelHtml(Bulletin.TAGAUTHOR); String summaryLabel = localization.getFieldLabelHtml(Bulletin.TAGSUMMARY); ReportOutput sortByAuthorSummary = runReportOnAppData(rf, app, options); assertEquals( "1 had 2\n" + authorLabel + ": a " + summaryLabel + ": 1 \n" + "1 had 1\n" + authorLabel + ": a " + summaryLabel + ": 2 \n" + "0 had 3\n" + authorLabel + ": a \n" + "1 had 1\n" + authorLabel + ": b " + summaryLabel + ": 2 \n" + "0 had 1\n" + authorLabel + ": b \n", sortByAuthorSummary.getPageText(0)); MiniFieldSpec[] entryDateSorting = { new MiniFieldSpec(StandardFieldSpecs.findStandardFieldSpec(Bulletin.TAGENTRYDATE)), }; String entryDateLabel = localization.getFieldLabelHtml(Bulletin.TAGENTRYDATE); String formattedDate = localization.convertStoredDateToDisplay(sampleDate); ReportOutput sortedByEntryDate = runReportOnAppData(rf, app, options, entryDateSorting); assertEquals( "0 had 4\n" + entryDateLabel + ": " + formattedDate + " \n", sortedByEntryDate.getPageText(0)); options.printBreaks = false; assertEquals("Still had output?", "", runReportOnAppData(rf, app, options).getPageText(0)); }
public void testTotalsInPageReport() throws Exception { MockMartusApp app = MockMartusApp.create(); app.loadSampleData(); ReportFormat rf = new ReportFormat(); rf.setBulletinPerPage(true); rf.setTotalSection("Totals"); RunReportOptions detailOnly = new RunReportOptions(); detailOnly.hideDetail = false; detailOnly.printBreaks = false; ReportOutput details = runReportOnAppData(rf, app, detailOnly); assertEquals("", details.getPrintableDocument()); RunReportOptions detailAndSummary = new RunReportOptions(); detailAndSummary.hideDetail = false; detailAndSummary.printBreaks = true; ReportOutput both = runReportOnAppData(rf, app, detailAndSummary); assertEquals("Totals", both.getPrintableDocument()); RunReportOptions summaryOnly = new RunReportOptions(); summaryOnly.hideDetail = true; summaryOnly.printBreaks = true; ReportOutput summary = runReportOnAppData(rf, app, summaryOnly); assertEquals("Totals", summary.getPrintableDocument()); }
private void verifySummaryBreaksOnReusableDropdowns(boolean withDetail) throws Exception, IOException { ReusableChoices choices = new ReusableChoices("choicescode", "Choices Label"); String aLabel = "Fabulous A"; choices.add(new ChoiceItem("a", aLabel)); String bLabel = "Excellent B"; choices.add(new ChoiceItem("b", bLabel)); MockMartusApp app = MockMartusApp.create(); FieldSpecCollection defaultSpecs = app.getStore().getTopSectionFieldSpecs(); FieldSpecCollection specs = new FieldSpecCollection(); for (int i = 0; i < defaultSpecs.size(); ++i) specs.add(defaultSpecs.get(i)); specs.addReusableChoiceList(choices); CustomDropDownFieldSpec dropdown = new CustomDropDownFieldSpec(); dropdown.setTag("dd"); dropdown.setLabel("Dropdown"); dropdown.addReusableChoicesCode(choices.getCode()); specs.add(dropdown); app.getStore().setTopSectionFieldSpecs(specs); Bulletin b1 = app.createBulletin(); b1.set(dropdown.getTag(), "a"); app.saveBulletin(b1, app.getStore().getFolderSaved()); Bulletin b2 = app.createBulletin(); b2.set(dropdown.getTag(), "b"); app.saveBulletin(b2, app.getStore().getFolderSaved()); MiniLocalization localization = new MiniLocalization(); MiniFieldSpec[] sortSpecs = new MiniFieldSpec[] {new MiniFieldSpec(dropdown)}; localization.setCurrentLanguageCode("en"); ReportFormat report = new TabularReportBuilder(localization).createTabular(sortSpecs); ReportOutput destination = new ReportOutput(); RunReportOptions options = new RunReportOptions(); options.hideDetail = withDetail; options.printBreaks = true; options.includePrivate = true; ReportRunner runner = new ReportRunner(app.getSecurity(), new MiniLocalization()); SortableBulletinList bulletins = new SortableBulletinList(localization, sortSpecs); bulletins.add(b1); bulletins.add(b2); runner.runReport( report, app.getStore().getDatabase(), bulletins, destination, options, specs.getAllReusableChoiceLists()); destination.close(); String result = destination.getPrintableDocument(); assertContains(withDetail + " Wrote code instead of label a?", aLabel, result); assertContains(withDetail + " Wrote code instead of label b?", bLabel, result); }
public void testSummaryTotals() throws Exception { String sampleDate = "2004-06-19"; MockMartusApp app = createAppWithBulletinsForBreaks(sampleDate); RunReportOptions options = new RunReportOptions(); options.printBreaks = true; options.includePrivate = true; options.hideDetail = true; ReportFormat rf = new ReportFormat(); rf.setTotalSection( "TOTALS $totals.count()\n" + "#foreach($summary1 in $totals.children())\n" + "1. $summary1.label(): $summary1.value() = $summary1.count()\n" + "#foreach($summary2 in $summary1.children())\n" + "2. $summary2.label(): $summary2.value() = $summary2.count()\n" + "#foreach($summary3 in $summary2.children())\n" + "3. $summary3.label(): $summary3.value() = $summary3.count()\n" + "#end\n" + "#end\n" + "#end\n"); MiniLocalization localization = new MiniLocalization(); String authorLabel = localization.getFieldLabelHtml(Bulletin.TAGAUTHOR); String summaryLabel = localization.getFieldLabelHtml(Bulletin.TAGSUMMARY); ReportOutput totals = runReportOnAppData(rf, app, options); assertEquals( "TOTALS 4\n" + "1. " + authorLabel + ": a = 3\n" + "2. " + summaryLabel + ": 1 = 2\n" + "2. " + summaryLabel + ": 2 = 1\n" + "1. " + authorLabel + ": b = 1\n" + "2. " + summaryLabel + ": 2 = 1\n", totals.getPageText(0)); options.printBreaks = false; ReportOutput noTotals = runReportOnAppData(rf, app, options); assertEquals("printed total section?", "", noTotals.getPageText(0)); rf.setBreakSection("BREAK"); options.printBreaks = true; options.hideDetail = true; ReportOutput totalsOnly = runReportOnAppData(rf, app, options); assertNotContains("Still printed breaks?", "BREAK", totalsOnly.getPageText(0)); }
public void testOmitDetail() throws Exception { String sampleDate = "2004-06-19"; MockMartusApp app = createAppWithBulletinsForBreaks(sampleDate); RunReportOptions options = new RunReportOptions(); options.includePrivate = true; options.printBreaks = true; ReportFormat rf = new ReportFormat(); rf.setDocumentStartSection("Start "); rf.setDetailSection("Detail "); rf.setBreakSection("Break "); rf.setHeaderSection("Header "); rf.setFooterSection("Footer "); rf.setTotalBreakSection("TotalBreak "); rf.setTotalSection("Total "); rf.setDocumentEndSection("End "); rf.setFakePageBreakSection(". "); ReportOutput sortByAuthorSummaryWithDetail = runReportOnAppData(rf, app, options); assertEquals( "Start Header Detail Detail Break Detail Break Break Detail Break Break TotalBreak Footer . End ", sortByAuthorSummaryWithDetail.getPrintableDocument()); options.hideDetail = true; ReportOutput sortByAuthorSummaryWithoutDetail = runReportOnAppData(rf, app, options); assertEquals("Start Total . End ", sortByAuthorSummaryWithoutDetail.getPrintableDocument()); rf.setBulletinPerPage(true); options.hideDetail = false; ReportOutput pageWithDetail = runReportOnAppData(rf, app, options); assertEquals( "Start Header Detail Footer . Header Detail Footer . Header Detail Footer . Header Detail Footer . Total . End ", pageWithDetail.getPrintableDocument()); options.hideDetail = true; ReportOutput pageWithoutDetail = runReportOnAppData(rf, app, options); assertEquals("Start Total . End ", pageWithoutDetail.getPrintableDocument()); }
public void testPageReport() throws Exception { MockMartusApp app = MockMartusApp.create(); FieldSpec[] topFields = { FieldSpec.createStandardField(Bulletin.TAGAUTHOR, new FieldTypeNormal()), FieldSpec.createCustomField("tag2", "Label 2", new FieldTypeDate()), }; Bulletin b = new Bulletin( app.getSecurity(), new FieldSpecCollection(topFields), StandardFieldSpecs.getDefaultBottomSectionFieldSpecs()); b.set(topFields[0].getTag(), "First"); b.set(topFields[1].getTag(), "2005-04-07"); b.set(Bulletin.TAGPRIVATEINFO, "Secret"); app.saveBulletin(b, app.getFolderDraftOutbox()); Bulletin b2 = new Bulletin( app.getSecurity(), new FieldSpecCollection(topFields), StandardFieldSpecs.getDefaultBottomSectionFieldSpecs()); b2.set(topFields[0].getTag(), "Second"); b2.set(topFields[1].getTag(), "2003-03-29"); b2.set(Bulletin.TAGPRIVATEINFO, "Another secret"); app.saveBulletin(b2, app.getFolderDraftOutbox()); ReportFormat rf = new ReportFormat(); rf.setBulletinPerPage(true); rf.setHeaderSection("Header\n"); rf.setFooterSection("Footer\n"); rf.setFakePageBreakSection("----\n"); rf.setDetailSection( "TOP:\n" + "#foreach($field in $bulletin.getTopFields())\n" + "$field.getLocalizedLabel($localization) $field.html($localization)\n" + "#end\n" + "BOTTOM:\n" + "#foreach($field in $bulletin.getBottomFields())\n" + "$field.getLocalizedLabel($localization) $field.html($localization)\n" + "#end\n" + ""); String expected0 = "Header\n" + "TOP:\n" + "<field:author> First\n" + "Label 2 04/07/2005\n" + "BOTTOM:\n" + "<field:privateinfo> Secret\n" + "Footer\n"; String expected1 = "Header\n" + "TOP:\n" + "<field:author> Second\n" + "Label 2 03/29/2003\n" + "BOTTOM:\n" + "<field:privateinfo> Another secret\n" + "Footer\n"; RunReportOptions options = new RunReportOptions(); options.includePrivate = true; ReportOutput result = runReportOnAppData(rf, app, options); assertEquals("Wrong page report output?", expected0, result.getPageText(0)); assertEquals("Wrong page report output?", expected1, result.getPageText(1)); assertEquals("Didn't set fake page break?", "----\n", result.getFakePageBreak()); }