Search in sources :

Example 6 with Parser

use of org.xwiki.rendering.parser.Parser in project xwiki-platform by xwiki.

the class DefaultHTMLConverterTest method parseAndRender.

/**
 * Unit test for {@link DefaultHTMLConverter#parseAndRender(String, String)}.
 */
@Test
public void parseAndRender() throws Exception {
    String html = "some HTML";
    String syntaxId = "syntax/x.y";
    // Verify the HTML is cleaned.
    HTMLCleaner cleaner = mocker.getInstance(HTMLCleaner.class);
    when(cleaner.clean(html)).thenReturn(html);
    // Verify the HTML is parsed into XDOM.
    XDOM xdom = new XDOM(Collections.<Block>emptyList());
    Parser xhtmlParser = mocker.getInstance(Parser.class, "xhtml/1.0");
    when(xhtmlParser.parse(any(StringReader.class))).thenReturn(xdom);
    Assert.assertEquals("", mocker.getComponentUnderTest().parseAndRender(html, syntaxId));
    // Verify that the macro transformations have been executed.
    Transformation macroTransformation = mocker.getInstance(Transformation.class, "macro");
    RenderingContext renderingContext = mocker.getInstance(RenderingContext.class);
    // It's very important to verify that a transformation context id is set as otherwise if the content being
    // edited has different velocity macros executing, they'll be executed in isolation and thus what's defined in
    // one won't be visible from the other ones (For example see https://jira.xwiki.org/browse/XWIKI-11695).
    ArgumentCaptor<TransformationContext> txContextArgument = ArgumentCaptor.forClass(TransformationContext.class);
    verify((MutableRenderingContext) renderingContext).transformInContext(same(macroTransformation), txContextArgument.capture(), same(xdom));
    assertEquals("wysiwygtxid", txContextArgument.getValue().getId());
    // Verify the XDOM is rendered to Annotated XHTML.
    BlockRenderer xhtmlRenderer = mocker.getInstance(BlockRenderer.class, "annotatedxhtml/1.0");
    verify(xhtmlRenderer).render(same(xdom), any(WikiPrinter.class));
    // Verify that the syntax meta data has been set.
    Assert.assertEquals(Syntax.valueOf("syntax/x.y"), xdom.getMetaData().getMetaData(MetaData.SYNTAX));
}
Also used : RenderingContext(org.xwiki.rendering.transformation.RenderingContext) MutableRenderingContext(org.xwiki.rendering.internal.transformation.MutableRenderingContext) Transformation(org.xwiki.rendering.transformation.Transformation) XDOM(org.xwiki.rendering.block.XDOM) StringReader(java.io.StringReader) TransformationContext(org.xwiki.rendering.transformation.TransformationContext) MutableRenderingContext(org.xwiki.rendering.internal.transformation.MutableRenderingContext) WikiPrinter(org.xwiki.rendering.renderer.printer.WikiPrinter) HTMLCleaner(org.xwiki.wysiwyg.cleaner.HTMLCleaner) Parser(org.xwiki.rendering.parser.Parser) StreamParser(org.xwiki.rendering.parser.StreamParser) BlockRenderer(org.xwiki.rendering.renderer.BlockRenderer) Test(org.junit.Test)

Example 7 with Parser

use of org.xwiki.rendering.parser.Parser in project xwiki-platform by xwiki.

the class DocumentTitleDisplayerTest method fallbackOnSpaceNameWhenSpaceHomePageTitleIsEmpty.

@Test
public void fallbackOnSpaceNameWhenSpaceHomePageTitleIsEmpty() throws Exception {
    EntityReferenceProvider defaultEntityReferenceProvider = this.mocker.getInstance(EntityReferenceProvider.class);
    when(defaultEntityReferenceProvider.getDefaultReference(EntityType.DOCUMENT)).thenReturn(new EntityReference("Page", EntityType.DOCUMENT));
    DocumentModelBridge document = mock(DocumentModelBridge.class);
    when(document.getDocumentReference()).thenReturn(new DocumentReference("wiki", Arrays.asList("Space"), "Page"));
    XDOM titleXDOM = new XDOM(Arrays.asList(new WordBlock("Space")));
    Parser plainTextParser = this.mocker.getInstance(Parser.class, "plain/1.0");
    when(plainTextParser.parse(any(StringReader.class))).thenReturn(titleXDOM);
    DocumentDisplayerParameters params = new DocumentDisplayerParameters();
    params.setTitleDisplayed(true);
    assertSame(titleXDOM, this.mocker.getComponentUnderTest().display(document, params));
    ArgumentCaptor<Reader> argument = ArgumentCaptor.forClass(Reader.class);
    verify(plainTextParser).parse(argument.capture());
    assertEquals("Space", IOUtils.toString(argument.getValue()));
}
Also used : EntityReferenceProvider(org.xwiki.model.reference.EntityReferenceProvider) XDOM(org.xwiki.rendering.block.XDOM) DocumentModelBridge(org.xwiki.bridge.DocumentModelBridge) WordBlock(org.xwiki.rendering.block.WordBlock) EntityReference(org.xwiki.model.reference.EntityReference) StringReader(java.io.StringReader) Reader(java.io.Reader) StringReader(java.io.StringReader) DocumentReference(org.xwiki.model.reference.DocumentReference) Parser(org.xwiki.rendering.parser.Parser) Test(org.junit.Test)

Example 8 with Parser

use of org.xwiki.rendering.parser.Parser in project xwiki-platform by xwiki.

the class IntegrationTests method initialize.

@RenderingTestSuite.Initialized
public void initialize(MockitoComponentManager componentManager) throws Exception {
    // For performance reasons we mock some components to avoid having to draw all oldcore components
    // Macro Reference Resolver
    DocumentReferenceResolver<String> macroResolver = componentManager.registerMockComponent(new DefaultParameterizedType(null, DocumentReferenceResolver.class, String.class), "macro");
    DocumentReference referencedDocumentReference = new DocumentReference("Wiki", "Space", "Page");
    when(macroResolver.resolve(eq("Space.Page"), any(MacroBlock.class))).thenReturn(referencedDocumentReference);
    // Document Access Bridge mock
    // Simulate the XDOM of the referenced document
    DocumentAccessBridge dab = componentManager.registerMockComponent(DocumentAccessBridge.class);
    DocumentModelBridge dmb = mock(DocumentModelBridge.class);
    when(dab.getTranslatedDocumentInstance(referencedDocumentReference)).thenReturn(dmb);
    Parser parser = componentManager.getInstance(Parser.class, "xwiki/2.1");
    XDOM xdom = parser.parse(new StringReader("= heading1 =\n==heading2=="));
    when(dmb.getXDOM()).thenReturn(xdom);
}
Also used : DocumentReferenceResolver(org.xwiki.model.reference.DocumentReferenceResolver) XDOM(org.xwiki.rendering.block.XDOM) DocumentModelBridge(org.xwiki.bridge.DocumentModelBridge) DocumentAccessBridge(org.xwiki.bridge.DocumentAccessBridge) StringReader(java.io.StringReader) DefaultParameterizedType(org.xwiki.component.util.DefaultParameterizedType) DocumentReference(org.xwiki.model.reference.DocumentReference) MacroBlock(org.xwiki.rendering.block.MacroBlock) Parser(org.xwiki.rendering.parser.Parser)

Example 9 with Parser

use of org.xwiki.rendering.parser.Parser in project xwiki-platform by xwiki.

the class DefaultExtendedRenderingConfigurationTest method getConfiguredAndDisabledSyntaxesWhenNoConfigXObjectAndExistingXWikiCfgProperty.

@Test
public void getConfiguredAndDisabledSyntaxesWhenNoConfigXObjectAndExistingXWikiCfgProperty() throws Exception {
    ConfigurationSource renderingSource = this.mocker.getInstance(ConfigurationSource.class, "rendering");
    when(renderingSource.getProperty("disabledSyntaxes")).thenReturn(null);
    ConfigurationSource xwikiCfgSource = this.mocker.getInstance(ConfigurationSource.class, "xwikicfg");
    when(xwikiCfgSource.getProperty("xwiki.rendering.syntaxes", List.class)).thenReturn(Arrays.asList("xwiki/2.0", "xwiki/2.1"));
    // Register some Syntaxes for the test
    Parser xwikiSyntax20Parser = this.mocker.registerMockComponent(Parser.class, Syntax.XWIKI_2_0.toIdString());
    when(xwikiSyntax20Parser.getSyntax()).thenReturn(Syntax.XWIKI_2_0);
    Parser xwikiSyntax21Parser = this.mocker.registerMockComponent(Parser.class, Syntax.XWIKI_2_1.toIdString());
    when(xwikiSyntax21Parser.getSyntax()).thenReturn(Syntax.XWIKI_2_1);
    Syntax syntax1 = new Syntax(new SyntaxType("syntax1", "Syntax 1"), "1.0");
    Parser syntax1Parser = this.mocker.registerMockComponent(Parser.class, syntax1.toIdString());
    when(syntax1Parser.getSyntax()).thenReturn(syntax1);
    Syntax syntax2 = new Syntax(new SyntaxType("syntax2", "Syntax 2"), "1.0");
    Parser syntax2Parser = this.mocker.registerMockComponent(Parser.class, syntax2.toIdString());
    when(syntax2Parser.getSyntax()).thenReturn(syntax2);
    List<Syntax> disabledSyntaxes = this.mocker.getComponentUnderTest().getDisabledSyntaxes();
    assertEquals(2, disabledSyntaxes.size());
    assertTrue(disabledSyntaxes.contains(syntax1));
    assertTrue(disabledSyntaxes.contains(syntax2));
    List<Syntax> configuredSyntaxes = this.mocker.getComponentUnderTest().getConfiguredSyntaxes();
    assertEquals(2, configuredSyntaxes.size());
    assertTrue(configuredSyntaxes.contains(Syntax.XWIKI_2_0));
    assertTrue(configuredSyntaxes.contains(Syntax.XWIKI_2_1));
}
Also used : ConfigurationSource(org.xwiki.configuration.ConfigurationSource) SyntaxType(org.xwiki.rendering.syntax.SyntaxType) Syntax(org.xwiki.rendering.syntax.Syntax) Parser(org.xwiki.rendering.parser.Parser) Test(org.junit.Test)

Example 10 with Parser

use of org.xwiki.rendering.parser.Parser in project xwiki-platform by xwiki.

the class DefaultExtendedRenderingConfigurationTest method getConfiguredAndDisabledSyntaxesWhenConfigXObjectExists.

@Test
public void getConfiguredAndDisabledSyntaxesWhenConfigXObjectExists() throws Exception {
    ConfigurationSource renderingSource = this.mocker.getInstance(ConfigurationSource.class, "rendering");
    when(renderingSource.getProperty("disabledSyntaxes")).thenReturn(Arrays.asList("syntax1/1.0", "syntax2/1.0"));
    // Register some Syntaxes for the test
    Parser syntax1Parser = this.mocker.registerMockComponent(Parser.class, "syntax1/1.0");
    Syntax syntax1 = new Syntax(new SyntaxType("syntax1", "Syntax 1"), "1.0");
    when(syntax1Parser.getSyntax()).thenReturn(syntax1);
    Parser syntax2Parser = this.mocker.registerMockComponent(Parser.class, "syntax2/1.0");
    Syntax syntax2 = new Syntax(new SyntaxType("syntax2", "Syntax 2"), "1.0");
    when(syntax2Parser.getSyntax()).thenReturn(syntax2);
    Parser xwikiSyntax20Parser = this.mocker.registerMockComponent(Parser.class, "xwiki/2.0");
    Syntax xwikiSyntax20 = new Syntax(new SyntaxType("xwiki", "XWiki"), "2.0");
    when(xwikiSyntax20Parser.getSyntax()).thenReturn(xwikiSyntax20);
    List<Syntax> disabledSyntaxes = this.mocker.getComponentUnderTest().getDisabledSyntaxes();
    assertEquals(2, disabledSyntaxes.size());
    assertTrue(disabledSyntaxes.contains(syntax1));
    assertTrue(disabledSyntaxes.contains(syntax2));
    List<Syntax> configuredSyntaxes = this.mocker.getComponentUnderTest().getConfiguredSyntaxes();
    assertEquals(1, configuredSyntaxes.size());
    assertTrue(configuredSyntaxes.contains(xwikiSyntax20));
}
Also used : ConfigurationSource(org.xwiki.configuration.ConfigurationSource) SyntaxType(org.xwiki.rendering.syntax.SyntaxType) Syntax(org.xwiki.rendering.syntax.Syntax) Parser(org.xwiki.rendering.parser.Parser) Test(org.junit.Test)

Aggregations

Parser (org.xwiki.rendering.parser.Parser)24 XDOM (org.xwiki.rendering.block.XDOM)19 StringReader (java.io.StringReader)17 Test (org.junit.Test)13 WikiPrinter (org.xwiki.rendering.renderer.printer.WikiPrinter)8 Block (org.xwiki.rendering.block.Block)5 DefaultWikiPrinter (org.xwiki.rendering.renderer.printer.DefaultWikiPrinter)5 TransformationContext (org.xwiki.rendering.transformation.TransformationContext)5 DocumentModelBridge (org.xwiki.bridge.DocumentModelBridge)4 DocumentReference (org.xwiki.model.reference.DocumentReference)4 Syntax (org.xwiki.rendering.syntax.Syntax)4 TransformationManager (org.xwiki.rendering.transformation.TransformationManager)4 DocumentAccessBridge (org.xwiki.bridge.DocumentAccessBridge)3 ConfigurationSource (org.xwiki.configuration.ConfigurationSource)3 BlockRenderer (org.xwiki.rendering.renderer.BlockRenderer)3 SyntaxType (org.xwiki.rendering.syntax.SyntaxType)3 Expectations (org.jmock.Expectations)2 ModelContext (org.xwiki.model.ModelContext)2 EntityReference (org.xwiki.model.reference.EntityReference)2 EntityReferenceProvider (org.xwiki.model.reference.EntityReferenceProvider)2