From ebb527596ec4dad842232cf8b30cb1d48f34244d Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 24 May 2017 23:01:19 +0100 Subject: Write thead and th for headers in table --- .../tests/conversion/DocumentToHtmlTests.java | 36 ++++++++++++++++++++++ .../tests/documents/DocumentElementMakers.java | 10 ++++-- 2 files changed, 44 insertions(+), 2 deletions(-) (limited to 'src/test') diff --git a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java index 038056c..3c4af09 100644 --- a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java @@ -240,6 +240,42 @@ public class DocumentToHtmlTests { Html.element("td", list(Html.FORCE_WRITE, Html.element("p", list(Html.text("Bottom right")))))))))))); } + @Test + public void headerRowsAreWrappedInThead() { + assertThat( + convertToHtml(new Table(list( + tableRow(list(tableCell()), withIsHeader(true)), + tableRow(list(tableCell()), withIsHeader(true)), + tableRow(list(tableCell()), withIsHeader(false)) + ))), + + deepEquals(list(Html.element("table", list( + Html.element("thead", list( + Html.element("tr", list(Html.element("th", list(Html.FORCE_WRITE)))), + Html.element("tr", list(Html.element("th", list(Html.FORCE_WRITE)))) + )), + Html.element("tbody", list( + Html.element("tr", list(Html.element("td", list(Html.FORCE_WRITE)))) + )) + )))) + ); + } + + @Test + public void tbodyIsOmittedIfAllRowsAreHeaders() { + assertThat( + Html.stripEmpty(convertToHtml(new Table(list( + tableRow(list(tableCell()), withIsHeader(true)) + )))), + + deepEquals(list(Html.element("table", list( + Html.element("thead", list( + Html.element("tr", list(Html.element("th", list(Html.FORCE_WRITE)))) + )) + )))) + ); + } + @Test public void tableCellsAreWrittenWithColspanIfNotEqualToOne() { assertThat( diff --git a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java index 560eb54..a3595ae 100644 --- a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java +++ b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java @@ -21,6 +21,7 @@ public class DocumentElementMakers { private static final ArgumentKey STRIKETHROUGH = new ArgumentKey<>("strikethrough"); private static final ArgumentKey VERTICAL_ALIGNMENT = new ArgumentKey<>("verticalAlignment"); private static final ArgumentKey> CHILDREN = new ArgumentKey<>("children"); + private static final ArgumentKey IS_HEADER = new ArgumentKey<>("isHeader"); private static final ArgumentKey COLSPAN = new ArgumentKey<>("colspan"); private static final ArgumentKey ROWSPAN = new ArgumentKey<>("rowspan"); private static final ArgumentKey> COMMENTS = new ArgumentKey<>("comments"); @@ -57,6 +58,10 @@ public class DocumentElementMakers { return arg(CHILDREN, asList(children)); } + public static Argument withIsHeader(boolean isHeader) { + return arg(IS_HEADER, isHeader); + } + public static Argument withRowspan(Integer rowspan) { return arg(ROWSPAN, rowspan); } @@ -108,8 +113,9 @@ public class DocumentElementMakers { return run(withChildren(new Text(text))); } - public static TableRow tableRow(List cells) { - return new TableRow(cells, false); + public static TableRow tableRow(List cells, Object... args) { + Arguments arguments = new Arguments(args); + return new TableRow(cells, arguments.get(IS_HEADER, false)); } public static TableCell tableCell(Object... args) { -- cgit v1.2.3