diff --git a/src/main/java/j2html/tags/ContainerTag.java b/src/main/java/j2html/tags/ContainerTag.java index 87b2d70..6c62526 100644 --- a/src/main/java/j2html/tags/ContainerTag.java +++ b/src/main/java/j2html/tags/ContainerTag.java @@ -28,6 +28,14 @@ public class ContainerTag extends Tag { return this; } + /** + * Call with-method based on condition + * {@link #with(Tag child)} + */ + public ContainerTag condWith(boolean condition, Tag child) { + return condition ? this.with(child) : this; + } + /** * Appends a list of tags to the end of this element * @param children tags to be appended @@ -40,6 +48,14 @@ public class ContainerTag extends Tag { return this; } + /** + * Call with-method based on condition + * {@link #with(List children)} + */ + public ContainerTag condWith(boolean condition, List children) { + return condition ? this.with(children) : this; + } + /** * Appends the tags to the end of this element * @param children tags to be appended @@ -52,6 +68,14 @@ public class ContainerTag extends Tag { return this; } + /** + * Call with-method based on condition + * {@link #with(Tag... children)} + */ + public ContainerTag condWith(boolean condition, Tag... children) { + return condition ? this.with(children) : this; + } + /** * Appends a text tag to this element * @param text the text to be appended @@ -73,11 +97,8 @@ public class ContainerTag extends Tag { } /** - * Sets a custom attribute based on a condition - * @param condition the condition that decides if attribute should be set - * @param attribute the attribute name - * @param value the attribute value - * @return itself for easy chaining + * Call attr-method based on condition + * {@link #attr(String attribute, String value)} */ public ContainerTag condAttr(boolean condition, String attribute, String value) { return condition ? attr(attribute, value) : this; diff --git a/src/test/java/j2html/attributes/AttributeTest.java b/src/test/java/j2html/attributes/AttributeTest.java index 131b568..3330d82 100644 --- a/src/test/java/j2html/attributes/AttributeTest.java +++ b/src/test/java/j2html/attributes/AttributeTest.java @@ -1,22 +1,22 @@ package j2html.attributes; -import org.junit.Test; import j2html.tags.ContainerTag; +import org.junit.Test; -import static junit.framework.Assert.assertTrue; +import static junit.framework.Assert.assertEquals; public class AttributeTest { @Test public void testRender() throws Exception { Attribute attributeWithValue = new Attribute("href", "http://example.com"); - assertTrue(attributeWithValue.render().equals(" href=\"http://example.com\"")); + assertEquals(attributeWithValue.render(), " href=\"http://example.com\""); Attribute attribute = new Attribute("required", null); - assertTrue(attribute.render().equals(" required")); + assertEquals(attribute.render(), " required"); Attribute nullAttribute = new Attribute(null, null); - assertTrue(nullAttribute.render().equals("")); + assertEquals(nullAttribute.render(), ""); } @Test @@ -24,7 +24,7 @@ public class AttributeTest { ContainerTag testTag = new ContainerTag("a"); testTag.setAttribute("href", "http://example.com"); testTag.setAttribute("href", "http://example.org"); - assertTrue(testTag.render().equals("")); + assertEquals(testTag.render(), ""); } } \ No newline at end of file diff --git a/src/test/java/j2html/tags/ComplexRenderTest.java b/src/test/java/j2html/tags/ComplexRenderTest.java index 4b25043..a5e06db 100644 --- a/src/test/java/j2html/tags/ComplexRenderTest.java +++ b/src/test/java/j2html/tags/ComplexRenderTest.java @@ -2,37 +2,43 @@ package j2html.tags; import org.junit.Test; -import static junit.framework.TestCase.assertTrue; import static j2html.TagCreator.*; +import static junit.framework.Assert.assertEquals; public class ComplexRenderTest { + private String renderTest() { - return document().render()+ + boolean USER_SHOULD_LOG_IN = true; + boolean USER_SHOULD_SIGN_UP = false; + return document().render() + html().with( - head().with( - title().withText("Test") - ), - body().with( - header().with( - h1("Test Header") + head().with( + title().withText("Test") ), - main().with( - h2("Test Form"), - div().with( - input().withType("email").withName("email").withPlaceholder("Email"), - input().withType("password").withName("password").withPlaceholder("Password"), - button().withType("submit").withText("Login") - ) - ), - footer().withText("Test Footer"), - script().withSrc("/testScript.js") - ) - ).render(); + body().with( + header().with( + h1("Test Header") + ), + main().with( + h2("Test Form"), + div().with( + input().withType("email").withName("email").withPlaceholder("Email"), + input().withType("password").withName("password").withPlaceholder("Password") + ).condWith(USER_SHOULD_LOG_IN, + button().withType("submit").withText("Login") + ).condWith(USER_SHOULD_SIGN_UP, + button().withType("submit").withText("Signup") + ) + ), + footer().withText("Test Footer"), + script().withSrc("/testScript.js") + ) + ).render(); } @Test public void testComplexRender() { String expectedResult = "Test

Test Header

Test Form

"; - assertTrue(renderTest().equals(expectedResult)); + assertEquals(renderTest(), expectedResult); } } diff --git a/src/test/java/j2html/tags/ConvenienceMethodTest.java b/src/test/java/j2html/tags/ConvenienceMethodTest.java index a144734..08b69b1 100644 --- a/src/test/java/j2html/tags/ConvenienceMethodTest.java +++ b/src/test/java/j2html/tags/ConvenienceMethodTest.java @@ -2,32 +2,32 @@ package j2html.tags; import org.junit.Test; -import static junit.framework.Assert.assertTrue; +import static junit.framework.Assert.assertEquals; import static j2html.TagCreator.*; public class ConvenienceMethodTest { @Test public void testAllConvenienceMethods() throws Exception { - assertTrue(input().isAutoComplete().render().equals("")); - assertTrue(input().isAutoFocus().render().equals("")); - assertTrue(input().isHidden().render().equals("")); - assertTrue(input().isRequired().render().equals("")); - assertTrue(img().withAlt("An image").render().equals("\"An")); - assertTrue(form().withAction("post").render().equals("
")); - assertTrue(meta().withCharset("UTF-8").render().equals("")); - assertTrue(div().withClass("test-class").render().equals("
")); - assertTrue(meta().withContent("Test Content").render().equals("")); - assertTrue(a().withHref("http://example.com").render().equals("")); - assertTrue(div().withId("test-id").render().equals("
")); - assertTrue(div().withData("testdata", "test").render().equals("
")); - assertTrue(form().withMethod("get").render().equals("
")); - assertTrue(input().withName("test-name").render().equals("")); - assertTrue(input().withPlaceholder("test-placeholder").render().equals("")); - assertTrue(a().withTarget("_blank").render().equals("")); - assertTrue(input().withType("email").render().equals("")); - assertTrue(link().withRel("stylesheet").render().equals("")); - assertTrue(img().withSrc("/img/test.png").render().equals("")); - assertTrue(input().withValue("test-value").render().equals("")); + assertEquals(input().isAutoComplete().render(), ""); + assertEquals(input().isAutoFocus().render(), ""); + assertEquals(input().isHidden().render(), ""); + assertEquals(input().isRequired().render(), ""); + assertEquals(img().withAlt("An image").render(), "\"An"); + assertEquals(form().withAction("post").render(), "
"); + assertEquals(meta().withCharset("UTF-8").render(), ""); + assertEquals(div().withClass("test-class").render(), "
"); + assertEquals(meta().withContent("Test Content").render(), ""); + assertEquals(a().withHref("http://example.com").render(), ""); + assertEquals(div().withId("test-id").render(), "
"); + assertEquals(div().withData("testdata", "test").render(), "
"); + assertEquals(form().withMethod("get").render(), "
"); + assertEquals(input().withName("test-name").render(), ""); + assertEquals(input().withPlaceholder("test-placeholder").render(), ""); + assertEquals(a().withTarget("_blank").render(), ""); + assertEquals(input().withType("email").render(), ""); + assertEquals(link().withRel("stylesheet").render(), ""); + assertEquals(img().withSrc("/img/test.png").render(), ""); + assertEquals(input().withValue("test-value").render(), ""); } } diff --git a/src/test/java/j2html/tags/TagCreatorTest.java b/src/test/java/j2html/tags/TagCreatorTest.java index 6902c45..fcb5fe1 100644 --- a/src/test/java/j2html/tags/TagCreatorTest.java +++ b/src/test/java/j2html/tags/TagCreatorTest.java @@ -2,7 +2,7 @@ package j2html.tags; import org.junit.Test; -import static junit.framework.Assert.assertTrue; +import static junit.framework.Assert.assertEquals; import static j2html.TagCreator.*; public class TagCreatorTest { @@ -11,163 +11,163 @@ public class TagCreatorTest { public void testAllTags() throws Exception { //Special Tags - assertTrue(tag("tagname").render().equals("")); - assertTrue(emptyTag("tagname").render().equals("")); - assertTrue(text("text").render().equals("text")); - assertTrue(text("")); - assertTrue(section().render().equals("
")); - assertTrue(select().render().equals("")); - assertTrue(small().render().equals("")); - assertTrue(small("Text").render().equals("Text")); - assertTrue(span().render().equals("")); - assertTrue(span("Text").render().equals("Text")); - assertTrue(strong().render().equals("")); - assertTrue(strong("Text").render().equals("Text")); - assertTrue(style().render().equals("")); - assertTrue(sub().render().equals("")); - assertTrue(sub("Text").render().equals("Text")); - assertTrue(summary().render().equals("")); - assertTrue(summary("Text").render().equals("Text")); - assertTrue(sup().render().equals("")); - assertTrue(sup("Text").render().equals("Text")); - assertTrue(table().render().equals("
")); - assertTrue(tbody().render().equals("")); - assertTrue(td().render().equals("")); - assertTrue(td("Text").render().equals("Text")); - assertTrue(textarea().render().equals("")); - assertTrue(tfoot().render().equals("")); - assertTrue(th().render().equals("")); - assertTrue(th("Text").render().equals("Text")); - assertTrue(thead().render().equals("")); - assertTrue(time().render().equals("")); - assertTrue(title().render().equals("")); - assertTrue(tr().render().equals("")); - assertTrue(u().render().equals("")); - assertTrue(u("Text").render().equals("Text")); - assertTrue(ul().render().equals("")); - assertTrue(var().render().equals("")); - assertTrue(video().render().equals("")); + assertEquals(a().render(), ""); + assertEquals(a("Text").render(), "Text"); + assertEquals(abbr().render(), ""); + assertEquals(address().render(), "
"); + assertEquals(article().render(), "
"); + assertEquals(aside().render(), ""); + assertEquals(audio().render(), ""); + assertEquals(b().render(), ""); + assertEquals(b("Text").render(), "Text"); + assertEquals(bdi().render(), ""); + assertEquals(bdi("Text").render(), "Text"); + assertEquals(bdo().render(), ""); + assertEquals(bdo("Text").render(), "Text"); + assertEquals(blockquote().render(), "
"); + assertEquals(blockquote("Text").render(), "
Text
"); + assertEquals(body().render(), ""); + assertEquals(button().render(), ""); + assertEquals(button("Text").render(), ""); + assertEquals(canvas().render(), ""); + assertEquals(caption().render(), ""); + assertEquals(caption("Text").render(), "Text"); + assertEquals(cite().render(), ""); + assertEquals(cite("Text").render(), "Text"); + assertEquals(code().render(), ""); + assertEquals(colgroup().render(), ""); + assertEquals(datalist().render(), ""); + assertEquals(dd().render(), "
"); + assertEquals(dd("Text").render(), "
Text
"); + assertEquals(del().render(), ""); + assertEquals(del("Text").render(), "Text"); + assertEquals(details().render(), "
"); + assertEquals(dfn().render(), ""); + assertEquals(dfn("Text").render(), "Text"); + assertEquals(dialog().render(), ""); + assertEquals(dialog("Text").render(), "Text"); + assertEquals(div().render(), "
"); + assertEquals(dl().render(), "
"); + assertEquals(dt().render(), "
"); + assertEquals(dt("Text").render(), "
Text
"); + assertEquals(em().render(), ""); + assertEquals(em("Text").render(), "Text"); + assertEquals(fieldset().render(), "
"); + assertEquals(figcaption().render(), "
"); + assertEquals(figcaption("Text").render(), "
Text
"); + assertEquals(figure().render(), "
"); + assertEquals(footer().render(), "
"); + assertEquals(form().render(), "
"); + assertEquals(h1().render(), "

"); + assertEquals(h1("Text").render(), "

Text

"); + assertEquals(h2().render(), "

"); + assertEquals(h2("Text").render(), "

Text

"); + assertEquals(h3().render(), "

"); + assertEquals(h3("Text").render(), "

Text

"); + assertEquals(h4().render(), "

"); + assertEquals(h4("Text").render(), "

Text

"); + assertEquals(h5().render(), "
"); + assertEquals(h5("Text").render(), "
Text
"); + assertEquals(h6().render(), "
"); + assertEquals(h6("Text").render(), "
Text
"); + assertEquals(head().render(), ""); + assertEquals(header().render(), "
"); + assertEquals(html().render(), ""); + assertEquals(i().render(), ""); + assertEquals(i("Text").render(), "Text"); + assertEquals(iframe().render(), ""); + assertEquals(ins().render(), ""); + assertEquals(ins("Text").render(), "Text"); + assertEquals(kbd().render(), ""); + assertEquals(label().render(), ""); + assertEquals(label("Text").render(), ""); + assertEquals(legend().render(), ""); + assertEquals(legend("Text").render(), "Text"); + assertEquals(li().render(), "
  • "); + assertEquals(li("Text").render(), "
  • Text
  • "); + assertEquals(main().render(), "
    "); + assertEquals(map().render(), ""); + assertEquals(mark().render(), ""); + assertEquals(menu().render(), ""); + assertEquals(menuitem().render(), ""); + assertEquals(meter().render(), ""); + assertEquals(nav().render(), ""); + assertEquals(noscript().render(), ""); + assertEquals(object().render(), ""); + assertEquals(ol().render(), "
      "); + assertEquals(optgroup().render(), ""); + assertEquals(option().render(), ""); + assertEquals(option("Text").render(), ""); + assertEquals(output().render(), ""); + assertEquals(p().render(), "

      "); + assertEquals(p("Text").render(), "

      Text

      "); + assertEquals(pre().render(), "
      ");
      +        assertEquals(progress().render(), "");
      +        assertEquals(q().render(), "");
      +        assertEquals(q("Text").render(), "Text");
      +        assertEquals(rp().render(), "");
      +        assertEquals(rt().render(), "");
      +        assertEquals(ruby().render(), "");
      +        assertEquals(s().render(), "");
      +        assertEquals(samp().render(), "");
      +        assertEquals(script().render(), "");
      +        assertEquals(section().render(), "
      "); + assertEquals(select().render(), ""); + assertEquals(small().render(), ""); + assertEquals(small("Text").render(), "Text"); + assertEquals(span().render(), ""); + assertEquals(span("Text").render(), "Text"); + assertEquals(strong().render(), ""); + assertEquals(strong("Text").render(), "Text"); + assertEquals(style().render(), ""); + assertEquals(sub().render(), ""); + assertEquals(sub("Text").render(), "Text"); + assertEquals(summary().render(), ""); + assertEquals(summary("Text").render(), "Text"); + assertEquals(sup().render(), ""); + assertEquals(sup("Text").render(), "Text"); + assertEquals(table().render(), "
      "); + assertEquals(tbody().render(), ""); + assertEquals(td().render(), ""); + assertEquals(td("Text").render(), "Text"); + assertEquals(textarea().render(), ""); + assertEquals(tfoot().render(), ""); + assertEquals(th().render(), ""); + assertEquals(th("Text").render(), "Text"); + assertEquals(thead().render(), ""); + assertEquals(time().render(), ""); + assertEquals(title().render(), ""); + assertEquals(tr().render(), ""); + assertEquals(u().render(), ""); + assertEquals(u("Text").render(), "Text"); + assertEquals(ul().render(), ""); + assertEquals(var().render(), ""); + assertEquals(video().render(), ""); } } \ No newline at end of file diff --git a/src/test/java/j2html/tags/TagTest.java b/src/test/java/j2html/tags/TagTest.java index daeb5cf..0686047 100644 --- a/src/test/java/j2html/tags/TagTest.java +++ b/src/test/java/j2html/tags/TagTest.java @@ -2,8 +2,8 @@ package j2html.tags; import org.junit.Test; -import static org.junit.Assert.assertTrue; import static j2html.TagCreator.*; +import static org.junit.Assert.assertEquals; public class TagTest { @@ -11,28 +11,28 @@ public class TagTest { public void testRender() throws Exception { ContainerTag testTag = new ContainerTag("a"); testTag.setAttribute("href", "http://example.com"); - assertTrue(testTag.render().equals("")); + assertEquals(testTag.render(), ""); - ContainerTag complexTestTag = html().with(body().with(header(), main().with(p().withText("Main stuff...")), footer())); - String expectedResult ="

      Main stuff...

      "; - assertTrue(complexTestTag.render().equals(expectedResult)); + ContainerTag complexTestTag = html().with(body().with(header(),main().with(p("Main stuff...")),footer().condWith(1 == 1,p("Conditional with!")))); + String expectedResult ="

      Main stuff...

      Conditional with!

      "; + assertEquals(complexTestTag.render(), (expectedResult)); } @Test public void testOpenTag() throws Exception { ContainerTag testTag = new ContainerTag("a"); - assertTrue(testTag.renderOpenTag().equals("")); + assertEquals(testTag.renderOpenTag(), ""); ContainerTag complexTestTag = new ContainerTag("input"); complexTestTag.withType("password").withId("password").withName("password").withPlaceholder("Password").isRequired(); String expectedResult = ""; - assertTrue(complexTestTag.renderOpenTag().equals(expectedResult)); + assertEquals(complexTestTag.renderOpenTag(), expectedResult); } @Test public void testCloseTag() throws Exception { ContainerTag testTag = new ContainerTag("a"); - assertTrue(testTag.renderCloseTag().equals("")); + assertEquals(testTag.renderCloseTag(), ""); } } \ No newline at end of file