Package org.apache.wicket.util.tester
Class TagTester
- java.lang.Object
-
- org.apache.wicket.util.tester.TagTester
-
public class TagTester extends Object
Tag tester is used to test that a generated markup tag contains the correct attributes, values etc. This can be done instead of comparing generated markup with some expected markup. The advantage of this is that a lot of tests don't fail when the generated markup changes just a little bit.It also gives a more programmatic way of testing the generated output, by not having to worry about precisely how the markup looks instead of which attributes exists on the given tags, and what values they have.
Example:
... TagTester tagTester = application.getTagByWicketId("form"); assertTrue(tag.hasAttribute("action")); ...
- Since:
- 1.2.6
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static TagTester
createTagByAttribute(String markup, String attribute, String value)
Static factory method for creating aTagTester
based on a tag found by an attribute with a specific value.static TagTester
createTagByName(String markup, String tagName)
Static factory method for creating aTagTester
based on a tag name.static List<TagTester>
createTags(String markup, Function<XmlTag,Boolean> accept, boolean stopAfterFirst)
static List<TagTester>
createTagsByAttribute(String markup, String attribute, String value, boolean stopAfterFirst)
Static factory method for creating aTagTester
based on tags found by an attribute with a specific value.String
getAttribute(String attribute)
Gets the value for a given attribute.boolean
getAttributeContains(String attribute, String partialValue)
Checks if an attribute contains the specified partial value.boolean
getAttributeEndsWith(String attribute, String expected)
Checks if an attribute's value ends with the given parameter.boolean
getAttributeIs(String attribute, String expected)
Checks if an attribute's value is the exact same as the given value.TagTester
getChild(String tagName)
Checks if the tag has a child with the giventagName
.TagTester
getChild(String attribute, String value)
Gets a child tag for testing.String
getMarkup()
Gets the markup for this tag.String
getName()
Gets the tag's name.String
getValue()
Returns the value for this tag.boolean
hasAttribute(String attribute)
Tests if the tag contains the given attribute.boolean
hasChildTag(String tagName)
Checks if the tag has a child with the giventagName
.
-
-
-
Method Detail
-
hasAttribute
public boolean hasAttribute(String attribute)
Tests if the tag contains the given attribute. Please note that this is non case-sensitive, because attributes in HTML may be non case-sensitive.- Parameters:
attribute
- an attribute to look for in the tag- Returns:
true
if the tag has the attribute,false
if not.
-
getAttribute
public String getAttribute(String attribute)
Gets the value for a given attribute. Please note that this is non case-sensitive, because attributes in HTML may be non case-sensitive.- Parameters:
attribute
- an attribute to look for in the tag- Returns:
- the value of the attribute or
null
if it isn't found.
-
getAttributeContains
public boolean getAttributeContains(String attribute, String partialValue)
Checks if an attribute contains the specified partial value.For example:
Markup:
<span wicket:id="helloComp" class="style1 style2">Hello</span>
Test:
TagTester tester = application.getTagByWicketId("helloComp"); assertTrue(tester.getAttributeContains("class", "style2"));
- Parameters:
attribute
- the attribute to test onpartialValue
- the partial value to test if the attribute value contains it- Returns:
true
if the attribute value contains the partial value
-
getAttributeIs
public boolean getAttributeIs(String attribute, String expected)
Checks if an attribute's value is the exact same as the given value.- Parameters:
attribute
- an attribute to testexpected
- the value which should be the same at the attribute's value- Returns:
true
if the attribute's value is the same as the given value
-
getAttributeEndsWith
public boolean getAttributeEndsWith(String attribute, String expected)
Checks if an attribute's value ends with the given parameter.- Parameters:
attribute
- an attribute to testexpected
- the expected value- Returns:
true
if the attribute's value ends with the expected value
-
hasChildTag
public boolean hasChildTag(String tagName)
Checks if the tag has a child with the giventagName
.- Parameters:
tagName
- the tag name to search for- Returns:
true
if this tag has a child with the giventagName
.
-
getChild
public TagTester getChild(String tagName)
Checks if the tag has a child with the giventagName
.- Parameters:
tagName
- the tag name to search for- Returns:
true
if this tag has a child with the giventagName
.
-
getChild
public TagTester getChild(String attribute, String value)
Gets a child tag for testing. If this tag contains child tags, you can get one of them as aTagTester
instance.- Parameters:
attribute
- an attribute on the child tag to search forvalue
- a value that the attribute must have- Returns:
- the
TagTester
for the child tag
-
getMarkup
public String getMarkup()
Gets the markup for this tag. This includes all markup between the open tag and the close tag.- Returns:
- all the markup between the open tag and the close tag
-
getValue
public String getValue()
Returns the value for this tag. This includes all data between the open tag and the close tag.- Returns:
- all the data between the open tag and the close tag
- Since:
- 1.3
-
createTagByName
public static TagTester createTagByName(String markup, String tagName)
Static factory method for creating aTagTester
based on a tag name. Please note that it will return the first tag which matches the criteria.- Parameters:
markup
- the markup to look for the tag to create theTagTester
from the value which the attribute must have- Returns:
- the
TagTester
which matches the tag by name in the markup
-
createTagByAttribute
public static TagTester createTagByAttribute(String markup, String attribute, String value)
Static factory method for creating aTagTester
based on a tag found by an attribute with a specific value. Please note that it will return the first tag which matches the criteria. It's therefore good for attributes such as "id" or "wicket:id", but only if "wicket:id" is unique in the specified markup.- Parameters:
markup
- the markup to look for the tag to create theTagTester
fromattribute
- the attribute which should be on the tag in the markupvalue
- the value which the attribute must have- Returns:
- the
TagTester
which matches the tag in the markup, that has the given value on the given attribute
-
createTagsByAttribute
public static List<TagTester> createTagsByAttribute(String markup, String attribute, String value, boolean stopAfterFirst)
Static factory method for creating aTagTester
based on tags found by an attribute with a specific value.- Parameters:
markup
- the markup to look for the tag to create theTagTester
fromattribute
- the attribute which should be on the tag in the markupvalue
- the value which the attribute must havestopAfterFirst
- if true search will stop after the first match- Returns:
- list of
TagTester
s matching the tags in the markup, that have the given value on the given attribute
-
-