package com.celements.filebase; import static org.easymock.EasyMock.*; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import org.xwiki.configuration.ConfigurationSource; import org.xwiki.model.reference.DocumentReference; import com.celements.common.test.AbstractBridgedComponentTestCase; import com.celements.filebase.exceptions.FileBaseLoadException; import com.celements.model.access.IModelAccessFacade; import com.celements.model.access.exception.DocumentLoadException; import com.xpn.xwiki.doc.XWikiDocument; import com.xpn.xwiki.web.Utils; public class SingleDocFileBaseServiceTest extends AbstractBridgedComponentTestCase { private SingleDocFileBaseService fbService; @Before public void setUp_SingleDocFileBaseService() throws Exception { fbService = (SingleDocFileBaseService) Utils.getComponent(IFileBaseServiceRole.class, SingleDocFileBaseService.FILEBASE_SINGLE_DOC); } @Test public void test_getFileBaseDoc_noConfig() { replayDefault(); try { fbService.getFileBaseDoc(); fail("Expected FileBaseLoadException"); } catch (FileBaseLoadException fble) { // expected outcome } verifyDefault(); } @Test public void test_getFileBaseDoc_configMinus() { fbService.configuration = createMockAndAddToDefault(ConfigurationSource.class); expect(fbService.configuration.getProperty(eq( SingleDocFileBaseService.FILEBASE_CONFIG_FIELD))).andReturn("-"); replayDefault(); try { fbService.getFileBaseDoc(); fail("Expected FileBaseLoadException"); } catch (FileBaseLoadException fble) { // expected outcome } verifyDefault(); } @Test public void test_getFileBaseDoc_configDocLoadFail() throws DocumentLoadException { String spcName = "FBSpace"; String docName = "FBDoc"; DocumentReference fileBaseDocRef = new DocumentReference(getContext().getDatabase(), spcName, docName); fbService.configuration = createMockAndAddToDefault(ConfigurationSource.class); expect(fbService.configuration.getProperty(eq( SingleDocFileBaseService.FILEBASE_CONFIG_FIELD))).andReturn(spcName + "." + docName); fbService.modelAccess = createMockAndAddToDefault(IModelAccessFacade.class); expect(fbService.modelAccess.getOrCreateDocument(eq(fileBaseDocRef))).andThrow( new DocumentLoadException(fileBaseDocRef)); replayDefault(); try { fbService.getFileBaseDoc(); fail("Expected FileBaseLoadException"); } catch (FileBaseLoadException fble) { // expected outcome } verifyDefault(); } @Test public void test_getFileBaseDoc_configDoc() throws Exception { String spcName = "FBSpace"; String docName = "FBDoc"; DocumentReference fileBaseDocRef = new DocumentReference(getContext().getDatabase(), spcName, docName); XWikiDocument doc = new XWikiDocument(fileBaseDocRef); fbService.configuration = createMockAndAddToDefault(ConfigurationSource.class); expect(fbService.configuration.getProperty(eq( SingleDocFileBaseService.FILEBASE_CONFIG_FIELD))).andReturn(spcName + "." + docName); fbService.modelAccess = createMockAndAddToDefault(IModelAccessFacade.class); expect(fbService.modelAccess.getOrCreateDocument(eq(fileBaseDocRef))).andReturn(doc); replayDefault(); XWikiDocument resultDoc = fbService.getFileBaseDoc(); verifyDefault(); assertEquals(doc.getDocumentReference(), resultDoc.getDocumentReference()); } }