package org.compass.annotations.test.component.deeplevel2;
import org.compass.annotations.test.AbstractAnnotationsTestCase;
import org.compass.core.CompassHits;
import org.compass.core.CompassQueryBuilder;
import org.compass.core.CompassSession;
import org.compass.core.CompassTransaction;
import org.compass.core.config.CompassConfiguration;
/**
* @author kimchy
*/
public class DeepLevel2Tests extends AbstractAnnotationsTestCase {
protected void addExtraConf(CompassConfiguration conf) {
conf.addClass(A.class).addClass(B.class).addClass(C.class);
}
public void testProperDotPath() {
CompassSession session = openSession();
CompassTransaction tr = session.beginTransaction();
A a = new A();
a.id = 1L;
B b = new B();
b.id = 1L;
C c = new C();
// TODO if we put the @SearchableId on C.id, then the test will break since we don't marshall C twice.
c.id = 1L;
c.property = "cverdi";
a.c = c;
a.b = b;
b.c = c;
session.save(a);
session.save(b);
CompassQueryBuilder queryBuilder = session.queryBuilder();
CompassHits hitsA = queryBuilder.term("A.b.c.property", "cverdi").hits();
CompassHits hitsAB = queryBuilder.term("A.c.property", "cverdi").hits();
CompassHits hitsB = queryBuilder.term("B.c.property", "cverdi").hits();
assertEquals(1, hitsA.getLength());
assertEquals(1, hitsAB.getLength());
assertEquals(1, hitsB.getLength());
tr.commit();
session.close();
}
}