Author: sdumitriu
Date: 2008-02-15 01:51:12 +0100 (Fri, 15 Feb 2008)
New Revision: 7740

Modified:
   
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/objects/classes/DBListClassTest.java
   
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/objects/classes/DBTreeListClassTest.java
Log:
XWIKI-2083: Improve the way DBList and DBTreeList generate queries
Added more unit tests.


Modified: 
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/objects/classes/DBListClassTest.java
===================================================================
--- 
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/objects/classes/DBListClassTest.java
       2008-02-15 00:50:47 UTC (rev 7739)
+++ 
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/objects/classes/DBListClassTest.java
       2008-02-15 00:51:12 UTC (rev 7740)
@@ -34,9 +34,6 @@
  */
 public class DBListClassTest extends TestCase
 {
-    private static final String DEFAULT_QUERY =
-        "select doc.name from XWikiDocument doc where 1 = 0";
-
     private XWikiContext context;
 
     protected void setUp() throws Exception
@@ -52,7 +49,7 @@
     {
         DBListClass dblc = new DBListClass();
         assertEquals("", dblc.getSql());
-        assertEquals(DEFAULT_QUERY, dblc.getQuery(context));
+        assertEquals("select doc.name from XWikiDocument doc where 1 = 0", 
dblc.getQuery(context));
     }
 
     public void testGetQueryWithSqlScriptSpecified()
@@ -105,17 +102,18 @@
         DBListClass dblc = new DBListClass();
         dblc.setClassname("XWiki.XWikiUsers");
         dblc.setIdField("doc.name");
-        assertEquals(
-            "select distinct doc.name from XWikiDocument as doc, BaseObject as 
obj where doc.fullName=obj.name and obj.className='XWiki.XWikiUsers'",
-            dblc.getQuery(context));
+        assertEquals("select distinct doc.name from XWikiDocument as doc, 
BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dblc
+            .getQuery(context));
         dblc.setIdField("obj.className");
-        assertEquals(
-            "select distinct obj.className from BaseObject as obj where 
obj.className='XWiki.XWikiUsers'",
-            dblc.getQuery(context));
+        assertEquals("select distinct obj.className from BaseObject as obj"
+            + " where obj.className='XWiki.XWikiUsers'", 
dblc.getQuery(context));
         dblc.setIdField("property");
         assertEquals(
-            "select distinct idprop.value from BaseObject as obj, 
StringProperty as idprop where obj.className='XWiki.XWikiUsers' and 
obj.id=idprop.id.id and idprop.id.name='property'",
-            dblc.getQuery(context));
+            "select distinct idprop.value from BaseObject as obj, 
StringProperty as idprop"
+                + " where obj.className='XWiki.XWikiUsers'"
+                + " and obj.id=idprop.id.id and idprop.id.name='property'", 
dblc
+                .getQuery(context));
     }
 
     public void testGetQueryWithIdAndValueSpecified()
@@ -129,17 +127,17 @@
             .getQuery(context));
         dblc.setValueField("obj.className");
         assertEquals(
-            "select distinct doc.name, obj.className from XWikiDocument as 
doc, BaseObject as obj where doc.fullName=obj.name",
-            dblc.getQuery(context));
+            "select distinct doc.name, obj.className from XWikiDocument as 
doc, BaseObject as obj"
+                + " where doc.fullName=obj.name", dblc.getQuery(context));
         dblc.setValueField("property");
         assertEquals("select distinct doc.name, doc.property from 
XWikiDocument as doc", dblc
             .getQuery(context));
 
         dblc.setIdField("obj.className");
         dblc.setValueField("doc.name");
-        assertEquals(
-            "select distinct obj.className, doc.name from XWikiDocument as 
doc, BaseObject as obj where doc.fullName=obj.name",
-            dblc.getQuery(context));
+        assertEquals("select distinct obj.className, doc.name"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dblc
+            .getQuery(context));
         dblc.setValueField("obj.className");
         assertEquals("select distinct obj.className from BaseObject as obj", 
dblc
             .getQuery(context));
@@ -147,18 +145,18 @@
         assertEquals("select distinct obj.className, obj.id from BaseObject as 
obj", dblc
             .getQuery(context));
         dblc.setValueField("property");
-        assertEquals(
-            "select distinct obj.className, doc.property from XWikiDocument as 
doc, BaseObject as obj where doc.fullName=obj.name",
-            dblc.getQuery(context));
+        assertEquals("select distinct obj.className, doc.property"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dblc
+            .getQuery(context));
 
         dblc.setIdField("property");
         dblc.setValueField("doc.name");
         assertEquals("select distinct doc.property, doc.name from 
XWikiDocument as doc", dblc
             .getQuery(context));
         dblc.setValueField("obj.className");
-        assertEquals(
-            "select distinct doc.property, obj.className from XWikiDocument as 
doc, BaseObject as obj where doc.fullName=obj.name",
-            dblc.getQuery(context));
+        assertEquals("select distinct doc.property, obj.className"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dblc
+            .getQuery(context));
         dblc.setValueField("property");
         assertEquals("select distinct doc.property from XWikiDocument as doc", 
dblc
             .getQuery(context));
@@ -173,56 +171,67 @@
         dblc.setClassname("XWiki.XWikiUsers");
         dblc.setIdField("doc.name");
         dblc.setValueField("doc.name");
-        assertEquals(
-            "select distinct doc.name from XWikiDocument as doc, BaseObject as 
obj where doc.fullName=obj.name and obj.className='XWiki.XWikiUsers'",
-            dblc.getQuery(context));
+        assertEquals("select distinct doc.name from XWikiDocument as doc, 
BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dblc
+            .getQuery(context));
         dblc.setValueField("doc.creator");
         assertEquals(
-            "select distinct doc.name, doc.creator from XWikiDocument as doc, 
BaseObject as obj where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'",
-            dblc.getQuery(context));
+            "select distinct doc.name, doc.creator from XWikiDocument as doc, 
BaseObject as obj"
+                + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dblc
+                .getQuery(context));
         dblc.setValueField("obj.className");
         assertEquals(
-            "select distinct doc.name, obj.className from XWikiDocument as 
doc, BaseObject as obj where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'",
-            dblc.getQuery(context));
+            "select distinct doc.name, obj.className from XWikiDocument as 
doc, BaseObject as obj"
+                + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dblc
+                .getQuery(context));
         dblc.setValueField("property");
-        assertEquals(
-            "select distinct doc.name, valueprop.value from XWikiDocument as 
doc, BaseObject as obj, StringProperty as valueprop where doc.fullName=obj.name 
and obj.className='XWiki.XWikiUsers' and obj.id=valueprop.id.id and 
valueprop.id.name='property'",
-            dblc.getQuery(context));
+        assertEquals("select distinct doc.name, valueprop.value"
+            + " from XWikiDocument as doc, BaseObject as obj, StringProperty 
as valueprop"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=valueprop.id.id and valueprop.id.name='property'", 
dblc
+            .getQuery(context));
 
         dblc.setIdField("obj.className");
         dblc.setValueField("doc.name");
-        assertEquals(
-            "select distinct obj.className, doc.name from XWikiDocument as 
doc, BaseObject as obj where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'",
-            dblc.getQuery(context));
+        assertEquals("select distinct obj.className, doc.name"
+            + " from XWikiDocument as doc, BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dblc
+            .getQuery(context));
         dblc.setValueField("obj.className");
-        assertEquals(
-            "select distinct obj.className from BaseObject as obj where 
obj.className='XWiki.XWikiUsers'",
-            dblc.getQuery(context));
+        assertEquals("select distinct obj.className from BaseObject as obj"
+            + " where obj.className='XWiki.XWikiUsers'", 
dblc.getQuery(context));
         dblc.setValueField("obj.id");
-        assertEquals(
-            "select distinct obj.className, obj.id from BaseObject as obj 
where obj.className='XWiki.XWikiUsers'",
-            dblc.getQuery(context));
+        assertEquals("select distinct obj.className, obj.id from BaseObject as 
obj"
+            + " where obj.className='XWiki.XWikiUsers'", 
dblc.getQuery(context));
         dblc.setValueField("property");
-        assertEquals(
-            "select distinct obj.className, valueprop.value from BaseObject as 
obj, StringProperty as valueprop where obj.className='XWiki.XWikiUsers' and 
obj.id=valueprop.id.id and valueprop.id.name='property'",
-            dblc.getQuery(context));
+        assertEquals("select distinct obj.className, valueprop.value"
+            + " from BaseObject as obj, StringProperty as valueprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=valueprop.id.id and valueprop.id.name='property'", 
dblc
+            .getQuery(context));
 
         dblc.setIdField("property");
         dblc.setValueField("doc.name");
-        assertEquals(
-            "select distinct idprop.value, doc.name from XWikiDocument as doc, 
BaseObject as obj, StringProperty as idprop where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers' and obj.id=idprop.id.id and 
idprop.id.name='property'",
-            dblc.getQuery(context));
+        assertEquals("select distinct idprop.value, doc.name"
+            + " from XWikiDocument as doc, BaseObject as obj, StringProperty 
as idprop"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='property'", 
dblc.getQuery(context));
         dblc.setValueField("obj.className");
-        assertEquals(
-            "select distinct idprop.value, obj.className from BaseObject as 
obj, StringProperty as idprop where obj.className='XWiki.XWikiUsers' and 
obj.id=idprop.id.id and idprop.id.name='property'",
-            dblc.getQuery(context));
+        assertEquals("select distinct idprop.value, obj.className"
+            + " from BaseObject as obj, StringProperty as idprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='property'", 
dblc.getQuery(context));
         dblc.setValueField("property");
-        assertEquals(
-            "select distinct idprop.value from BaseObject as obj, 
StringProperty as idprop where obj.className='XWiki.XWikiUsers' and 
obj.id=idprop.id.id and idprop.id.name='property'",
-            dblc.getQuery(context));
+        assertEquals("select distinct idprop.value"
+            + " from BaseObject as obj, StringProperty as idprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='property'", 
dblc.getQuery(context));
         dblc.setValueField("otherProperty");
-        assertEquals(
-            "select distinct idprop.value, valueprop.value from BaseObject as 
obj, StringProperty as idprop, StringProperty as valueprop where 
obj.className='XWiki.XWikiUsers' and obj.id=idprop.id.id and 
idprop.id.name='property' and obj.id=valueprop.id.id and 
valueprop.id.name='otherProperty'",
-            dblc.getQuery(context));
+        assertEquals("select distinct idprop.value, valueprop.value"
+            + " from BaseObject as obj, StringProperty as idprop, 
StringProperty as valueprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='property'"
+            + " and obj.id=valueprop.id.id and 
valueprop.id.name='otherProperty'", dblc
+            .getQuery(context));
     }
 }

Modified: 
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/objects/classes/DBTreeListClassTest.java
===================================================================
--- 
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/objects/classes/DBTreeListClassTest.java
   2008-02-15 00:50:47 UTC (rev 7739)
+++ 
xwiki-platform/core/trunk/xwiki-core/src/test/java/com/xpn/xwiki/objects/classes/DBTreeListClassTest.java
   2008-02-15 00:51:12 UTC (rev 7740)
@@ -20,16 +20,17 @@
  */
 package com.xpn.xwiki.objects.classes;
 
+import junit.framework.TestCase;
+
+import com.xpn.xwiki.XWiki;
+import com.xpn.xwiki.XWikiConfig;
 import com.xpn.xwiki.XWikiContext;
-import com.xpn.xwiki.XWikiConfig;
-import com.xpn.xwiki.XWiki;
+import com.xpn.xwiki.doc.XWikiDocument;
 import com.xpn.xwiki.store.XWikiHibernateStore;
-import com.xpn.xwiki.doc.XWikiDocument;
-import junit.framework.TestCase;
 
 /**
  * Unit tests for [EMAIL PROTECTED] 
com.xpn.xwiki.objects.classes.DBTreeListClass}.
- *
+ * 
  * @version $Id: $
  */
 public class DBTreeListClassTest extends TestCase
@@ -41,15 +42,346 @@
         this.context = new XWikiContext();
         this.context.setDoc(new XWikiDocument());
         XWikiHibernateStore store = new XWikiHibernateStore("dummy");
-               XWiki xwiki =  new XWiki(new XWikiConfig(), context);
+        XWiki xwiki = new XWiki(new XWikiConfig(), context);
         xwiki.setStore(store);
     }
 
     public void testGetQueryWhenNoSQLSCriptSpecified()
     {
         DBTreeListClass dbtlc = new DBTreeListClass();
-        assertEquals("select idprop.value, idprop.value, idprop.value from 
XWikiDocument as doc, "
-            + "BaseObject as obj, StringProperty as idprop where 
doc.fullName=obj.name and obj.className='' and "
-            + "obj.id=idprop.id.id and idprop.id.name=''", 
dbtlc.getQuery(this.context));
+        assertEquals("select doc.name from XWikiDocument doc where 1 = 0", 
dbtlc
+            .getQuery(this.context));
     }
-}
\ No newline at end of file
+
+    public void testGetQueryWithSqlScriptSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        assertEquals("", dbtlc.getSql());
+        String sql = "select doc.name, doc.title, doc.creator from 
XWikiDocument as doc";
+        dbtlc.setSql(sql);
+        assertEquals(sql, dbtlc.getQuery(context));
+    }
+
+    public void testGetQueryWithClassSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        dbtlc.setClassname("XWiki.XWikiUsers");
+        assertEquals("select distinct doc.fullName, doc.fullName, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dbtlc
+            .getQuery(context));
+    }
+
+    public void testGetQueryWithClassAndParentSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        dbtlc.setClassname("XWiki.XWikiUsers");
+        dbtlc.setParentField("obj.id");
+        assertEquals("select distinct doc.fullName, doc.fullName, obj.id"
+            + " from XWikiDocument as doc, BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dbtlc
+            .getQuery(context));
+    }
+
+    public void testGetQueryWithIdSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        dbtlc.setIdField("doc.name");
+        assertEquals("select distinct doc.name, doc.name, doc.parent from 
XWikiDocument as doc",
+            dbtlc.getQuery(context));
+        dbtlc.setIdField("obj.className");
+        assertEquals("select distinct obj.className, obj.className, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj" + " where 
doc.fullName=obj.name",
+            dbtlc.getQuery(context));
+        dbtlc.setIdField("property");
+        assertEquals("select distinct doc.property, doc.property, doc.parent"
+            + " from XWikiDocument as doc", dbtlc.getQuery(context));
+    }
+
+    public void testGetQueryWithIdAndParentSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        dbtlc.setIdField("doc.name");
+        dbtlc.setParentField("doc.name");
+        assertEquals("select distinct doc.name, doc.name, doc.name from 
XWikiDocument as doc",
+            dbtlc.getQuery(context));
+        dbtlc.setParentField("obj.className");
+        assertEquals("select distinct doc.name, doc.name, obj.className"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dbtlc
+            .getQuery(context));
+        dbtlc.setParentField("property");
+        assertEquals(
+            "select distinct doc.name, doc.name, doc.property from 
XWikiDocument as doc", dbtlc
+                .getQuery(context));
+
+        dbtlc.setIdField("obj.className");
+        dbtlc.setParentField("doc.name");
+        assertEquals("select distinct obj.className, obj.className, doc.name"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dbtlc
+            .getQuery(context));
+        dbtlc.setParentField("obj.className");
+        assertEquals("select distinct obj.className, obj.className, 
obj.className"
+            + " from BaseObject as obj", dbtlc.getQuery(context));
+        dbtlc.setParentField("property");
+        assertEquals("select distinct obj.className, obj.className, 
doc.property"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dbtlc
+            .getQuery(context));
+
+        dbtlc.setIdField("property");
+        dbtlc.setParentField("doc.name");
+        assertEquals("select distinct doc.property, doc.property, doc.name"
+            + " from XWikiDocument as doc", dbtlc.getQuery(context));
+        dbtlc.setParentField("obj.className");
+        assertEquals("select distinct doc.property, doc.property, 
obj.className"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dbtlc
+            .getQuery(context));
+        dbtlc.setParentField("property");
+        assertEquals("select distinct doc.property, doc.property, doc.property"
+            + " from XWikiDocument as doc", dbtlc.getQuery(context));
+        dbtlc.setParentField("property2");
+        assertEquals("select distinct doc.property, doc.property, 
doc.property2"
+            + " from XWikiDocument as doc", dbtlc.getQuery(context));
+    }
+
+    public void testGetQueryWithValueSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        dbtlc.setValueField("doc.name");
+        assertEquals("select distinct doc.name, doc.name, doc.parent from 
XWikiDocument as doc",
+            dbtlc.getQuery(context));
+    }
+
+    public void testGetQueryWithIdAndClassnameSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        dbtlc.setClassname("XWiki.XWikiUsers");
+        dbtlc.setIdField("doc.name");
+        assertEquals("select distinct doc.name, doc.name, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dbtlc
+            .getQuery(context));
+        dbtlc.setIdField("obj.className");
+        assertEquals("select distinct obj.className, obj.className, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dbtlc
+            .getQuery(context));
+        dbtlc.setIdField("property");
+        assertEquals("select distinct idprop.value, idprop.value, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj, StringProperty 
as idprop"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='property'", 
dbtlc.getQuery(context));
+    }
+
+    public void testGetQueryWithIdParentAndClassnameSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        dbtlc.setClassname("XWiki.XWikiUsers");
+        dbtlc.setParentField("doc.name");
+        dbtlc.setIdField("doc.name");
+        assertEquals("select distinct doc.name, doc.name, doc.name"
+            + " from XWikiDocument as doc, BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dbtlc
+            .getQuery(context));
+        dbtlc.setIdField("obj.className");
+        assertEquals("select distinct obj.className, obj.className, doc.name"
+            + " from XWikiDocument as doc, BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dbtlc
+            .getQuery(context));
+        dbtlc.setIdField("property");
+        assertEquals("select distinct idprop.value, idprop.value, doc.name"
+            + " from XWikiDocument as doc, BaseObject as obj, StringProperty 
as idprop"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='property'", 
dbtlc.getQuery(context));
+
+        dbtlc.setParentField("obj.className");
+        dbtlc.setIdField("doc.name");
+        assertEquals("select distinct doc.name, doc.name, obj.className"
+            + " from XWikiDocument as doc, BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dbtlc
+            .getQuery(context));
+        dbtlc.setIdField("obj.className");
+        assertEquals("select distinct obj.className, obj.className, 
obj.className"
+            + " from BaseObject as obj where 
obj.className='XWiki.XWikiUsers'", dbtlc
+            .getQuery(context));
+        dbtlc.setIdField("property");
+        assertEquals("select distinct idprop.value, idprop.value, 
obj.className"
+            + " from BaseObject as obj, StringProperty as idprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='property'", 
dbtlc.getQuery(context));
+
+        dbtlc.setParentField("property");
+        dbtlc.setIdField("doc.name");
+        assertEquals("select distinct doc.name, doc.name, parentprop.value"
+            + " from XWikiDocument as doc, BaseObject as obj, StringProperty 
as parentprop"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=parentprop.id.id and 
parentprop.id.name='property'", dbtlc
+            .getQuery(context));
+        dbtlc.setIdField("obj.className");
+        assertEquals("select distinct obj.className, obj.className, 
parentprop.value"
+            + " from BaseObject as obj, StringProperty as parentprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=parentprop.id.id and 
parentprop.id.name='property'", dbtlc
+            .getQuery(context));
+        dbtlc.setIdField("property");
+        assertEquals("select distinct idprop.value, idprop.value, idprop.value"
+            + " from BaseObject as obj, StringProperty as idprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='property'", 
dbtlc.getQuery(context));
+        dbtlc.setIdField("property2");
+        assertEquals("select distinct idprop.value, idprop.value, 
parentprop.value"
+            + " from BaseObject as obj, StringProperty as idprop, 
StringProperty as parentprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='property2'"
+            + " and obj.id=parentprop.id.id and 
parentprop.id.name='property'", dbtlc
+            .getQuery(context));
+    }
+
+    public void testGetQueryWithIdAndValueSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        dbtlc.setIdField("doc.name");
+        dbtlc.setValueField("doc.name");
+        assertEquals("select distinct doc.name, doc.name, doc.parent"
+            + " from XWikiDocument as doc", dbtlc.getQuery(context));
+        dbtlc.setValueField("doc.creator");
+        assertEquals("select distinct doc.name, doc.creator, doc.parent"
+            + " from XWikiDocument as doc", dbtlc.getQuery(context));
+        dbtlc.setValueField("obj.className");
+        assertEquals("select distinct doc.name, obj.className, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dbtlc
+            .getQuery(context));
+        dbtlc.setValueField("property");
+        assertEquals("select distinct doc.name, doc.property, doc.parent"
+            + " from XWikiDocument as doc", dbtlc.getQuery(context));
+
+        dbtlc.setIdField("obj.className");
+        dbtlc.setValueField("doc.name");
+        assertEquals("select distinct obj.className, doc.name, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dbtlc
+            .getQuery(context));
+        dbtlc.setValueField("obj.className");
+        assertEquals("select distinct obj.className, obj.className, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dbtlc
+            .getQuery(context));
+        dbtlc.setValueField("obj.id");
+        assertEquals("select distinct obj.className, obj.id, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dbtlc
+            .getQuery(context));
+        dbtlc.setValueField("property");
+        assertEquals("select distinct obj.className, doc.property, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dbtlc
+            .getQuery(context));
+
+        dbtlc.setIdField("property");
+        dbtlc.setValueField("doc.name");
+        assertEquals("select distinct doc.property, doc.name, doc.parent"
+            + " from XWikiDocument as doc", dbtlc.getQuery(context));
+        dbtlc.setValueField("obj.className");
+        assertEquals("select distinct doc.property, obj.className, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dbtlc
+            .getQuery(context));
+        dbtlc.setValueField("property");
+        assertEquals("select distinct doc.property, doc.property, doc.parent"
+            + " from XWikiDocument as doc", dbtlc.getQuery(context));
+        dbtlc.setValueField("otherProperty");
+        assertEquals("select distinct doc.property, doc.otherProperty, 
doc.parent"
+            + " from XWikiDocument as doc", dbtlc.getQuery(context));
+    }
+
+    public void testGetQueryWithIdValueAndParentSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        dbtlc.setIdField("doc.name");
+        dbtlc.setValueField("doc.title");
+        dbtlc.setParentField("doc.web");
+        assertEquals("select distinct doc.name, doc.title, doc.web"
+            + " from XWikiDocument as doc", dbtlc.getQuery(context));
+        dbtlc.setValueField("obj.name");
+        assertEquals("select distinct doc.name, obj.name, doc.web"
+            + " from XWikiDocument as doc, BaseObject as obj where 
doc.fullName=obj.name", dbtlc
+            .getQuery(context));
+        dbtlc.setIdField("obj.className");
+        dbtlc.setParentField("obj.id");
+        assertEquals("select distinct obj.className, obj.name, obj.id"
+            + " from BaseObject as obj", dbtlc.getQuery(context));
+    }
+
+    public void testGetQueryWithIdValueAndClassSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        dbtlc.setClassname("XWiki.XWikiUsers");
+        dbtlc.setIdField("doc.name");
+        dbtlc.setValueField("doc.name");
+        assertEquals("select distinct doc.name, doc.name, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dbtlc
+            .getQuery(context));
+        dbtlc.setValueField("obj.className");
+        assertEquals("select distinct doc.name, obj.className, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dbtlc
+            .getQuery(context));
+        dbtlc.setValueField("property");
+        assertEquals("select distinct doc.name, valueprop.value, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj, StringProperty 
as valueprop"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=valueprop.id.id and valueprop.id.name='property'", 
dbtlc
+            .getQuery(context));
+        dbtlc.setIdField("property");
+        assertEquals("select distinct idprop.value, idprop.value, doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj, StringProperty 
as idprop"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='property'", 
dbtlc.getQuery(context));
+        dbtlc.setIdField("property2");
+        assertEquals("select distinct idprop.value, valueprop.value, 
doc.parent"
+            + " from XWikiDocument as doc, BaseObject as obj,"
+            + " StringProperty as idprop, StringProperty as valueprop"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='property2'"
+            + " and obj.id=valueprop.id.id and valueprop.id.name='property'", 
dbtlc
+            .getQuery(context));
+    }
+
+    public void testGetQueryWithIdValueParentAndClassSpecified()
+    {
+        DBTreeListClass dbtlc = new DBTreeListClass();
+        dbtlc.setClassname("XWiki.XWikiUsers");
+        dbtlc.setIdField("doc.name");
+        dbtlc.setValueField("doc.name");
+        dbtlc.setParentField("doc.name");
+        assertEquals("select distinct doc.name, doc.name, doc.name"
+            + " from XWikiDocument as doc, BaseObject as obj"
+            + " where doc.fullName=obj.name and 
obj.className='XWiki.XWikiUsers'", dbtlc
+            .getQuery(context));
+        dbtlc.setIdField("prop1");
+        dbtlc.setValueField("prop1");
+        dbtlc.setParentField("prop1");
+        assertEquals("select distinct idprop.value, idprop.value, idprop.value"
+            + " from BaseObject as obj, StringProperty as idprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='prop1'", 
dbtlc.getQuery(context));
+        dbtlc.setValueField("prop2");
+        assertEquals("select distinct idprop.value, valueprop.value, 
idprop.value"
+            + " from BaseObject as obj, StringProperty as idprop, 
StringProperty as valueprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='prop1'"
+            + " and obj.id=valueprop.id.id and valueprop.id.name='prop2'", 
dbtlc
+            .getQuery(context));
+        dbtlc.setParentField("prop2");
+        assertEquals("select distinct idprop.value, valueprop.value, 
valueprop.value"
+            + " from BaseObject as obj, StringProperty as idprop, 
StringProperty as valueprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='prop1'"
+            + " and obj.id=valueprop.id.id and valueprop.id.name='prop2'", 
dbtlc
+            .getQuery(context));
+        dbtlc.setParentField("prop3");
+        assertEquals("select distinct idprop.value, valueprop.value, 
parentprop.value"
+            + " from BaseObject as obj, StringProperty as idprop,"
+            + " StringProperty as valueprop, StringProperty as parentprop"
+            + " where obj.className='XWiki.XWikiUsers'"
+            + " and obj.id=idprop.id.id and idprop.id.name='prop1'"
+            + " and obj.id=valueprop.id.id and valueprop.id.name='prop2'"
+            + " and obj.id=parentprop.id.id and parentprop.id.name='prop3'", 
dbtlc
+            .getQuery(context));
+    }
+}

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

Reply via email to