Search in sources :

Example 1 with SheetManager

use of org.xwiki.sheet.SheetManager in project xwiki-platform by xwiki.

the class SheetDocumentDisplayerTest method testPreserveSheetPRWhenDocumentIsNotOnContext.

/**
 * Tests if the programming rights of the sheet are preserved when the document is not on the context.
 *
 * @throws Exception if something wrong happens
 */
@Test
public void testPreserveSheetPRWhenDocumentIsNotOnContext() throws Exception {
    DocumentModelBridge document = mockDocument(DOCUMENT_REFERENCE);
    DocumentModelBridge sheet = mockDocument(SHEET_REFERENCE);
    // We test that the displayed document is put on the context even if the current document is just a different
    // instance of the displayed document. This is needed because the displayed document can have unsaved changes.
    setCurrentDocument(mockDocument(DOCUMENT_REFERENCE));
    // The sheet must be determined and displayed in a new execution context that has the target document as
    // the current document.
    Map<String, Object> backupObjects = new HashMap<String, Object>();
    when(this.modelBridge.pushDocumentInContext(document)).thenReturn(backupObjects);
    SheetManager sheetManager = this.mocker.getInstance(SheetManager.class);
    when(sheetManager.getSheets(document, "view")).thenReturn(Collections.singletonList(SHEET_REFERENCE));
    DocumentModelBridge originalSecurityDoc = mock(DocumentModelBridge.class, "sdoc");
    // Required in order to preserve the programming rights of the sheet.
    when(this.modelBridge.setSecurityDocument(sheet)).thenReturn(originalSecurityDoc);
    XDOM output = new XDOM(Collections.<Block>emptyList());
    DocumentDisplayer documentDisplayer = this.mocker.getInstance(DocumentDisplayer.class);
    when(documentDisplayer.display(eq(sheet), any(DocumentDisplayerParameters.class))).thenReturn(output);
    assertSame(output, this.mocker.getComponentUnderTest().display(document, new DocumentDisplayerParameters()));
    // The security document must be reverted.
    verify(this.modelBridge).setSecurityDocument(originalSecurityDoc);
    // The previous execution context must be restored.
    verify(this.documentAccessBridge).popDocumentFromContext(backupObjects);
}
Also used : DocumentDisplayerParameters(org.xwiki.display.internal.DocumentDisplayerParameters) DocumentDisplayer(org.xwiki.display.internal.DocumentDisplayer) XDOM(org.xwiki.rendering.block.XDOM) DocumentModelBridge(org.xwiki.bridge.DocumentModelBridge) HashMap(java.util.HashMap) SheetManager(org.xwiki.sheet.SheetManager) Test(org.junit.Test)

Example 2 with SheetManager

use of org.xwiki.sheet.SheetManager in project xwiki-platform by xwiki.

the class SheetDocumentDisplayerTest method testPreserveSheetPRWhenDocumentIsOnContext.

/**
 * Tests if the programming rights of the sheet are preserved when the document is already on the context.
 *
 * @throws Exception if something wrong happens
 */
@Test
public void testPreserveSheetPRWhenDocumentIsOnContext() throws Exception {
    DocumentModelBridge document = mockDocument(DOCUMENT_REFERENCE);
    DocumentModelBridge sheet = mockDocument(SHEET_REFERENCE);
    setCurrentDocument(document);
    SheetManager sheetManager = this.mocker.getInstance(SheetManager.class);
    when(sheetManager.getSheets(document, "view")).thenReturn(Collections.singletonList(SHEET_REFERENCE));
    DocumentModelBridge originalSecurityDoc = mock(DocumentModelBridge.class, "sdoc");
    // Required in order to preserve the programming rights of the sheet.
    when(this.modelBridge.setSecurityDocument(sheet)).thenReturn(originalSecurityDoc);
    XDOM output = new XDOM(Collections.<Block>emptyList());
    DocumentDisplayer documentDisplayer = this.mocker.getInstance(DocumentDisplayer.class);
    when(documentDisplayer.display(eq(sheet), any(DocumentDisplayerParameters.class))).thenReturn(output);
    assertSame(output, this.mocker.getComponentUnderTest().display(document, new DocumentDisplayerParameters()));
    // The security document must be reverted.
    verify(this.modelBridge).setSecurityDocument(originalSecurityDoc);
}
Also used : DocumentDisplayerParameters(org.xwiki.display.internal.DocumentDisplayerParameters) DocumentDisplayer(org.xwiki.display.internal.DocumentDisplayer) XDOM(org.xwiki.rendering.block.XDOM) DocumentModelBridge(org.xwiki.bridge.DocumentModelBridge) SheetManager(org.xwiki.sheet.SheetManager) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)2 DocumentModelBridge (org.xwiki.bridge.DocumentModelBridge)2 DocumentDisplayer (org.xwiki.display.internal.DocumentDisplayer)2 DocumentDisplayerParameters (org.xwiki.display.internal.DocumentDisplayerParameters)2 XDOM (org.xwiki.rendering.block.XDOM)2 SheetManager (org.xwiki.sheet.SheetManager)2 HashMap (java.util.HashMap)1