def test_edit_spec_name(self): pool = InstancePool() dbp = DBPool(self.env, pool) dbp.load_spec("Car") Car = dbp.pool.get_item("Car") # create three more versions Car._is_modified = True dbp.save('me', 'a new version', '127.0.0.1') Car._is_modified = True dbp.save('me', 'a new version', '127.0.0.1') Car._is_modified = True dbp.save('me', 'a new version', '127.0.0.1') # so, there should be 4 versions now ch = [(version, timestamp, author, ipnr, comment) for version, timestamp, author, ipnr, comment in dbp.get_history(Car)] self.assertEqual(len(ch), 4) # edit the name Car._replace_name("Automobile") dbp.save('me', 'a couple more instances', '127.0.0.1') # querying by the new name should render 5 versions self.assertEqual(Car.get_name(), "Automobile") ch = [(version, timestamp, author, ipnr, comment) for version, timestamp, author, ipnr, comment in dbp.get_history(Car)] self.assertEqual(len(ch), 5)
def test_retrieve_history(self): # make change pool = InstancePool() dbp = DBPool(self.env, pool) dbp.load_artifact(self.lightningMcQueen.get_id()) lm = pool.get_item(self.lightningMcQueen.get_id()) lm.set_value('License', 'GO-42-42') dbp.save('me', 'added license information', '127.0.0.1') # reload and inspect pool = InstancePool() dbp = DBPool(self.env, pool) dbp.load_artifact(self.lightningMcQueen.get_id()) lm = pool.get_item(self.lightningMcQueen.get_id()) h = [(version, timestamp, author, ipnr, comment) for version, timestamp, author, ipnr, comment in dbp.get_history(lm)] self.assertEqual(len(h), 2)
def build_saved_and_reloaded_pool(testcase): testcase.env = EnvironmentStub(enable=['trac.*', 'AdaptiveArtifacts.*', 'AdaptiveArtifacts.persistence.db.*']) Setup(testcase.env).upgrade_environment(testcase.env.get_db_cnx()) # this works as far as no one inherits from MetaModelInstancesStructureAfterLoad and ModelInstancesStructureAfterLoad super(testcase.__class__, testcase).setUp() dbp = DBPool(testcase.env, testcase.pool) dbp.save('anonymous',"","120.0.0.1") new_pool = InstancePool() new_dbp = DBPool(testcase.env, new_pool) for instance in testcase.pool.get_instances_of(Instance.get_name()): new_dbp.load_artifact(instance.get_id()) for entity in testcase.pool.get_instances_of(Entity.get_name()): new_dbp.load_spec(entity.get_name()) testcase.pool = new_pool
def setUp(self): self.env = EnvironmentStub(enable=['trac.*', 'AdaptiveArtifacts.*', 'AdaptiveArtifacts.persistence.db.*']) Setup(self.env).upgrade_environment(self.env.get_db_cnx()) self.Vehicle = Entity(name="Vehicle") self.Car = Entity(name="Car", bases=(self.Vehicle,), attributes=[Attribute(name="Wheels", multiplicity=4, atype=str)] ) self.lightningMcQueen = self.Car( values={"Wheels": ['front left wheel', 'front right wheel', 'rear left wheel', 'front right wheel']} ) pool = InstancePool() pool.add(self.Vehicle) pool.add(self.Car) pool.add(self.lightningMcQueen) dbp = DBPool(self.env, pool) dbp.save('anonymous',"","120.0.0.1")
def test_load_artifacts_of_spec(self): # add a couple more instances pool = InstancePool() dbp = DBPool(self.env, pool) dbp.load_specs() car1 = self.Car(values={"License": "GO-42-42"}) plane2 = self.Vehicle(values={"License": "GO-55-55"}) pool.add(car1) pool.add(plane2) dbp.save('me', 'a couple more instances', '127.0.0.1') # load cars only pool = InstancePool() dbp = DBPool(self.env, pool) dbp.load_artifacts_of(self.Car.get_name()) self.assertEqual(len(pool.get_items((0,))), 2) self.assertTrue(not pool.get_item(self.lightningMcQueen.get_id()) is None) self.assertTrue(not pool.get_item(car1.get_id()) is None)