package com.celements.web.plugin.cmd; import static org.easymock.EasyMock.*; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import org.xwiki.model.reference.DocumentReference; import com.celements.common.test.AbstractBridgedComponentTestCase; import com.celements.navigation.cmd.MultilingualMenuNameCommand; import com.xpn.xwiki.XWiki; import com.xpn.xwiki.XWikiException; import com.xpn.xwiki.doc.XWikiDocument; import com.xpn.xwiki.objects.BaseObject; public class DocHeaderTitleCommandTest extends AbstractBridgedComponentTestCase { DocHeaderTitleCommand command; DocumentReference docRef; XWikiDocument doc; XWiki wiki; @Before public void setUp_DocHeaderTitleCommandTest() throws Exception { command = new DocHeaderTitleCommand(); docRef = new DocumentReference(getContext().getDatabase(), "Content", "Home"); doc = createMock(XWikiDocument.class); getContext().setDoc(doc); wiki = createMock(XWiki.class); getContext().setWiki(wiki); } @Test public void testGetDocHeaderTitle_doc_theDoc_sameSpace() throws XWikiException { String spacePrefTitle = " - " + docRef.getLastSpaceReference().getName(); expect(wiki.getDocument(eq(docRef), same(getContext()))).andReturn(doc); expect(doc.getTranslatedDocument(same(getContext()))).andReturn(doc); expect(doc.getTitle()).andReturn("").anyTimes(); DocumentReference objRef = new DocumentReference(getContext().getDatabase(), "Content", "Title"); BaseObject obj = new BaseObject(); expect(doc.getXObject(eq(objRef))).andReturn(obj); MultilingualMenuNameCommand mmnc = createMock(MultilingualMenuNameCommand.class); command.menuNameCmd = mmnc; expect(mmnc.getMultilingualMenuNameOnly(eq("Content.Home"), eq("de"), eq(false), same( getContext()))).andReturn("Home"); expect(wiki.getSpacePreference(eq("title"), eq(docRef.getLastSpaceReference().getName()), eq( ""), same(getContext()))).andReturn(spacePrefTitle).anyTimes(); expect(wiki.parseContent(eq(spacePrefTitle), same(getContext()))).andReturn(spacePrefTitle); replay(doc, mmnc, wiki); assertEquals(docRef.getName() + spacePrefTitle, command.getDocHeaderTitle(docRef)); verify(doc, mmnc, wiki); } @Test public void testGetDocHeaderTitle_doc_theDoc_differentSpace() throws XWikiException { DocumentReference theDocRef = new DocumentReference(getContext().getDatabase(), "TheDocSpace", "TheDoc"); String spacePrefTitle = " - " + theDocRef.getLastSpaceReference().getName(); XWikiDocument theDoc = createMock(XWikiDocument.class); expect(wiki.getDocument(eq(theDocRef), same(getContext()))).andReturn(theDoc); expect(theDoc.getTranslatedDocument(same(getContext()))).andReturn(theDoc); expect(theDoc.getTitle()).andReturn("").anyTimes(); DocumentReference objRef = new DocumentReference(getContext().getDatabase(), "Content", "Title"); BaseObject obj = new BaseObject(); expect(theDoc.getXObject(eq(objRef))).andReturn(obj); MultilingualMenuNameCommand mmnc = createMock(MultilingualMenuNameCommand.class); command.menuNameCmd = mmnc; expect(mmnc.getMultilingualMenuNameOnly(eq("TheDocSpace.TheDoc"), eq("de"), eq(false), same( getContext()))).andReturn("TheDoc"); expect(wiki.getSpacePreference(eq("title"), eq(theDocRef.getLastSpaceReference().getName()), eq( ""), same(getContext()))).andReturn(spacePrefTitle).anyTimes(); expect(wiki.parseContent(eq(spacePrefTitle), same(getContext()))).andReturn(spacePrefTitle); replay(doc, mmnc, theDoc, wiki); assertEquals(theDocRef.getName() + " - TheDocSpace", command.getDocHeaderTitle(theDocRef)); verify(doc, mmnc, theDoc, wiki); } @Deprecated @Test public void testGetDocHeaderTitle_fullName() throws XWikiException { String spacePrefTitle = " - " + docRef.getLastSpaceReference().getName(); expect(wiki.getDocument(eq(docRef), same(getContext()))).andReturn(doc); expect(doc.getTranslatedDocument(same(getContext()))).andReturn(doc); expect(doc.getTitle()).andReturn("").anyTimes(); DocumentReference objRef = new DocumentReference(getContext().getDatabase(), "Content", "Title"); BaseObject obj = new BaseObject(); expect(doc.getXObject(eq(objRef))).andReturn(obj); MultilingualMenuNameCommand mmnc = createMock(MultilingualMenuNameCommand.class); command.menuNameCmd = mmnc; expect(mmnc.getMultilingualMenuNameOnly(eq("Content.Home"), eq("de"), eq(false), same( getContext()))).andReturn("Home"); expect(wiki.getSpacePreference(eq("title"), eq(docRef.getLastSpaceReference().getName()), eq( ""), same(getContext()))).andReturn(spacePrefTitle).anyTimes(); expect(wiki.parseContent(eq(spacePrefTitle), same(getContext()))).andReturn(spacePrefTitle); replay(doc, mmnc, wiki); assertEquals(docRef.getName() + spacePrefTitle, command.getDocHeaderTitle("Content.Home", getContext())); verify(doc, mmnc, wiki); } }