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);
}
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);
}
Aggregations