1. Project Clover database Tue Dec 20 2016 21:24:09 CET
  2. Package org.xwiki.rendering.macro.velocity

File VelocityMacroIsolationTest.java

 

Code metrics

0
12
2
1
80
44
2
0.17
6
2
1

Classes

Class Line # Actions
VelocityMacroIsolationTest 41 12 0% 2 0
1.0100%
 

Contributing tests

This file is covered by 1 test. .

Source view

1    /*
2    * See the NOTICE file distributed with this work for additional
3    * information regarding copyright ownership.
4    *
5    * This is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU Lesser General Public License as
7    * published by the Free Software Foundation; either version 2.1 of
8    * the License, or (at your option) any later version.
9    *
10    * This software is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    * Lesser General Public License for more details.
14    *
15    * You should have received a copy of the GNU Lesser General Public
16    * License along with this software; if not, write to the Free
17    * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18    * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
19    */
20    package org.xwiki.rendering.macro.velocity;
21   
22    import java.util.Collections;
23   
24    import org.junit.Test;
25    import org.xwiki.rendering.block.MacroBlock;
26    import org.xwiki.rendering.macro.Macro;
27    import org.xwiki.rendering.macro.script.ScriptMockSetup;
28    import org.xwiki.rendering.renderer.PrintRendererFactory;
29    import org.xwiki.rendering.syntax.Syntax;
30    import org.xwiki.rendering.transformation.MacroTransformationContext;
31    import org.xwiki.test.jmock.AbstractComponentTestCase;
32   
33    import static org.xwiki.rendering.test.BlockAssert.*;
34   
35    /**
36    * Verify that a Velocity macro defined in one page is not visible from another page.
37    *
38    * @version $Id: a4fea1e34080540b36aca1a7145b65ee6ec13e1d $
39    * @since 2.4M2
40    */
 
41    public class VelocityMacroIsolationTest extends AbstractComponentTestCase
42    {
43    private Macro velocityMacro;
44   
 
45  1 toggle @Override
46    protected void registerComponents() throws Exception
47    {
48  1 new ScriptMockSetup(getMockery(), getComponentManager());
49  1 this.velocityMacro = getComponentManager().getInstance(Macro.class, "velocity");
50    }
51   
 
52  1 toggle @Test
53    public void testVelocityMacroIsolation() throws Exception
54    {
55  1 String expected = "beginDocument\n"
56    + "beginParagraph\n"
57    + "onSpecialSymbol [#]\n"
58    + "onWord [testMacrosAreLocal]\n"
59    + "onSpecialSymbol [(]\n"
60    + "onSpecialSymbol [)]\n"
61    + "endParagraph\n"
62    + "endDocument";
63   
64  1 VelocityMacroParameters params = new VelocityMacroParameters();
65  1 MacroTransformationContext context = new MacroTransformationContext();
66  1 context.setSyntax(Syntax.XWIKI_2_0);
67  1 context.setCurrentMacroBlock(new MacroBlock("velocity", Collections.<String, String>emptyMap(), false));
68   
69    // Execute the velocity macro in the context of a first page
70  1 context.setId("page1");
71  1 this.velocityMacro.execute(params, "#macro(testMacrosAreLocal)mymacro#end", context);
72   
73    // And then in the context of a second independent page
74  1 context.setId("page2");
75  1 PrintRendererFactory eventRendererFactory =
76    getComponentManager().getInstance(PrintRendererFactory.class, "event/1.0");
77  1 assertBlocks(expected,
78    this.velocityMacro.execute(params, "#testMacrosAreLocal()", context), eventRendererFactory);
79    }
80    }