Current File : //opt/RZphp5/includes/test/DB_QueryTool/tests/Having.php |
<?php
//
// $Id: Having.php,v 1.3 2004/03/25 21:05:56 quipo Exp $
//
class tests_Having extends tests_UnitTest
{
function test_setHaving()
{ // which company has exactly 2 workers???
$userIds = array();
$user = new tests_Common(TABLE_USER);
$newData = array( 'login' => 'hans',
'password' => '0',
'name' => 'Hans Dampf',
'address_id'=> 0,
'company_id'=> 1
);
$userIds[] = $user->add( $newData );
$user->reset();
$user->setWhere('id IN ('.implode(', ', $userIds).')');
$user->setGroup('company_id');
$user->setHaving('count(id) = 2');
$this->assertEquals(array(), $user->getCol('company_id')); // there are no company with 2 workers
$newData = array( 'login' => 'rudi',
'password' => '0',
'name' => 'Rudi Ratlos',
'address_id'=> 0,
'company_id'=> 1
);
$userIds[] = $user->add( $newData );
$newData = array( 'login' => 'susi',
'password' => '0',
'name' => 'Susi Sorglos',
'address_id'=> 0,
'company_id'=> 5
);
$userIds[] = $user->add( $newData );
$user->reset();
$user->setWhere('id IN ('.implode(', ', $userIds).')');
$user->setGroup('company_id');
$user->setHaving('count(id) = 2');
$this->assertEquals(array(1), $user->getCol('company_id')); // company 1 has exactly 2 workers
$newData = array( 'login' => 'lieschen',
'password' => '0',
'name' => 'Lieschen Mueller',
'address_id'=> 0,
'company_id'=> 5
);
$userIds[] = $user->add( $newData );
$user->reset();
$user->setWhere('id IN ('.implode(', ', $userIds).')');
$user->setGroup('company_id');
$user->setHaving('count(id) = 2');
$this->assertEquals(array(1, 5), $user->getCol('company_id')); // company 1 and 5 has exactly 2 workers
}
function test_addHaving()
{ // which companies has more than one worker one the same place and the company_id must be greater than 1
$userIds = array();
$user = new tests_Common(TABLE_USER);
$newData = array( 'login' => 'hans',
'password' => '0',
'name' => 'Hans Dampf',
'address_id'=> 1,
'company_id'=> 1
);
$userIds[] = $user->add( $newData );
$newData = array( 'login' => 'rudi',
'password' => '0',
'name' => 'Rudi Ratlos',
'address_id'=> 1,
'company_id'=> 1
);
$userIds[] = $user->add( $newData );
$newData = array( 'login' => 'susi',
'password' => '0',
'name' => 'Susi Sorglos',
'address_id'=> 2,
'company_id'=> 3
);
$userIds[] = $user->add( $newData );
$newData = array( 'login' => 'lieschen',
'password' => '0',
'name' => 'Lieschen Mueller',
'address_id'=> 3,
'company_id'=> 5
);
$userIds[] = $user->add( $newData );
$newData = array( 'login' => 'werner',
'password' => '0',
'name' => 'Werner Lehmann',
'address_id'=> 3,
'company_id'=> 5
);
$userIds[] = $user->add( $newData );
$user->setGroup('company_id,address_id');
$user->setHaving('COUNT(address_id) > 1');
$user->addHaving('company_id > 1');
$this->assertEquals(array(5), $user->getCol('company_id')); // first test
$user->reset();
$user->setGroup('company_id,address_id');
$user->addHaving('COUNT(address_id) > 1'); // this is not correct but must also work.
$user->addHaving('company_id > 1');
$this->assertEquals(array(5), $user->getCol('company_id')); // second test
}
function test_getHaving()
{
$user = new tests_Common(TABLE_USER);
$having_string = 'COUNT(id) = 10';
$user->setHaving($having_string);
$this->assertEquals($having_string, $user->getHaving());
}
}
?>