Current File : //home/strato/chroot/opt/RZphp72/includes/test/DB_QueryTool/tests/Get.php |
<?php
//
// $Id: Get.php,v 1.1 2003/06/06 14:39:44 cain Exp $
//
class tests_Get extends tests_UnitTest
{
function test_AddGet()
{
$user = new tests_Common(TABLE_USER);
$newData = array( 'login' => 'cain',
'password' => '0',
'name' => 'Lutz Testern',
'address_id'=> 0,
'company_id'=> 0
);
$userId = $user->add( $newData );
$newData['id'] = $userId;
$this->assertEquals($newData,$user->get($userId));
$newData = array( 'login' => '',
'password' => '',
'name' => '',
'address_id'=> 0,
'company_id'=> 0
);
$userId = $user->add( $newData );
$newData['id'] = $userId;
$this->assertEquals($newData,$user->get($userId));
}
// test if column==table works, using the table TABLE_QUESTION
function test_tableEqualsColumn()
{
$question = new tests_Common(TABLE_QUESTION);
$newData = array(TABLE_QUESTION=>'Why does this not work?');
$id=$question->add($newData);
$newData['id']=$id;
$this->assertEquals($newData,$question->get($id));
}
// test if column==table works, using the table TABLE_QUESTION
function test_tableEqualsColumnGetAll()
{
$question = new tests_Common(TABLE_QUESTION);
$newData = array(TABLE_QUESTION=>'Why does this not work?');
$id=$question->add($newData);
$newData['id']=$id;
$data = $question->getAll();
// assertEquals doesnt sort arrays recursively, so we have to extract the data :-(
// we cant do this: $this->assertEquals(array($newData),$question->getAll());
$this->assertEquals($newData,$data[0]);
}
// test if column==table works, using the table TABLE_QUESTION
// this fails in v0.9.3
// a join makes it fail!!!, the tests above are just convinience tests
// they are actually meant to work !always! :-)
function test_tableEqualsColumnJoinedGetAll()
{
$theQuestion = 'Why does this not work?';
$theAnswer = 'I dont know!';
$question = new tests_Common(TABLE_QUESTION);
$newQuest = array(TABLE_QUESTION=>$theQuestion);
$qid=$question->add($newQuest);
$answer = new tests_Common(TABLE_ANSWER);
$newAnswer = array(TABLE_QUESTION.'_id'=>$qid,TABLE_ANSWER=>$theAnswer);
$aid=$answer->add($newAnswer);
$question->autoJoin(TABLE_ANSWER);
//$newData['id']=$id;
$data = $question->getAll();
$expected = array( '_answer_id'=>$aid,
'_answer_answer'=>$theAnswer,
'_answer_question_id'=>$qid,
'id'=>$qid,
'question'=>$theQuestion);
// assertEquals doesnt sort arrays recursively, so we have to extract the data :-(
// we cant do this: $this->assertEquals(array($newData),$question->getAll());
$this->assertEquals($expected,$data[0]);
}
/**
* This method actually checks if the functionality that needs to be changed
* for the above test to work will still work after the change ...
*
* check if stuff like MAX(id), LOWER(question), etc. will be converted to
* MAX(TABLE_QUESTION.id), LOWER(TABLE_QUESTION.question)
* this is done for preventing ambigious column names, that's why it only applies
* in joined queries ...
*/
function test_testSqlFunction()
{
$theQuestion = 'Why does this not work?';
$theAnswer = 'I dont know!';
$question = new tests_Common(TABLE_QUESTION);
$newQuest = array(TABLE_QUESTION=>$theQuestion);
$qid=$question->add($newQuest);
$answer = new tests_Common(TABLE_ANSWER);
$newAnswer = array(TABLE_QUESTION.'_id'=>$qid,TABLE_ANSWER=>$theAnswer);
$aid=$answer->add($newAnswer);
$question->autoJoin(TABLE_ANSWER);
// $question->setSelect('id,'.TABLE_QUESTION.' as question,'.TABLE_ANSWER.' as answer');
$question->setSelect('MAX(id),'.TABLE_ANSWER.'.id');
$this->assertTrue(strpos($question->_buildSelectQuery(),'MAX('.TABLE_QUESTION.'.id)'));
// check '(question)'
$question->setSelect('LOWER(question),'.TABLE_ANSWER.'.*');
$this->assertTrue(strpos($question->_buildSelectQuery(),'LOWER('.TABLE_QUESTION.'.question)'));
// check 'id,'
$question->setSelect('id,'.TABLE_ANSWER.'.*');
$this->assertTrue(strpos($question->_buildSelectQuery(),TABLE_QUESTION.'.id'));
// check 'id as qid'
$question->setSelect('id as qid,'.TABLE_ANSWER.'.*');
$this->assertTrue(strpos($question->_buildSelectQuery(),TABLE_QUESTION.'.id as qid'));
// check 'id as qid'
$question->setSelect('LOWER( question ),'.TABLE_ANSWER.'.*');
$this->assertTrue(strpos($question->_buildSelectQuery(),'LOWER( '.TABLE_QUESTION.'.question )'));
}
}
?>