Changeset 4376 for trunk/tests/Orm

Show
Ignore:
Timestamp:
05/18/08 17:21:55 (8 months ago)
Author:
romanb
Message:

Initial HYDRATE_SINGLE_SCALAR implementation & test.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/tests/Orm/Hydration/BasicHydrationTest.php

    r4375 r4376  
    857857    } 
    858858     
    859      
     859    /** Result set provider for the HYDRATE_SINGLE_SCALAR tests */ 
     860    public static function singleScalarResultSetProvider() { 
     861        return array( 
     862          // valid 
     863          array('name' => 'result1', 
     864                'resultSet' => array( 
     865                  array( 
     866                      'u__name' => 'romanb' 
     867                  ) 
     868               )), 
     869          // valid 
     870          array('name' => 'result2', 
     871                'resultSet' => array( 
     872                  array( 
     873                      'u__id' => '1' 
     874                  ) 
     875             )), 
     876           // invalid 
     877           array('name' => 'result3', 
     878                'resultSet' => array( 
     879                  array( 
     880                      'u__id' => '1', 
     881                      'u__name' => 'romanb' 
     882                  ) 
     883             )), 
     884           // invalid 
     885           array('name' => 'result4', 
     886                'resultSet' => array( 
     887                  array( 
     888                      'u__id' => '1' 
     889                  ), 
     890                  array( 
     891                      'u__id' => '2' 
     892                  ) 
     893             )), 
     894        ); 
     895    } 
     896     
     897    /** 
     898     * select u.name from CmsUser u where u.id = 1 
     899     *  
     900     * @dataProvider singleScalarResultSetProvider 
     901     */ 
     902    public function testHydrateSingleScalar($name, $resultSet) 
     903    {         
     904        // Faked query components 
     905        $queryComponents = array( 
     906            'u' => array( 
     907                'table' => $this->_em->getClassMetadata('CmsUser'), 
     908                'mapper' => $this->_em->getEntityPersister('CmsUser'), 
     909                'parent' => null, 
     910                'relation' => null, 
     911                'map' => null 
     912                ) 
     913            ); 
     914         
     915        // Faked table alias map 
     916        $tableAliasMap = array( 
     917            'u' => 'u' 
     918            ); 
     919             
     920        $stmt = new Doctrine_HydratorMockStatement($resultSet); 
     921        $hydrator = new Doctrine_HydratorNew($this->_em); 
     922         
     923        if ($name == 'result1') { 
     924            $result = $hydrator->hydrateResultSet($this->_createParserResult( 
     925                $stmt, $queryComponents, $tableAliasMap, Doctrine::HYDRATE_SINGLE_SCALAR)); 
     926            $this->assertEquals('romanb', $result); 
     927        } else if ($name == 'result2') { 
     928            $result = $hydrator->hydrateResultSet($this->_createParserResult( 
     929                $stmt, $queryComponents, $tableAliasMap, Doctrine::HYDRATE_SINGLE_SCALAR)); 
     930            $this->assertEquals(1, $result); 
     931        } else if ($name == 'result3' || $name == 'result4') { 
     932            try { 
     933                $result = $hydrator->hydrateResultSet($this->_createParserResult( 
     934                    $stmt, $queryComponents, $tableAliasMap, Doctrine::HYDRATE_SINGLE_SCALAR)); 
     935                $this->fail(); 
     936            } catch (Doctrine_Hydrator_Exception $ex) {} 
     937        } 
     938         
     939    } 
    860940     
    861941}