Changeset 4709

Show
Ignore:
Timestamp:
07/24/08 03:32:03 (4 months ago)
Author:
guilhermeblanco
Message:

Added coverage to ticket #1219. This ticket works for me. Small changes in import.

Location:
branches
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • branches/0.11/lib/Doctrine/Data/Import.php

    r4379 r4709  
    235235 
    236236        foreach ($array as $className => $data) { 
    237             if ( ! empty($specifiedModels) && !in_array($className, $specifiedModels)) { 
     237            if ( ! empty($specifiedModels) && ! in_array($className, $specifiedModels)) { 
    238238                continue; 
    239239            } 
    240240 
    241             $templates = array_keys(Doctrine::getTable($className)->getTemplates()); 
    242  
    243             if (in_array('Doctrine_Template_NestedSet', $templates)) { 
     241            if (Doctrine::getTable($className)->isTree()) { 
    244242                $nestedSets[$className][] = $data; 
    245243                $this->_buildNestedSetRows($className, $data); 
     
    274272            foreach ($tree as $model) { 
    275273                foreach ($this->_importedObjects as $obj) { 
    276                     $templates = array_keys($obj->getTable()->getTemplates()); 
    277                      
    278                     if ($obj instanceof $model && ! in_array('Doctrine_Template_NestedSet', $templates)) { 
     274                    if ($obj instanceof $model && ! $obj->getTable()->isTree()) { 
    279275                        $obj->save(); 
    280276                    } 
  • branches/0.11/tests/Data/ImportTestCase.php

    r4379 r4709  
    4040        $this->tables[] = 'I18nTest'; 
    4141        $this->tables[] = 'ImportNestedSet'; 
     42        $this->tables[] = 'ImportNestedSetMultipleTree'; 
    4243        $this->tables[] = 'I18nNumberLang'; 
    4344        parent::prepareTables(); 
     
    256257        unlink('test.yml');  
    257258    } 
     259     
     260    public function testImportNestedSetMultipleTreeData() 
     261    { 
     262        $yml = <<<END 
     263--- 
     264ImportNestedSetMultipleTree: 
     265  ImportNestedSetMultipleTree_Item1: 
     266    name: Item 1 
     267 
     268    children: 
     269      ImportNestedSetMultipleTree_Item1_1: 
     270        name: Item 1.1 
     271 
     272      ImportNestedSetMultipleTree_Item1_2: 
     273        name: Item 1.2 
     274 
     275  ImportNestedSetMultipleTree_Item2: 
     276    name: Item 2 
     277 
     278    children: 
     279      ImportNestedSetMultipleTree_Item2_1: 
     280        name: Item 2.1 
     281 
     282      ImportNestedSetMultipleTree_Item2_2: 
     283        name: Item 2.2 
     284 
     285        children: 
     286          ImportNestedSetMultipleTree_Item2_2_1: 
     287            name: Item 2.2.1 
     288 
     289          ImportNestedSetMultipleTree_Item2_2_2: 
     290            name: Item 2.2.2 
     291 
     292          ImportNestedSetMultipleTree_Item2_2_3: 
     293            name: Item 2.2.3 
     294END; 
     295        try { 
     296            file_put_contents('test.yml', $yml); 
     297            Doctrine::loadData('test.yml'); 
     298 
     299            $this->conn->clear(); 
     300 
     301            $query = Doctrine_Query::create() 
     302                ->from('ImportNestedSetMultipleTree insmt') 
     303                ->orderBy('insmt.root_id ASC, insmt.lft ASC'); 
     304 
     305            $i = $query->execute(array(), Doctrine::FETCH_ARRAY); 
     306 
     307            $this->assertEqual($i[0]['name'], 'Item 1'); 
     308            $this->assertEqual($i[0]['lft'], 1); 
     309            $this->assertEqual($i[0]['rgt'], 6); 
     310            $this->assertEqual($i[0]['level'], 0); 
     311            $this->assertEqual($i[0]['root_id'], '1'); 
     312 
     313            $this->assertEqual($i[1]['name'], 'Item 1.1'); 
     314            $this->assertEqual($i[1]['lft'], 2); 
     315            $this->assertEqual($i[1]['rgt'], 3); 
     316            $this->assertEqual($i[1]['level'], 1); 
     317            $this->assertEqual($i[1]['root_id'], $i[0]['root_id']); 
     318 
     319            $this->assertEqual($i[3]['name'], 'Item 2'); 
     320            $this->assertEqual($i[3]['lft'], 1); 
     321            $this->assertEqual($i[3]['rgt'], 12); 
     322            $this->assertEqual($i[3]['level'], 0); 
     323            $this->assertEqual($i[3]['root_id'], '2'); 
     324 
     325            $this->assertEqual($i[4]['name'], 'Item 2.1'); 
     326            $this->assertEqual($i[4]['lft'], 2); 
     327            $this->assertEqual($i[4]['rgt'], 3); 
     328            $this->assertEqual($i[4]['level'], 1); 
     329            $this->assertEqual($i[4]['root_id'], $i[3]['root_id']); 
     330             
     331            $this->assertEqual($i[5]['name'], 'Item 2.2'); 
     332            $this->assertEqual($i[5]['lft'], 4); 
     333            $this->assertEqual($i[5]['rgt'], 11); 
     334            $this->assertEqual($i[5]['level'], 1); 
     335            $this->assertEqual($i[5]['root_id'], $i[3]['root_id']); 
     336 
     337            $this->pass(); 
     338        } catch (Exception $e) { 
     339            $this->fail(); 
     340        } 
     341 
     342        unlink('test.yml');  
     343    } 
    258344 
    259345    public function testMany2ManyManualDataFixtures() 
     
    491577} 
    492578 
     579class ImportNestedSetMultipleTree extends Doctrine_Record 
     580{ 
     581    public function setTableDefinition() 
     582    { 
     583        $this->hasColumn('name', 'string', 255); 
     584    } 
     585 
     586    public function setUp() 
     587    { 
     588        $this->actAs( 
     589            'NestedSet', array( 
     590                'hasManyRoots' => true, 
     591                'rootColumnName' => 'root_id' 
     592            ) 
     593        ); 
     594    } 
     595} 
     596 
    493597class I18nNumberLang extends Doctrine_Record 
    494598{ 
  • branches/1.0/lib/Doctrine/Data/Import.php

    r4677 r4709  
    239239            } 
    240240 
    241             $templates = array_keys(Doctrine::getTable($className)->getTemplates()); 
    242  
    243             if (in_array('Doctrine_Template_NestedSet', $templates)) { 
     241            if (Doctrine::getTable($className)->isTree()) { 
    244242                $nestedSets[$className][] = $data; 
    245243                $this->_buildNestedSetRows($className, $data); 
     
    276274                    $templates = array_keys($obj->getTable()->getTemplates()); 
    277275                     
    278                     if ($obj instanceof $model && ! in_array('Doctrine_Template_NestedSet', $templates)) { 
     276                    if ($obj instanceof $model && ! $obj->getTable()->isTree()) { 
    279277                        $obj->save(); 
    280278                    } 
  • branches/1.0/tests/Data/ImportTestCase.php

    r4379 r4709  
    4040        $this->tables[] = 'I18nTest'; 
    4141        $this->tables[] = 'ImportNestedSet'; 
     42        $this->tables[] = 'ImportNestedSetMultipleTree'; 
    4243        $this->tables[] = 'I18nNumberLang'; 
    4344        parent::prepareTables(); 
     
    256257        unlink('test.yml');  
    257258    } 
     259     
     260    public function testImportNestedSetMultipleTreeData() 
     261    { 
     262        $yml = <<<END 
     263--- 
     264ImportNestedSetMultipleTree: 
     265  ImportNestedSetMultipleTree_Item1: 
     266    name: Item 1 
     267 
     268    children: 
     269      ImportNestedSetMultipleTree_Item1_1: 
     270        name: Item 1.1 
     271 
     272      ImportNestedSetMultipleTree_Item1_2: 
     273        name: Item 1.2 
     274 
     275  ImportNestedSetMultipleTree_Item2: 
     276    name: Item 2 
     277 
     278    children: 
     279      ImportNestedSetMultipleTree_Item2_1: 
     280        name: Item 2.1 
     281 
     282      ImportNestedSetMultipleTree_Item2_2: 
     283        name: Item 2.2 
     284 
     285        children: 
     286          ImportNestedSetMultipleTree_Item2_2_1: 
     287            name: Item 2.2.1 
     288 
     289          ImportNestedSetMultipleTree_Item2_2_2: 
     290            name: Item 2.2.2 
     291 
     292          ImportNestedSetMultipleTree_Item2_2_3: 
     293            name: Item 2.2.3 
     294END; 
     295        try { 
     296            file_put_contents('test.yml', $yml); 
     297            Doctrine::loadData('test.yml'); 
     298 
     299            $this->conn->clear(); 
     300 
     301            $query = Doctrine_Query::create() 
     302                ->from('ImportNestedSetMultipleTree insmt') 
     303                ->orderBy('insmt.root_id ASC, insmt.lft ASC'); 
     304 
     305            $i = $query->execute(array(), Doctrine::FETCH_ARRAY); 
     306 
     307            $this->assertEqual($i[0]['name'], 'Item 1'); 
     308            $this->assertEqual($i[0]['lft'], 1); 
     309            $this->assertEqual($i[0]['rgt'], 6); 
     310            $this->assertEqual($i[0]['level'], 0); 
     311            $this->assertEqual($i[0]['root_id'], '1'); 
     312 
     313            $this->assertEqual($i[1]['name'], 'Item 1.1'); 
     314            $this->assertEqual($i[1]['lft'], 2); 
     315            $this->assertEqual($i[1]['rgt'], 3); 
     316            $this->assertEqual($i[1]['level'], 1); 
     317            $this->assertEqual($i[1]['root_id'], $i[0]['root_id']); 
     318 
     319            $this->assertEqual($i[3]['name'], 'Item 2'); 
     320            $this->assertEqual($i[3]['lft'], 1); 
     321            $this->assertEqual($i[3]['rgt'], 12); 
     322            $this->assertEqual($i[3]['level'], 0); 
     323            $this->assertEqual($i[3]['root_id'], '2'); 
     324 
     325            $this->assertEqual($i[4]['name'], 'Item 2.1'); 
     326            $this->assertEqual($i[4]['lft'], 2); 
     327            $this->assertEqual($i[4]['rgt'], 3); 
     328            $this->assertEqual($i[4]['level'], 1); 
     329            $this->assertEqual($i[4]['root_id'], $i[3]['root_id']); 
     330             
     331            $this->assertEqual($i[5]['name'], 'Item 2.2'); 
     332            $this->assertEqual($i[5]['lft'], 4); 
     333            $this->assertEqual($i[5]['rgt'], 11); 
     334            $this->assertEqual($i[5]['level'], 1); 
     335            $this->assertEqual($i[5]['root_id'], $i[3]['root_id']); 
     336 
     337            $this->pass(); 
     338        } catch (Exception $e) { 
     339            $this->fail(); 
     340        } 
     341 
     342        unlink('test.yml');  
     343    } 
    258344 
    259345    public function testMany2ManyManualDataFixtures() 
     
    491577} 
    492578 
     579class ImportNestedSetMultipleTree extends Doctrine_Record 
     580{ 
     581    public function setTableDefinition() 
     582    { 
     583        $this->hasColumn('name', 'string', 255); 
     584    } 
     585 
     586    public function setUp() 
     587    { 
     588        $this->actAs( 
     589            'NestedSet', array( 
     590                'hasManyRoots' => true, 
     591                'rootColumnName' => 'root_id' 
     592            ) 
     593        ); 
     594    } 
     595} 
     596 
    493597class I18nNumberLang extends Doctrine_Record 
    494598{