<?php
/**
* Unit-test for Naf_Table class
*/
require_once dirname(__FILE__) . '/../setup.php';
require_once dirname(__FILE__) . '/Connection.php';
require_once dirname(__FILE__) . '/Abstract.php';
class Naf_Db_TableTest extends AbstractDbTest
{
const DUMMY_DATA_COUNT = 10;
function testCountAndInsert()
{
$t = new Naf_Table('test');
$this->assertEqual(0, $t->count());
$this->assertEqual(1, $t->insert(array('name' => 'test name')));
$this->assertEqual(1, $t->count());
$row = $t->find(1);
$this->assertEqual('test name', $row['name']);
}
function testFindAll()
{
$t = $this->loadDummyData();
$all = $t->findAll()->fetchAll();
$this->assertEqual(self::DUMMY_DATA_COUNT, count($all));
$filtered = $t->findAll(array("name LIKE ?" => 'test1%'))->fetchAll();
// should select test1 and test10 with this filter
$this->assertEqual(2, count($filtered));
$limited = $t->findAll(null, null, 5)->fetchAll();
$this->assertEqual(5, count($limited));
}
function testFetchPairs()
{
$t = $this->loadDummyData();
$limited = $t->fetchPairs('name');
$this->assertEqual(self::DUMMY_DATA_COUNT, count($limited));
foreach ($limited as $id => $name) {
$this->assertTrue($id > 0);
$this->assertTrue(is_string($name));
}
}
function testCount()
{
$t = $this->loadDummyData();
// should select test1 and test10 with this filter
$this->assertEqual(2, $t->count(array("name LIKE ?" => 'test1%')));
}
function testSum()
{
$t = $this->loadDummyData();
// should select id=1 and id=2 with this filter
$this->assertEqual(2+1, $t->sum('id', array("id <= ?" => 2)));
}
function testUpdate()
{
$t = $this->loadDummyData();
$this->assertEqual(1, $t->update(array('name' => 'updated'), 1));
$row = $t->find(1);
$this->assertEqual('updated', $row['name']);
}
function testUpdateAll()
{
$t = $this->loadDummyData();
// we'll update a record with a certain ID, so the number of updated rows should be 1
$this->assertEqual(1, $t->updateAll(array('name' => 'updated'), array('id = ?' => 1)));
$row = $t->find(1);
$this->assertEqual('updated', $row['name']);
}
function testDelete()
{
$t = $this->loadDummyData();
$this->assertEqual(1, $t->delete(1));
$this->assertEqual(self::DUMMY_DATA_COUNT - 1, $t->count());
}
function testDeleteAll()
{
$t = $this->loadDummyData();
$this->assertEqual(1, $t->deleteAll(array('id = ?' => 1)));
$this->assertEqual(self::DUMMY_DATA_COUNT - 1, $t->count());
}
function setUp()
{
$this->connection->query("CREATE TABLE test (id INTEGER PRIMARY KEY, name varchar(255))");
}
function tearDown()
{
$this->connection->query("DROP TABLE test");
}
/**
* @return Naf_Table
*/
private function loadDummyData()
{
$t = new Naf_Table('test');
for ($i = 1; $i <= self::DUMMY_DATA_COUNT; ++$i)
{
$t->insert(array('name' => 'test' . $i));
}
return $t;
}
}
|