package com.celements.collections.service; import static org.easymock.EasyMock.*; import static org.junit.Assert.*; import java.util.Arrays; import java.util.List; import org.junit.Before; import org.junit.Test; import org.xwiki.context.Execution; import org.xwiki.model.reference.DocumentReference; import org.xwiki.script.service.ScriptService; import com.celements.collections.ICollectionsService; import com.celements.common.test.AbstractBridgedComponentTestCase; import com.xpn.xwiki.XWiki; import com.xpn.xwiki.XWikiContext; import com.xpn.xwiki.XWikiException; import com.xpn.xwiki.doc.XWikiDocument; import com.xpn.xwiki.objects.BaseObject; import com.xpn.xwiki.user.api.XWikiRightService; import com.xpn.xwiki.web.Utils; public class CollectionsScriptServiceTest extends AbstractBridgedComponentTestCase { private CollectionsScriptService collScriptService; private XWikiContext context; private XWiki xwiki; private XWikiRightService mockRightService; private ICollectionsService mockCollService; @Before public void setUp_CollectionsScriptServiceTest() throws Exception { context = getContext(); xwiki = createMock(XWiki.class); context.setWiki(xwiki); mockRightService = createMock(XWikiRightService.class); expect(xwiki.getRightService()).andReturn(mockRightService).anyTimes(); collScriptService = new CollectionsScriptService(); mockCollService = createMock(ICollectionsService.class); collScriptService.collectionsService = mockCollService; collScriptService.execution = Utils.getComponent(Execution.class); } @Test public void testComponentAvailable() { assertNotNull(Utils.getComponent(ScriptService.class, "collections")); } @Test public void testGetObjectsOrdered() throws XWikiException { DocumentReference docRef = new DocumentReference(context.getDatabase(), "MySpace", "MyPage"); XWikiDocument xdoc = new XWikiDocument(docRef); DocumentReference classRef = new DocumentReference(context.getDatabase(), "Classes", "MyClass"); expect(xwiki.getDocument(same(docRef), same(context))).andReturn(xdoc).once(); BaseObject expectedBO = new BaseObject(); expectedBO.setStringValue("myField", "abcd"); List<BaseObject> expResultList = Arrays.asList(expectedBO); expect(mockCollService.getObjectsOrdered(same(xdoc), eq(classRef), eq("myField"), eq(true), (String) isNull(), eq(false))).andReturn(expResultList); replayAll(); List<com.xpn.xwiki.api.Object> resultList = collScriptService.getObjectsOrdered(docRef, classRef, "myField", true); assertNotNull(resultList); assertEquals(1, resultList.size()); assertEquals("abcd", resultList.get(0).getProperty("myField").getValue()); verifyAll(); } @Test public void testGetObjectsOrdered_orderByTwoFields() throws XWikiException { DocumentReference docRef = new DocumentReference(context.getDatabase(), "MySpace", "MyPage"); XWikiDocument xdoc = new XWikiDocument(docRef); DocumentReference classRef = new DocumentReference(context.getDatabase(), "Classes", "MyClass"); expect(xwiki.getDocument(same(docRef), same(context))).andReturn(xdoc).once(); BaseObject expectedBO = new BaseObject(); expectedBO.setStringValue("myField", "abcd"); List<BaseObject> expResultList = Arrays.asList(expectedBO); expect(mockCollService.getObjectsOrdered(same(xdoc), eq(classRef), eq("myField"), eq(true), eq( "myField2"), eq(false))).andReturn(expResultList); replayAll(); List<com.xpn.xwiki.api.Object> resultList = collScriptService.getObjectsOrdered(docRef, classRef, "myField", true, "myField2", false); assertNotNull(resultList); assertEquals(1, resultList.size()); assertEquals("abcd", resultList.get(0).getProperty("myField").getValue()); verifyAll(); } private void replayAll(Object... mocks) { replay(xwiki, mockRightService, mockCollService); replay(mocks); } private void verifyAll(Object... mocks) { verify(xwiki, mockRightService, mockCollService); verify(mocks); } }