server/test/unittest_checkintegrity.py
branchstable
changeset 5954 987086484876
parent 5424 8ecbcbff9777
child 6631 26c303c3f1aa
--- a/server/test/unittest_checkintegrity.py	Thu Jul 08 15:30:53 2010 +0200
+++ b/server/test/unittest_checkintegrity.py	Mon Jul 12 10:36:28 2010 +0200
@@ -15,28 +15,47 @@
 #
 # You should have received a copy of the GNU Lesser General Public License along
 # with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
-"""
 
-"""
 import sys
 from StringIO import StringIO
 from logilab.common.testlib import TestCase, unittest_main
 from cubicweb.devtools import init_test_database
 
 
-from cubicweb.server.checkintegrity import check
+from cubicweb.server.checkintegrity import check, reindex_entities
 
 class CheckIntegrityTC(TestCase):
-    def test(self):
-        repo, cnx = init_test_database()
+    def setUp(self):
+        self.repo, self.cnx = init_test_database()
+        self.execute = self.cnx.cursor().execute
+        self.session = self.repo._sessions[self.cnx.sessionid]
         sys.stderr = sys.stdout = StringIO()
-        try:
-            check(repo, cnx, ('entities', 'relations', 'text_index', 'metadata'),
-                  reindex=True, fix=True, withpb=False)
-        finally:
-            sys.stderr = sys.__stderr__
-            sys.stdout = sys.__stdout__
-        repo.shutdown()
+
+    def tearDown(self):
+        sys.stderr = sys.__stderr__
+        sys.stdout = sys.__stdout__
+        self.cnx.close()
+        self.repo.shutdown()
+
+    def test_checks(self):
+        check(self.repo, self.cnx, ('entities', 'relations', 'text_index', 'metadata'),
+              reindex=False, fix=True, withpb=False)
+
+    def test_reindex_all(self):
+        self.execute('INSERT Personne X: X nom "toto", X prenom "tutu"')
+        self.session.commit(False)
+        self.failUnless(self.execute('Any X WHERE X has_text "tutu"'))
+        reindex_entities(self.repo.schema, self.session, withpb=False)
+        self.failUnless(self.execute('Any X WHERE X has_text "tutu"'))
+
+    def test_reindex_etype(self):
+        self.execute('INSERT Personne X: X nom "toto", X prenom "tutu"')
+        self.execute('INSERT Affaire X: X ref "toto"')
+        self.session.commit(False)
+        reindex_entities(self.repo.schema, self.session, withpb=False,
+                         etypes=('Personne',))
+        self.failUnless(self.execute('Any X WHERE X has_text "tutu"'))
+        self.failUnless(self.execute('Any X WHERE X has_text "toto"'))
 
 if __name__ == '__main__':
     unittest_main()