[POS-commit] r5330 - in stoqlib/trunk: stoqlib/database

Johan Dahlin jdahlin at async.com.br
Fri Nov 10 13:03:30 BRST 2006


Author: jdahlin
Date: Fri Nov 10 13:03:29 2006
New Revision: 5330

Modified:
   stoqlib/trunk/stoqlib/database/synchronization.py
   stoqlib/trunk/tests/sync/test_sync.py

Log:
Synchronization test facets. Fix a bug that makes sure to synchronize all the facet tables. Part of #2912

Modified: stoqlib/trunk/stoqlib/database/synchronization.py
==============================================================================
--- stoqlib/trunk/stoqlib/database/synchronization.py	(original)
+++ stoqlib/trunk/stoqlib/database/synchronization.py	Fri Nov 10 13:03:29 2006
@@ -465,10 +465,8 @@
         trans.query(cmd)
 
     def _bump_id_sequences(self, station, policy):
-        table_names = []
-        for table_name, table_policy in policy.tables:
-            table = get_table_type_by_name(table_name)
-            table_names.append(table.sqlmeta.table + '_id_seq')
+        table_names = [t.sqlmeta.table + '_id_seq' for t in get_tables(policy)]
+
         branch = station.branch
         # The main branch is assumed to be 1, so out must be at least 2
         if branch.id < 2:

Modified: stoqlib/trunk/tests/sync/test_sync.py
==============================================================================
--- stoqlib/trunk/tests/sync/test_sync.py	(original)
+++ stoqlib/trunk/tests/sync/test_sync.py	Fri Nov 10 13:03:29 2006
@@ -23,7 +23,9 @@
 ##
 
 from stoqlib.database.runtime import get_connection, new_transaction
+from stoqlib.domain.interfaces import IIndividual
 from stoqlib.domain.person import Person
+
 from tests.sync.base import SyncTest
 
 class TestUpdate(SyncTest):
@@ -63,3 +65,37 @@
         self.switch_to_shop()
         self.failUnless(Person.selectOneBy(name="Person 2",
                                            connection=get_connection()))
+
+    def testFacet(self):
+        # Create a person in the shop which is "sleeping"
+        # Create a person in the office which is "working"
+
+        # Shop
+        self.switch_to_shop()
+        trans = new_transaction()
+        person = Person(name="Person 3", connection=trans)
+        person.addFacet(IIndividual, occupation="Sleeping",
+                        connection=trans)
+        trans.commit()
+
+        # Office
+        self.switch_to_office()
+        trans = new_transaction()
+        person = Person(name="Person 4", connection=trans)
+        person.addFacet(IIndividual, occupation="Working",
+                        connection=trans)
+        trans.commit()
+
+        self.update("shop-computer")
+        conn = get_connection()
+        self.failUnless(Person.selectOneBy(name="Person 3", connection=conn))
+        self.failUnless(Person.iselectOneBy(IIndividual, occupation="Sleeping",
+                                            connection=conn))
+
+        # Shop
+        conn = get_connection()
+        self.switch_to_shop()
+        self.failUnless(Person.selectOneBy(name="Person 4",
+                                           connection=conn))
+        self.failUnless(Person.iselectOneBy(IIndividual, occupation="Working",
+                                            connection=conn))


More information about the POS-commit mailing list