You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Igor Vaynberg (JIRA)" <ji...@apache.org> on 2009/05/10 07:52:45 UTC

[jira] Resolved: (WICKET-2269) A small change would allow WicketTesting attributeModifiers

     [ https://issues.apache.org/jira/browse/WICKET-2269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Igor Vaynberg resolved WICKET-2269.
-----------------------------------

    Resolution: Won't Fix
      Assignee: Igor Vaynberg

this doesnt make any sense.

your test checks for two things: that the attribute modifier was added and that it has the correct model, but it checks this by testing the final output. this is not *unit* testing.

you can break this test down into two tests:
* check that the attribute modifier performs the correct transformation
* check that the correct attribute modifier was added to the component

this will allow you to test things in isolation.

testing the attribute modifier is trivial, instantiate it and call oncomponenttag() with a mock tag and check that the expectations on the mock are met.

the other check is also trivia, simply iterate over behaviors and make sure the right modifier is added to the component.

if you insist on cobbling up all these things into a single test that is fine, but then you should be checking the output. parse the output html, find the tag with the wicket id of the component that had the attribute modifier added to it and check for the correct attribute in the tag.

> A small change would allow WicketTesting attributeModifiers
> -----------------------------------------------------------
>
>                 Key: WICKET-2269
>                 URL: https://issues.apache.org/jira/browse/WICKET-2269
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket
>    Affects Versions: 1.4-RC2
>            Reporter: Martin Makundi
>            Assignee: Igor Vaynberg
>   Original Estimate: 5h
>  Remaining Estimate: 5h
>
> The workaround is as follows, because AttributeModifier.getReplaceModel -method is protected. This operation should somehow be supported in WicketTester:
> Workaround: 
>   private final static Method getReplaceModelMethod;
>   static {
>     try {
>       getReplaceModelMethod = AttributeModifier.class.getDeclaredMethod("getReplaceModel");
>       getReplaceModelMethod.setAccessible(true);
>     } catch (Exception e) {
>       e.printStackTrace();
>       throw new RuntimeException(e);
>     }
>   }
>   public void assertAttribute(String message, String expected, Component component, String attribute) {
>     AttributeModifier behavior = getAttributeModifier(component, attribute);
>     if (behavior != null) {
>       try {
>         IModel<?> model = (IModel<?>) getReplaceModelMethod.invoke(behavior);
>         assertEquals(message, expected, model.getObject().toString());
>         return;
>       } catch (Exception e) {
>         throw new RuntimeException(e);
>       }
>     }
>     
>     fail("Attribute not found.");
>   }
> Usage example:
>     assertAttribute("3", tableFooterCellWebMarkupComponent, WebPageConstants.COLSPAN);

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.