Author: sdumitriu
Date: 2008-02-09 12:43:13 +0100 (Sat, 09 Feb 2008)
New Revision: 7464

Modified:
   
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/XWikiTest.java
Log:
XWIKI-2096: Allow skin document attachments to override/provide templates
XWIKI-2098: Make the way parseTemplate considers where to find a template 
consistent with the way SkinAction does that
Adding unit tests


Modified: 
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/XWikiTest.java
===================================================================
--- 
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/XWikiTest.java 
    2008-02-09 11:09:34 UTC (rev 7463)
+++ 
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/XWikiTest.java 
    2008-02-09 11:43:13 UTC (rev 7464)
@@ -29,7 +29,9 @@
 import org.jmock.core.Invocation;
 import org.jmock.core.stub.CustomStub;
 
+import com.xpn.xwiki.doc.XWikiAttachment;
 import com.xpn.xwiki.doc.XWikiDocument;
+import com.xpn.xwiki.objects.BaseObject;
 import com.xpn.xwiki.store.XWikiHibernateStore;
 import com.xpn.xwiki.store.XWikiHibernateVersioningStore;
 import com.xpn.xwiki.store.XWikiStoreInterface;
@@ -96,8 +98,7 @@
             XWikiContext.class}, new Object[] {this.xwiki, this.context});
         
this.mockXWikiVersioningStore.stubs().method("getXWikiDocumentArchive").will(
             returnValue(null));
-        this.mockXWikiVersioningStore.stubs().method("resetRCSArchive").will(
-            returnValue(null));
+        
this.mockXWikiVersioningStore.stubs().method("resetRCSArchive").will(returnValue(null));
 
         this.xwiki.setStore((XWikiStoreInterface) mockXWikiStore.proxy());
         this.xwiki.setVersioningStore((XWikiVersioningStoreInterface) 
mockXWikiVersioningStore
@@ -142,4 +143,63 @@
 
         assertTrue(copy.getCreationDate().equals(sourceCreationDate));
     }
+
+    public void testParseTemplateConsidersObjectField() throws XWikiException
+    {
+        XWikiDocument skinClass = new XWikiDocument("XWiki", "XWikiSkins");
+        skinClass.getxWikiClass().addTextAreaField("template.vm", "template", 
80, 20);
+        xwiki.saveDocument(skinClass, context);
+        XWikiDocument skin = new XWikiDocument("XWiki", "Skin");
+        BaseObject obj = skin.newObject("XWiki.XWikiSkins", context);
+        obj.setLargeStringValue("template.vm", "parsing a field");
+        xwiki.saveDocument(skin, context);
+        context.put("skin", "XWiki.Skin");
+        assertEquals("XWiki.Skin", xwiki.getSkin(context));
+        assertFalse(xwiki.getDocument("XWiki.Skin", context).isNew());
+        assertEquals(skin, xwiki.getDocument("XWiki.Skin", context));
+        assertEquals("parsing a field", xwiki.parseTemplate("template.vm", 
context));
+    }
+
+    /**
+     * See XWIKI-2096
+     */
+    public void testParseTemplateConsidersAttachment() throws XWikiException
+    {
+        XWikiDocument skin = new XWikiDocument("XWiki", "Skin");
+        XWikiAttachment attachment = new XWikiAttachment();
+        skin.getAttachmentList().add(attachment);
+        attachment.setContent("parsing an attachment".getBytes());
+        attachment.setFilename("template.vm");
+        attachment.setDoc(skin);
+        xwiki.saveDocument(skin, context);
+        context.put("skin", "XWiki.Skin");
+        assertEquals("XWiki.Skin", xwiki.getSkin(context));
+        assertFalse(xwiki.getDocument("XWiki.Skin", context).isNew());
+        assertEquals(skin, xwiki.getDocument("XWiki.Skin", context));
+        assertEquals("parsing an attachment", 
xwiki.parseTemplate("template.vm", context));
+    }
+
+    /**
+     * See XWIKI-2098
+     */
+    public void testParseTemplateConsidersObjectFieldBeforeAttachment() throws 
XWikiException
+    {
+        XWikiDocument skinClass = new XWikiDocument("XWiki", "XWikiSkins");
+        skinClass.getxWikiClass().addTextAreaField("template.vm", "template", 
80, 20);
+        xwiki.saveDocument(skinClass, context);
+        XWikiDocument skin = new XWikiDocument("XWiki", "Skin");
+        BaseObject obj = skin.newObject("XWiki.XWikiSkins", context);
+        obj.setLargeStringValue("template.vm", "parsing a field");
+        XWikiAttachment attachment = new XWikiAttachment();
+        skin.getAttachmentList().add(attachment);
+        attachment.setContent("parsing an attachment".getBytes());
+        attachment.setFilename("template.vm");
+        attachment.setDoc(skin);
+        xwiki.saveDocument(skin, context);
+        context.put("skin", "XWiki.Skin");
+        assertEquals("XWiki.Skin", xwiki.getSkin(context));
+        assertFalse(xwiki.getDocument("XWiki.Skin", context).isNew());
+        assertEquals(skin, xwiki.getDocument("XWiki.Skin", context));
+        assertEquals("parsing a field", xwiki.parseTemplate("template.vm", 
context));
+    }
 }

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to