from__future__importwith_statementimportsocketfromcubicweb.devtoolsimportApptestConfigurationfromcubicweb.devtools.testlibimportCubicWebTCfromcubicweb.selectorsimportis_instancefromcubicweb.entities.adaptersimportIFTIndexableAdapterclassPostgresFTITC(CubicWebTC):config=ApptestConfiguration('data',sourcefile='sources_fti')defsetUp(self):ifnotsocket.gethostname().endswith('.logilab.fr'):self.skipTest('XXX require logilab configuration')super(PostgresFTITC,self).setUp()deftest_occurence_count(self):req=self.request()c1=req.create_entity('Card',title=u'c1',content=u'cubicweb cubicweb cubicweb')c2=req.create_entity('Card',title=u'c3',content=u'cubicweb')c3=req.create_entity('Card',title=u'c2',content=u'cubicweb cubicweb')self.commit()self.assertEqual(req.execute('Card X ORDERBY FTIRANK(X) DESC WHERE X has_text "cubicweb"').rows,[[c1.eid],[c3.eid],[c2.eid]])deftest_attr_weight(self):classCardIFTIndexableAdapter(IFTIndexableAdapter):__select__=is_instance('Card')attr_weight={'title':'A'}withself.temporary_appobjects(CardIFTIndexableAdapter):req=self.request()c1=req.create_entity('Card',title=u'c1',content=u'cubicweb cubicweb cubicweb')c2=req.create_entity('Card',title=u'c2',content=u'cubicweb cubicweb')c3=req.create_entity('Card',title=u'cubicweb',content=u'autre chose')self.commit()self.assertEqual(req.execute('Card X ORDERBY FTIRANK(X) DESC WHERE X has_text "cubicweb"').rows,[[c3.eid],[c1.eid],[c2.eid]])deftest_entity_weight(self):classPersonneIFTIndexableAdapter(IFTIndexableAdapter):__select__=is_instance('Personne')entity_weight=2.0withself.temporary_appobjects(PersonneIFTIndexableAdapter):req=self.request()c1=req.create_entity('Personne',nom=u'c1',prenom=u'cubicweb')c2=req.create_entity('Comment',content=u'cubicweb cubicweb',comments=c1)c3=req.create_entity('Comment',content=u'cubicweb cubicweb cubicweb',comments=c1)self.commit()self.assertEqual(req.execute('Any X ORDERBY FTIRANK(X) DESC WHERE X has_text "cubicweb"').rows,[[c1.eid],[c3.eid],[c2.eid]])if__name__=='__main__':fromlogilab.common.testlibimportunittest_mainunittest_main()