You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2013/11/05 23:03:10 UTC
svn commit: r1539149 -
/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/query/QueryInFolderTest.java
Author: fmui
Date: Tue Nov 5 22:03:10 2013
New Revision: 1539149
URL: http://svn.apache.org/r1539149
Log:
TCK: improved IN_FOLDER test
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/query/QueryInFolderTest.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/query/QueryInFolderTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/query/QueryInFolderTest.java?rev=1539149&r1=1539148&r2=1539149&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/query/QueryInFolderTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/query/QueryInFolderTest.java Tue Nov 5 22:03:10 2013
@@ -21,10 +21,14 @@ package org.apache.chemistry.opencmis.tc
import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.SKIPPED;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
+import org.apache.chemistry.opencmis.client.api.Document;
import org.apache.chemistry.opencmis.client.api.FileableCmisObject;
import org.apache.chemistry.opencmis.client.api.Folder;
+import org.apache.chemistry.opencmis.client.api.ObjectId;
import org.apache.chemistry.opencmis.client.api.QueryResult;
import org.apache.chemistry.opencmis.client.api.QueryStatement;
import org.apache.chemistry.opencmis.client.api.Session;
@@ -35,6 +39,13 @@ import org.apache.chemistry.opencmis.tck
public class QueryInFolderTest extends AbstractQueryTest {
+ private static final String CONTENT = "TCK test content.";
+
+ private static final int LEVEL1_DOCS = 5;
+ private static final int LEVEL1_FOLDERS = 5;
+ private static final int LEVEL2_DOCS = 5;
+ private static final int LEVEL2_FOLDERS = 5;
+
@Override
public void init(Map<String, String> parameters) {
super.init(parameters);
@@ -45,30 +56,68 @@ public class QueryInFolderTest extends A
@Override
public void run(Session session) {
if (supportsQuery(session) && !isFulltextOnly(session)) {
- doQuery(session, "cmis:document", false);
- doQuery(session, "cmis:document", true);
- doQuery(session, "cmis:folder", false);
- doQuery(session, "cmis:folder", true);
+ // create a test folder
+ Folder testFolder = createTestFolder(session);
+
+ try {
+ Set<String> topLevelDocs = new HashSet<String>();
+ Set<String> topLevelFolders = new HashSet<String>();
+
+ // create documents
+ for (int i = 0; i < LEVEL1_DOCS; i++) {
+ Document newDocument = createDocument(session, testFolder, "doc" + i, CONTENT);
+ topLevelDocs.add(newDocument.getId());
+ }
+
+ // create folders
+ for (int i = 0; i < LEVEL1_FOLDERS; i++) {
+ Folder newFolder = createFolder(session, testFolder, "folder" + i);
+ topLevelFolders.add(newFolder.getId());
+
+ for (int j = 0; j < LEVEL2_DOCS; j++) {
+ createDocument(session, newFolder, "doc" + j, CONTENT);
+ }
+
+ for (int j = 0; j < LEVEL2_FOLDERS; j++) {
+ createFolder(session, newFolder, "folder" + j);
+ }
+ }
+
+ doQuery(session, testFolder, "cmis:document", false, topLevelDocs, topLevelFolders);
+ doQuery(session, testFolder, "cmis:document", true, topLevelDocs, topLevelFolders);
+ doQuery(session, testFolder, "cmis:folder", false, topLevelDocs, topLevelFolders);
+ doQuery(session, testFolder, "cmis:folder", true, topLevelDocs, topLevelFolders);
+ } finally {
+ // delete the test folder
+ deleteTestFolder();
+ }
} else {
addResult(createResult(SKIPPED, "Metadata query not supported. Test Skipped!"));
}
}
- private void doQuery(Session session, String type, boolean deep) {
+ private void doQuery(Session session, ObjectId testFolder, String type, boolean deep, Set<String> topLevelDocs,
+ Set<String> topLevelFolders) {
+ CmisTestResult f;
+
String inWhat = (deep ? "IN_TREE" : "IN_FOLDER");
QueryStatement statement = session.createQueryStatement("SELECT ? FROM ? WHERE " + inWhat + "(?)");
statement.setProperty(1, type, PropertyIds.OBJECT_ID);
statement.setType(2, type);
- statement.setString(3, session.getRepositoryInfo().getRootFolderId());
+ statement.setString(3, testFolder.getId());
addResult(createInfoResult("Query: " + statement.toQueryString()));
try {
- for (QueryResult qr : statement.query(false).getPage(10)) {
+ int count = 0;
+
+ for (QueryResult qr : statement.query(false).getPage(100)) {
+ count++;
+
String objectId = qr.getPropertyValueByQueryName("cmis:objectId");
- CmisTestResult f = createResult(FAILURE, inWhat + " query returned an invalid object ID!");
+ f = createResult(FAILURE, inWhat + " query returned an invalid object ID!");
addResult(assertStringNotEmpty(objectId, null, f));
FileableCmisObject object = null;
@@ -80,9 +129,13 @@ public class QueryInFolderTest extends A
}
if (!deep && object != null) {
+ f = createResult(FAILURE, inWhat + " query returned an object that should not be there!");
+ addResult(assertIsTrue(
+ topLevelDocs.contains(object.getId()) || topLevelFolders.contains(object.getId()), null, f));
+
boolean found = false;
for (Folder parent : object.getParents()) {
- if (session.getRepositoryInfo().getRootFolderId().equals(parent.getId())) {
+ if (testFolder.getId().equals(parent.getId())) {
found = true;
break;
}
@@ -90,10 +143,12 @@ public class QueryInFolderTest extends A
if (!found) {
addResult(createResult(FAILURE, inWhat
- + " query returned an object, which hasn't the root folder as a parent folder!"));
+ + " query returned an object, which hasn't the test folder as a parent folder!"));
}
}
}
+
+ addResult(createInfoResult("Hits: " + count));
} catch (CmisBaseException e) {
addResult(createResult(FAILURE,
inWhat + " query failed: " + e.getClass().getSimpleName() + ": " + e.getMessage(), e, false));