Hi Vincent,

On Fri, Oct 23, 2009 at 11:20 PM, Vincent Massol <[email protected]> wrote:

> Asiri,
>
> Can you document the test case (wikimaro2.test) and add comments to
> explain what the test tests? (it's not obvious IMO).
>

Ok.


> Also you might want to consider writing a unit test proper instead of
> using the rendering test fwk maybe since I'm not sure what it brings
> here (but I haven't really checked enough so I may be wrong).
>

IMO writing a rendering test is more appropriate here because we are testing
a rendering macro. In this particular case I'm checking whether a wiki macro
(which contains a nested macro) is behaving correctly when operating in
inline mode. If I'm to write a unit test, I need to define the input and
analyze the output XDOM to see if it has behaved correctly - but this is
very easy to do with a rendering test.

Thanks.
- Asiri


>
> -Vincent
>
> On Oct 23, 2009, at 1:11 PM, asiri (SVN) wrote:
>
> > Author: asiri
> > Date: 2009-10-23 13:11:30 +0200 (Fri, 23 Oct 2009)
> > New Revision: 24669
> >
> > Added:
> >   platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/resources/wikimacro2.test
> > Removed:
> >   platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/resources/META-INF/components.txt
> > Modified:
> >   platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
> > RenderingTests.java
> >   platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
> > internal/macro/wikibridge/MockWikiMacro.java
> >   platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/resources/wikimacro1.test
> > Log:
> > XWIKI-4520: Not possible to generate inline content from wiki macros
> > when the macro body starts with another macro.
> >
> > * Added a test case to exploit the issue.
> >
> > Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/
> > xwiki-rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
> > RenderingTests.java
> > ===================================================================
> > --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
> > RenderingTests.java   2009-10-23 10:23:04 UTC (rev 24668)
> > +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
> > RenderingTests.java   2009-10-23 11:11:30 UTC (rev 24669)
> > @@ -20,6 +20,9 @@
> >
> > package org.xwiki.rendering;
> >
> > +import java.util.ArrayList;
> > +import java.util.List;
> > +
> > import junit.framework.Test;
> > import junit.framework.TestCase;
> >
> > @@ -28,6 +31,13 @@
> > import org.xwiki.bridge.DocumentAccessBridge;
> > import org.xwiki.component.descriptor.DefaultComponentDescriptor;
> > import org.xwiki.component.embed.EmbeddableComponentManager;
> > +import
> > org.xwiki.rendering.internal.macro.wikibridge.DefaultWikiMacro;
> > +import org.xwiki.rendering.internal.macro.wikibridge.MockWikiMacro;
> > +import org.xwiki.rendering.macro.descriptor.DefaultContentDescriptor;
> > +import org.xwiki.rendering.macro.wikibridge.WikiMacro;
> > +import org.xwiki.rendering.macro.wikibridge.WikiMacroDescriptor;
> > +import org.xwiki.rendering.macro.wikibridge.WikiMacroManager;
> > +import
> > org.xwiki.rendering.macro.wikibridge.WikiMacroParameterDescriptor;
> > import org.xwiki.rendering.scaffolding.RenderingTestSuite;
> > import org.xwiki.test.ComponentManagerTestSetup;
> >
> > @@ -50,6 +60,7 @@
> >         RenderingTestSuite suite = new RenderingTestSuite("Test Wiki
> > Macro Bridge");
> >
> >         suite.addTestsFromResource("wikimacro1", true);
> > +        suite.addTestsFromResource("wikimacro2", true);
> >
> >         ComponentManagerTestSetup testSetup = new
> > ComponentManagerTestSetup(suite);
> >         setUpMocks(testSetup.getComponentManager());
> > @@ -67,9 +78,35 @@
> >             new DefaultComponentDescriptor<DocumentAccessBridge>();
> >         descriptorDAB.setRole(DocumentAccessBridge.class);
> >         componentManager.registerComponent(descriptorDAB,
> > mockDocumentAccessBridge);
> > +
> > +        // Register mock wiki macros.
> > +        WikiMacroManager wikiMacroManager =
> > componentManager.lookup(WikiMacroManager.class);
> > +
> > +        // Mock wiki macro - 1.
> > +        WikiMacroParameterDescriptor param1 = new
> > WikiMacroParameterDescriptor("param1", "This is param1", true);
> > +        WikiMacroParameterDescriptor param2 = new
> > WikiMacroParameterDescriptor("param2", "This is param2", true);
> > +        List<WikiMacroParameterDescriptor> params = new
> > ArrayList<WikiMacroParameterDescriptor>();
> > +        params.add(param1);
> > +        params.add(param2);
> > +        WikiMacroDescriptor descriptor = new
> > WikiMacroDescriptor("Mock Wiki Macro - 1", "Description", "Test",
> > +            new DefaultContentDescriptor(false), params);
> > +        WikiMacro wikiMacro = new MockWikiMacro(new
> > DefaultWikiMacro("xwiki:Main.MockWikiMacro1", "mockwikimacro1",
> > +            true, descriptor, "This is **mockwikimacro1**", "xwiki/
> > 2.0", componentManager), componentManager);
> > +
> > wikiMacroManager.registerWikiMacro("xwiki:Main.MockWikiMacro1",
> > wikiMacro);
> > +
> > +        // Mock wiki macro - 2.
> > +        params = new ArrayList<WikiMacroParameterDescriptor>();
> > +        descriptor = new WikiMacroDescriptor("Mock Wiki Macro - 2",
> > "Description", "Test",
> > +            new DefaultContentDescriptor(false), params);
> > +        wikiMacro = new MockWikiMacro(new
> > DefaultWikiMacro("xwiki:Main.MockWikiMacro2", "mockwikimacro2",
> > +            true, descriptor, "{{mockwikimacro1 param1=\"p1\"
> > param2=\"p2\"/}}", "xwiki/2.0", componentManager),
> > +            componentManager);
> > +
> > wikiMacroManager.registerWikiMacro("xwiki:Main.MockWikiMacro2",
> > wikiMacro);
> > +
> >
> >         context.checking(new Expectations() {{
> > -
> > oneOf
> > (mockDocumentAccessBridge).getDocument("xwiki:Main.TestWikiMacro");
> > will(returnValue(null));
> > +
> > allowing
> > (mockDocumentAccessBridge).getDocument("xwiki:Main.MockWikiMacro1");
> > will(returnValue(null));
> > +
> > allowing
> > (mockDocumentAccessBridge).getDocument("xwiki:Main.MockWikiMacro2");
> > will(returnValue(null));
> >         }});
> >     }
> > }
> >
> > Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/
> > xwiki-rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
> > internal/macro/wikibridge/MockWikiMacro.java
> > ===================================================================
> > --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
> > internal/macro/wikibridge/MockWikiMacro.java  2009-10-23 10:23:04 UTC
> > (rev 24668)
> > +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/java/org/xwiki/rendering/
> > internal/macro/wikibridge/MockWikiMacro.java  2009-10-23 11:11:30 UTC
> > (rev 24669)
> > @@ -20,72 +20,48 @@
> >
> > package org.xwiki.rendering.internal.macro.wikibridge;
> >
> > -import java.util.ArrayList;
> > import java.util.HashMap;
> > import java.util.List;
> >
> > -import org.xwiki.component.annotation.Component;
> > -import org.xwiki.component.annotation.Requirement;
> > +import org.xwiki.component.manager.ComponentLookupException;
> > import org.xwiki.component.manager.ComponentManager;
> > -import org.xwiki.component.phase.Initializable;
> > -import org.xwiki.component.phase.InitializationException;
> > import org.xwiki.context.Execution;
> > import org.xwiki.rendering.block.Block;
> > import org.xwiki.rendering.macro.Macro;
> > import org.xwiki.rendering.macro.MacroExecutionException;
> > -import org.xwiki.rendering.macro.descriptor.DefaultContentDescriptor;
> > import org.xwiki.rendering.macro.descriptor.MacroDescriptor;
> > -import org.xwiki.rendering.macro.wikibridge.WikiMacroDescriptor;
> > -import
> > org.xwiki.rendering.macro.wikibridge.WikiMacroParameterDescriptor;
> > +import org.xwiki.rendering.macro.wikibridge.WikiMacro;
> > import org.xwiki.rendering.macro.wikibridge.WikiMacroParameters;
> > import org.xwiki.rendering.transformation.MacroTransformationContext;
> >
> > /**
> > - * A wrapper macro used for testing a {...@link DefaultWikiMacro}
> > instance.
> > + * A wrapper macro used for testing wiki macros.
> >  *
> >  * @version $Id$
> >  * @since 2.0M2
> >  */
> > -...@component("testwikimacro")
> > -public class MockWikiMacro implements Macro<WikiMacroParameters>,
> > Initializable
> > +public class MockWikiMacro implements WikiMacro
> > {
> >     /**
> > -     * The internal {...@link DefaultWikiMacro} instance.
> > +     * The internal wiki macro instance.
> >      */
> > -    private DefaultWikiMacro wikiMacro;
> > +    private WikiMacro wikiMacro;
> >
> >     /**
> >      * The {...@link ComponentManager} component.
> >      */
> > -    @Requirement
> >     private ComponentManager componentManager;
> > -
> > +
> >     /**
> > -     * The {...@link Execution} component.
> > +     * Creates a new mock wiki macro encapsulating the given wiki
> > macro instance.
> > +     *
> > +     * @param wikiMacro encapsulated wiki macro instance.
> > +     * @param componentManager component manager.
> >      */
> > -    @Requirement
> > -    private Execution execution;
> > -
> > -    /**
> > -     * {...@inheritdoc}
> > -     */
> > -    public void initialize() throws InitializationException
> > +    public MockWikiMacro(WikiMacro wikiMacro, ComponentManager
> > componentManager)
> >     {
> > -        // Require two parameters, one mandatory and one optional.
> > -        WikiMacroParameterDescriptor param1 = new
> > WikiMacroParameterDescriptor("param1", "This is param1", true);
> > -        WikiMacroParameterDescriptor param2 = new
> > WikiMacroParameterDescriptor("param2", "This is param2", true);
> > -        List<WikiMacroParameterDescriptor> params = new
> > ArrayList<WikiMacroParameterDescriptor>();
> > -        params.add(param1);
> > -        params.add(param2);
> > -
> > -        // Initialize the internal WikiMacro instance.
> > -        WikiMacroDescriptor descriptor = new
> > WikiMacroDescriptor("Test Wiki Macro", "Description", "Test",
> > -            new DefaultContentDescriptor(false), params);
> > -        this.wikiMacro = new
> > DefaultWikiMacro("xwiki:Main.TestWikiMacro", "testwikimacro", true,
> > descriptor,
> > -            "This is **testwikimacro**", "xwiki/2.0",
> > componentManager);
> > -
> > -        // Set a dummy XWikiContext.
> > -        execution.getContext().setProperty("xwikicontext", new
> > HashMap<String, Object>());
> > +        this.wikiMacro = wikiMacro;
> > +        this.componentManager = componentManager;
> >     }
> >
> >     /**
> > @@ -94,10 +70,26 @@
> >     public List<Block> execute(WikiMacroParameters parameters,
> > String content, MacroTransformationContext context)
> >         throws MacroExecutionException
> >     {
> > +        // Use a dummy XWikiContext.
> > +        try {
> > +            Execution execution =
> > componentManager.lookup(Execution.class);
> > +            execution.getContext().setProperty("xwikicontext", new
> > HashMap<String, Object>());
> > +        } catch (ComponentLookupException ex) {
> > +            throw new MacroExecutionException(ex.getMessage(), ex);
> > +        }
> > +
> >         return this.wikiMacro.execute(parameters, content, context);
> >     }
> >
> >     /**
> > +     * {...@inheritdoc}
> > +     */
> > +    public String getId()
> > +    {
> > +        return this.wikiMacro.getId();
> > +    }
> > +
> > +    /**
> >      * {...@inheritdoc}
> >      */
> >     public MacroDescriptor getDescriptor()
> >
> > Deleted: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/
> > xwiki-rendering-macro-wikibridge/src/test/resources/META-INF/
> > components.txt
> > ===================================================================
> > --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/resources/META-INF/
> > components.txt        2009-10-23 10:23:04 UTC (rev 24668)
> > +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/resources/META-INF/
> > components.txt        2009-10-23 11:11:30 UTC (rev 24669)
> > @@ -1 +0,0 @@
> > -org.xwiki.rendering.internal.macro.wikibridge.MockWikiMacro
> > \ No newline at end of file
> >
> > Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/
> > xwiki-rendering-macro-wikibridge/src/test/resources/wikimacro1.test
> > ===================================================================
> > --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/resources/wikimacro1.test
> > 2009-10-23 10:23:04 UTC (rev 24668)
> > +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/resources/wikimacro1.test
> > 2009-10-23 11:11:30 UTC (rev 24669)
> > @@ -1,20 +1,20 @@
> > .#-----------------------------------------------------
> > .input|xwiki/2.0
> > .#-----------------------------------------------------
> > -{{testwikimacro param1="val1" param2="val2"/}}
> > +{{mockwikimacro1 param1="val1" param2="val2"/}}
> > .#-----------------------------------------------------
> > .expect|event/1.0
> > .#-----------------------------------------------------
> > beginDocument
> > -beginMacroMarkerStandalone [testwikimacro] [param1=val1|param2=val2]
> > +beginMacroMarkerStandalone [mockwikimacro1] [param1=val1|param2=val2]
> > beginParagraph
> > onWord [This]
> > onSpace
> > onWord [is]
> > onSpace
> > beginFormat [BOLD]
> > -onWord [testwikimacro]
> > +onWord [mockwikimacro1]
> > endFormat [BOLD]
> > endParagraph
> > -endMacroMarkerStandalone [testwikimacro] [param1=val1|param2=val2]
> > +endMacroMarkerStandalone [mockwikimacro1] [param1=val1|param2=val2]
> > endDocument
> > \ No newline at end of file
> >
> > Added: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/
> > xwiki-rendering-macro-wikibridge/src/test/resources/wikimacro2.test
> > ===================================================================
> > --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/resources/
> > wikimacro2.test                               (rev 0)
> > +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-
> > rendering-macro-wikibridge/src/test/resources/wikimacro2.test
> > 2009-10-23 11:11:30 UTC (rev 24669)
> > @@ -0,0 +1,8 @@
> > +.#-----------------------------------------------------
> > +.input|xwiki/2.0
> > +.#-----------------------------------------------------
> > +Hello! {{mockwikimacro2/}}
> > +.#-----------------------------------------------------
> > +.expect|xhtml/1.0
> > +.#-----------------------------------------------------
> > +<p>Hello! This is <strong>mockwikimacro1</strong></p>
> > \ No newline at end of file
> >
> > _______________________________________________
> > notifications mailing list
> > [email protected]
> > http://lists.xwiki.org/mailman/listinfo/notifications
>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to