public function testWorkingWithCache()
 {
     foreach (DBTestPool::me()->getPool() as $db) {
         DBPool::me()->setDefault($db);
         $item = TestItem::create()->setName('testItem1');
         TestItem::dao()->add($item);
         $encapsulant = TestEncapsulant::create()->setName('testEncapsulant1');
         TestEncapsulant::dao()->add($encapsulant);
         $subItem1 = TestSubItem::create()->setName('testSubItem1')->setEncapsulant($encapsulant)->setItem($item);
         $subItem2 = TestSubItem::create()->setName('testSubItem2')->setEncapsulant($encapsulant)->setItem($item);
         TestSubItem::dao()->add($subItem1);
         TestSubItem::dao()->add($subItem2);
         $items = Criteria::create(TestItem::dao())->getList();
         foreach ($items as $item) {
             foreach ($item->getSubItems()->getList() as $subItem) {
                 $this->assertEquals($subItem->getEncapsulant()->getName(), 'testEncapsulant1');
             }
         }
         $encapsulant = TestEncapsulant::dao()->getById(1);
         $encapsulant->setName('testEncapsulant1_changed');
         TestEncapsulant::dao()->save($encapsulant);
         // drop identityMap
         TestEncapsulant::dao()->dropIdentityMap();
         TestSubItem::dao()->dropIdentityMap();
         TestItem::dao()->dropIdentityMap();
         $items = Criteria::create(TestItem::dao())->getList();
         foreach ($items as $item) {
             foreach ($item->getSubItems()->getList() as $subItem) {
                 $this->assertEquals($subItem->getEncapsulant()->getName(), 'testEncapsulant1_changed');
             }
         }
         // drop identityMap
         TestEncapsulant::dao()->dropIdentityMap();
         TestSubItem::dao()->dropIdentityMap();
         TestItem::dao()->dropIdentityMap();
         $subItem = TestSubItem::dao()->getById(1);
         $this->assertEquals($subItem->getEncapsulant()->getName(), 'testEncapsulant1_changed');
         // drop identityMap
         TestEncapsulant::dao()->dropIdentityMap();
         TestSubItem::dao()->dropIdentityMap();
         TestItem::dao()->dropIdentityMap();
         $subItems = Criteria::create(TestSubItem::dao())->getList();
         foreach ($subItems as $subItem) {
             $this->assertEquals($subItem->getEncapsulant()->getName(), 'testEncapsulant1_changed');
         }
     }
 }