Search in sources :

Example 21 with WordBlock

use of org.xwiki.rendering.block.WordBlock in project xwiki-platform by xwiki.

the class DefaultDocumentSplitterTest method split.

@Test
public void split() throws Exception {
    SplittingCriterion splittingCriterion = mock(SplittingCriterion.class);
    when(splittingCriterion.shouldSplit(any(Block.class), anyInt())).thenReturn(true, false, false, true);
    when(splittingCriterion.shouldIterate(any(SectionBlock.class), anyInt())).thenReturn(true, false, false, false);
    NamingCriterion namingCriterion = mock(NamingCriterion.class);
    when(namingCriterion.getDocumentName(any(XDOM.class))).thenReturn("Child1", "Child2");
    // = Chapter 1 =
    // Once upon a time..
    // == Section 1.1 ==
    // In a kingdom far away..
    HeaderBlock header = new HeaderBlock(Arrays.<Block>asList(new WordBlock("Section 1.1")), HeaderLevel.LEVEL2);
    ParagraphBlock paragraph = new ParagraphBlock(Arrays.<Block>asList(new WordBlock("In a kingdom far away..")));
    SectionBlock subSection = new SectionBlock(Arrays.<Block>asList(header, paragraph));
    header = new HeaderBlock(Arrays.<Block>asList(new WordBlock("Chapter 1")), HeaderLevel.LEVEL1);
    paragraph = new ParagraphBlock(Arrays.<Block>asList(new WordBlock("Once upon a time..")));
    SectionBlock section = new SectionBlock(Arrays.<Block>asList(header, paragraph, subSection));
    XDOM xdom = new XDOM(Arrays.<Block>asList(section));
    WikiDocument document = new WikiDocument("Space.Page", xdom, null);
    List<WikiDocument> result = mocker.getComponentUnderTest().split(document, splittingCriterion, namingCriterion);
    assertEquals(3, result.size());
    assertSame(document, result.get(0));
    assertEquals("Child1", result.get(1).getFullName());
    assertSame(document, result.get(1).getParent());
    assertEquals("Child2", result.get(2).getFullName());
    assertSame(result.get(1), result.get(2).getParent());
    ClassBlockMatcher headerMatcher = new ClassBlockMatcher(HeaderBlock.class);
    assertTrue(document.getXdom().<LinkBlock>getBlocks(headerMatcher, Axes.DESCENDANT).isEmpty());
    assertEquals(1, result.get(1).getXdom().<LinkBlock>getBlocks(headerMatcher, Axes.DESCENDANT).size());
    assertEquals(1, result.get(2).getXdom().<LinkBlock>getBlocks(headerMatcher, Axes.DESCENDANT).size());
}
Also used : HeaderBlock(org.xwiki.rendering.block.HeaderBlock) XDOM(org.xwiki.rendering.block.XDOM) NamingCriterion(org.xwiki.refactoring.splitter.criterion.naming.NamingCriterion) ClassBlockMatcher(org.xwiki.rendering.block.match.ClassBlockMatcher) LinkBlock(org.xwiki.rendering.block.LinkBlock) WordBlock(org.xwiki.rendering.block.WordBlock) LinkBlock(org.xwiki.rendering.block.LinkBlock) HeaderBlock(org.xwiki.rendering.block.HeaderBlock) Block(org.xwiki.rendering.block.Block) IdBlock(org.xwiki.rendering.block.IdBlock) WordBlock(org.xwiki.rendering.block.WordBlock) ParagraphBlock(org.xwiki.rendering.block.ParagraphBlock) SectionBlock(org.xwiki.rendering.block.SectionBlock) ParagraphBlock(org.xwiki.rendering.block.ParagraphBlock) WikiDocument(org.xwiki.refactoring.WikiDocument) SectionBlock(org.xwiki.rendering.block.SectionBlock) SplittingCriterion(org.xwiki.refactoring.splitter.criterion.SplittingCriterion) Test(org.junit.Test)

Example 22 with WordBlock

use of org.xwiki.rendering.block.WordBlock in project xwiki-platform by xwiki.

the class DefaultDocumentSplitter method createLink.

/**
 * Creates a {@link LinkBlock} suitable to be placed in the parent document.
 *
 * @param block the {@link Block} that has just been split into a separate document.
 * @param target name of the target wiki document.
 * @return a {@link LinkBlock} representing the link from the parent document to new document.
 */
private LinkBlock createLink(Block block, String target) {
    Block firstBlock = block.getChildren().get(0);
    if (firstBlock instanceof HeaderBlock) {
        DocumentResourceReference reference = new DocumentResourceReference(target);
        // Clone the header block and remove any unwanted stuff
        Block clonedHeaderBlock = firstBlock.clone(new BlockFilter() {

            @Override
            public List<Block> filter(Block block) {
                List<Block> blocks = new ArrayList<Block>();
                if (block instanceof WordBlock || block instanceof SpaceBlock || block instanceof SpecialSymbolBlock) {
                    blocks.add(block);
                }
                return blocks;
            }
        });
        return new LinkBlock(clonedHeaderBlock.getChildren(), reference, false);
    } else if (firstBlock instanceof SectionBlock) {
        return createLink(firstBlock, target);
    } else {
        throw new IllegalArgumentException("A SectionBlock should either begin with a HeaderBlock or another SectionBlock.");
    }
}
Also used : HeaderBlock(org.xwiki.rendering.block.HeaderBlock) SpecialSymbolBlock(org.xwiki.rendering.block.SpecialSymbolBlock) WordBlock(org.xwiki.rendering.block.WordBlock) SpaceBlock(org.xwiki.rendering.block.SpaceBlock) LinkBlock(org.xwiki.rendering.block.LinkBlock) LinkBlock(org.xwiki.rendering.block.LinkBlock) HeaderBlock(org.xwiki.rendering.block.HeaderBlock) Block(org.xwiki.rendering.block.Block) SpecialSymbolBlock(org.xwiki.rendering.block.SpecialSymbolBlock) NewLineBlock(org.xwiki.rendering.block.NewLineBlock) IdBlock(org.xwiki.rendering.block.IdBlock) WordBlock(org.xwiki.rendering.block.WordBlock) SectionBlock(org.xwiki.rendering.block.SectionBlock) SpaceBlock(org.xwiki.rendering.block.SpaceBlock) ArrayList(java.util.ArrayList) List(java.util.List) DocumentResourceReference(org.xwiki.rendering.listener.reference.DocumentResourceReference) SectionBlock(org.xwiki.rendering.block.SectionBlock) BlockFilter(org.xwiki.rendering.block.BlockFilter)

Example 23 with WordBlock

use of org.xwiki.rendering.block.WordBlock in project xwiki-platform by xwiki.

the class WikiUIExtensionTest method createWikiUIExtension.

@Test
public void createWikiUIExtension() {
    WikiUIExtension wikiUIX = new WikiUIExtension("roleHint", "id", "epId", objectReference, AUTHOR_REFERENCE, null);
    wikiUIX.setScope(WikiComponentScope.WIKI);
    Assert.assertEquals("roleHint", wikiUIX.getRoleHint());
    Assert.assertEquals("id", wikiUIX.getId());
    Assert.assertEquals("epId", wikiUIX.getExtensionPointId());
    Assert.assertEquals(AUTHOR_REFERENCE, wikiUIX.getAuthorReference());
    Assert.assertEquals(UIExtension.class, wikiUIX.getRoleType());
    Assert.assertEquals(WikiComponentScope.WIKI, wikiUIX.getScope());
    Assert.assertEquals(new WordBlock(""), wikiUIX.execute());
    Assert.assertEquals(MapUtils.EMPTY_MAP, wikiUIX.getParameters());
}
Also used : WikiUIExtension(org.xwiki.uiextension.internal.WikiUIExtension) WordBlock(org.xwiki.rendering.block.WordBlock) Test(org.junit.Test)

Example 24 with WordBlock

use of org.xwiki.rendering.block.WordBlock in project xwiki-platform by xwiki.

the class LocalizationScriptServiceTest method setUp.

@Before
public void setUp() throws Exception {
    componentManager = mock(ComponentManager.class);
    Provider<ComponentManager> componentManagerProvider = mocker.registerMockComponent(new DefaultParameterizedType(null, Provider.class, ComponentManager.class), "context");
    when(componentManagerProvider.get()).thenReturn(componentManager);
    renderer = mock(BlockRenderer.class, Syntax.PLAIN_1_0.toIdString());
    when(componentManager.getInstance(BlockRenderer.class, Syntax.PLAIN_1_0.toIdString())).thenReturn(renderer);
    localizationContext = mocker.getInstance(LocalizationContext.class);
    localizationManager = mocker.getInstance(LocalizationManager.class);
    localizationScriptService = (LocalizationScriptService) mocker.getComponentUnderTest();
    translation = mock(Translation.class);
    doAnswer(new Answer<Object>() {

        @Override
        public Object answer(InvocationOnMock invocation) throws Throwable {
            WikiPrinter printer = (WikiPrinter) invocation.getArguments()[1];
            printer.print("print result");
            return null;
        }
    }).when(renderer).render(eq(new WordBlock("message")), any(WikiPrinter.class));
    when(translation.render(Locale.ROOT, ArrayUtils.EMPTY_OBJECT_ARRAY)).thenReturn(new WordBlock("message"));
    when(localizationManager.getTranslation("key", Locale.ROOT)).thenReturn(translation);
    when(localizationContext.getCurrentLocale()).thenReturn(Locale.ROOT);
    environment = mocker.getInstance(Environment.class);
}
Also used : Translation(org.xwiki.localization.Translation) LocalizationContext(org.xwiki.localization.LocalizationContext) WordBlock(org.xwiki.rendering.block.WordBlock) WikiPrinter(org.xwiki.rendering.renderer.printer.WikiPrinter) Provider(javax.inject.Provider) BlockRenderer(org.xwiki.rendering.renderer.BlockRenderer) LocalizationManager(org.xwiki.localization.LocalizationManager) InvocationOnMock(org.mockito.invocation.InvocationOnMock) ComponentManager(org.xwiki.component.manager.ComponentManager) Environment(org.xwiki.environment.Environment) DefaultParameterizedType(org.xwiki.component.util.DefaultParameterizedType) Before(org.junit.Before)

Aggregations

WordBlock (org.xwiki.rendering.block.WordBlock)24 Test (org.junit.Test)13 Block (org.xwiki.rendering.block.Block)13 XDOM (org.xwiki.rendering.block.XDOM)8 DocumentReference (org.xwiki.model.reference.DocumentReference)6 TranslationMessage (org.xwiki.localization.message.TranslationMessage)5 ArrayList (java.util.ArrayList)4 HeaderBlock (org.xwiki.rendering.block.HeaderBlock)4 LinkBlock (org.xwiki.rendering.block.LinkBlock)4 ParagraphBlock (org.xwiki.rendering.block.ParagraphBlock)4 SpecialSymbolBlock (org.xwiki.rendering.block.SpecialSymbolBlock)4 EntityReference (org.xwiki.model.reference.EntityReference)3 IdBlock (org.xwiki.rendering.block.IdBlock)3 SectionBlock (org.xwiki.rendering.block.SectionBlock)3 WikiPrinter (org.xwiki.rendering.renderer.printer.WikiPrinter)3 Reader (java.io.Reader)2 StringReader (java.io.StringReader)2 List (java.util.List)2 Expectations (org.jmock.Expectations)2 Mockery (org.jmock.Mockery)2