/*
* Copyright (c) 2014 Nuxeo SA (http://nuxeo.com/) and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Florent Guillaume
*/
package org.nuxeo.ecm.core;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.Map;
import org.junit.Test;
import org.nuxeo.ecm.core.api.DocumentModel;
import org.nuxeo.ecm.core.api.DocumentModelList;
import org.nuxeo.ecm.core.api.blobholder.BlobHolder;
import org.nuxeo.ecm.core.api.impl.blob.StringBlob;
import org.nuxeo.ecm.core.storage.sql.DatabaseHelper;
import org.nuxeo.ecm.core.storage.sql.DatabaseMySQL;
import org.nuxeo.ecm.core.storage.sql.DatabaseSQLServer;
import org.nuxeo.ecm.core.storage.sql.TXSQLRepositoryTestCase;
import org.nuxeo.runtime.transaction.TransactionHelper;
public class TestSQLBinariesIndexingOverride extends TXSQLRepositoryTestCase {
@Override
protected void deployRepositoryContrib() throws Exception {
super.deployRepositoryContrib();
deployContrib("org.nuxeo.ecm.core.test.tests",
"OSGI-INF/test-override-indexing-contrib.xml");
deployBundle("org.nuxeo.ecm.core.convert");
deployBundle("org.nuxeo.ecm.core.convert.plugins");
}
@Test
public void testTwoBinaryIndexes() throws Exception {
DocumentModelList res;
DocumentModel doc = session.createDocumentModel("/", "source", "File");
BlobHolder holder = doc.getAdapter(BlobHolder.class);
holder.setBlob(new StringBlob("test"));
doc = session.createDocument(doc);
session.save();
closeSession();
TransactionHelper.commitOrRollbackTransaction();
waitForFulltextIndexing();
TransactionHelper.startTransaction();
openSession();
// main index
res = session.query("SELECT * FROM Document WHERE ecm:fulltext = 'test'");
assertEquals(1, res.size());
// other index
res = session.query("SELECT * FROM Document WHERE ecm:fulltext_binaries = 'test'");
assertEquals(1, res.size());
}
@Test
public void testGetBinaryFulltext() throws Exception {
DocumentModelList res;
DocumentModel doc = session.createDocumentModel("/", "source", "File");
BlobHolder holder = doc.getAdapter(BlobHolder.class);
holder.setBlob(new StringBlob("test"));
doc = session.createDocument(doc);
session.save();
closeSession();
TransactionHelper.commitOrRollbackTransaction();
waitForFulltextIndexing();
TransactionHelper.startTransaction();
openSession();
// main index
res = session.query("SELECT * FROM Document WHERE ecm:fulltext = 'test'");
assertEquals(1, res.size());
Map<String, String> map = session.getBinaryFulltext(res.get(0).getRef());
assertTrue(map.containsValue("test"));
if (! (DatabaseHelper.DATABASE instanceof DatabaseMySQL
|| DatabaseHelper.DATABASE instanceof DatabaseSQLServer)) {
// we have 2 binaries field
assertTrue(map.containsKey("binarytext"));
assertTrue(map.containsKey("binarytext_binaries"));
assertEquals("test", map.get("binarytext"));
assertEquals("test", map.get("binarytext_binaries"));
}
}
}