[limb-svn] r6698 - 3.x/trunk/limb/active_record/tests/cases
svn at limb-project.com
svn at limb-project.com
Fri Jan 18 11:53:13 MSK 2008
Author: serega
Date: 2008-01-18 11:53:13 +0300 (Fri, 18 Jan 2008)
New Revision: 6698
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6698
Modified:
3.x/trunk/limb/active_record/tests/cases/lmbARBaseTestCase.class.php
3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php
Log:
-- lmbARBaseTestCase now wraps db connection with lmbAuditDbConnection what makes it possible to control sql queries count.
-- better lmbARQueryTest: now it tests number of sql queries actually executed.
Modified: 3.x/trunk/limb/active_record/tests/cases/lmbARBaseTestCase.class.php
===================================================================
--- 3.x/trunk/limb/active_record/tests/cases/lmbARBaseTestCase.class.php 2008-01-18 08:39:40 UTC (rev 6697)
+++ 3.x/trunk/limb/active_record/tests/cases/lmbARBaseTestCase.class.php 2008-01-18 08:53:13 UTC (rev 6698)
@@ -6,7 +6,8 @@
* @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
* @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
-require_once(dirname(__FILE__) . '/lmbARTestingObjectMother.class.php');
+require_once(dirname(__FILE__) . '/lmbARTestingObjectMother.class.php');
+lmb_require('limb/dbal/src/drivers/lmbAuditDbConnection.class.php');
class lmbARBaseTestCase extends UnitTestCase
{
@@ -18,7 +19,8 @@
function setUp()
{
$toolkit = lmbToolkit :: save();
- $this->conn = $toolkit->getDefaultDbConnection();
+ $this->conn = new lmbAuditDbConnection($toolkit->getDefaultDbConnection());
+ $toolkit->setDefaultDbConnection($this->conn);
$this->db = new lmbSimpleDb($this->conn);
$this->creator = new lmbARTestingObjectMother($this->conn);
Modified: 3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php
===================================================================
--- 3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php 2008-01-18 08:39:40 UTC (rev 6697)
+++ 3.x/trunk/limb/active_record/tests/cases/lmbARQueryTest.class.php 2008-01-18 08:53:13 UTC (rev 6698)
@@ -35,13 +35,19 @@
$person1 = $this->creator->createPerson();
$person2 = $this->creator->createPerson();
+ $this->conn->reset();
+
$query = new lmbARQuery('PersonForTest', $this->conn);
$query->with('social_security');
$iterator = $query->fetch();
$arr = $iterator->getArray();
+
+ $this->assertEqual($this->conn->count(), 1);
//make sure we really eager fetching
$this->db->delete('social_security_for_test');
+
+ $this->conn->reset();
$this->assertIsA($arr[0], 'PersonForTest');
$this->assertEqual($arr[0]->getName(), $person1->getName());
@@ -52,6 +58,8 @@
$this->assertEqual($arr[1]->getName(), $person2->getName());
$this->assertIsA($arr[1]->getSocialSecurity(), 'SocialSecurityForTest');
$this->assertEqual($arr[1]->getSocialSecurity()->getCode(), $person2->getSocialSecurity()->getCode());
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetch_With_RelatedBelongsToObject()
@@ -61,13 +69,19 @@
$person2 = $this->creator->createPerson();
$ss2 = $person2->getSocialSecurity();
+ $this->conn->reset();
+
$query = new lmbARQuery('SocialSecurityForTest', $this->conn);
$query->with('person');
$iterator = $query->fetch();
$arr = $iterator->getArray();
+
+ $this->assertEqual($this->conn->count(), 1);
//make sure we really eager fetching
$this->db->delete('person_for_test');
+
+ $this->conn->reset();
$this->assertIsA($arr[0], 'SocialSecurityForTest');
$this->assertEqual($arr[0]->getCode(), $ss1->getCode());
@@ -78,6 +92,8 @@
$this->assertEqual($arr[1]->getCode(), $ss2->getCode());
$this->assertIsA($arr[1]->getPerson(), 'PersonForTest');
$this->assertEqual($arr[1]->getPerson()->getName(), $person2->getName());
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetch_With_RelatedManyBelongsToObject()
@@ -88,14 +104,20 @@
$lecture2 = $this->creator->createLecture($course1);
$lecture3 = $this->creator->createLecture($course2);
+ $this->conn->reset();
+
$query = new lmbARQuery('LectureForTest', $this->conn);
$query->with('course');
$iterator = $query->fetch();
$arr = $iterator->getArray();
+
+ $this->assertEqual($this->conn->count(), 1);
//make sure we really eager fetching
$this->db->delete('course_for_test');
+ $this->conn->reset();
+
$this->assertIsA($arr[0], 'LectureForTest');
$this->assertEqual($arr[0]->getTitle(), $lecture1->getTitle());
$this->assertIsA($arr[0]->getCourse(), 'CourseForTest');
@@ -110,6 +132,8 @@
$this->assertEqual($arr[2]->getTitle(), $lecture3->getTitle());
$this->assertIsA($arr[2]->getCourse(), 'CourseForTest');
$this->assertEqual($arr[2]->getCourse()->getTitle(), $course2->getTitle());
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetch_Attach_RelatedHasOneObjects()
@@ -117,14 +141,20 @@
$person1 = $this->creator->createPerson();
$person2 = $this->creator->createPerson();
+ $this->conn->reset();
+
$query = new lmbARQuery('PersonForTest', $this->conn);
// note attach() has the same effect as with() but workds is a different way - it produces another sql request
$iterator = $query->attach('social_security')->fetch();
$arr = $iterator->getArray();
+
+ $this->assertEqual($this->conn->count(), 2);
//make sure we really eager fetching
$this->db->delete('social_security_for_test');
+ $this->conn->reset();
+
$this->assertIsA($arr[0], 'PersonForTest');
$this->assertEqual($arr[0]->getName(), $person1->getName());
$this->assertIsA($arr[0]->getSocialSecurity(), 'SocialSecurityForTest');
@@ -134,6 +164,8 @@
$this->assertEqual($arr[1]->getName(), $person2->getName());
$this->assertIsA($arr[1]->getSocialSecurity(), 'SocialSecurityForTest');
$this->assertEqual($arr[1]->getSocialSecurity()->getCode(), $person2->getSocialSecurity()->getCode());
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetch_Attach_RelatedBelongsToObjects()
@@ -145,12 +177,18 @@
$this->db->delete('person_for_test', 'id = ' . $id);
+ $this->conn->reset();
+
$query = new lmbARQuery('SocialSecurityForTest', $this->conn);
// note attach() has the same effect as with() but workds is a different way - it produces another sql request
$arr = $query->attach('person')->fetch()->getArray();
+ $this->assertEqual($this->conn->count(), 2);
+
//make sure we really eager fetching
$this->db->delete('person_for_test');
+
+ $this->conn->reset();
$this->assertIsA($arr[0], 'SocialSecurityForTest');
$this->assertEqual($arr[0]->getCode(), $person1->getSocialSecurity()->getCode());
@@ -161,6 +199,8 @@
$this->assertEqual($arr[1]->getCode(), $person2->getSocialSecurity()->getCode());
$this->assertIsA($arr[1]->getPerson(), 'PersonForTest');
$this->assertEqual($arr[1]->getPerson()->getName(), $person2->getName());
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetch_Attach_RelatedManyBelongsToObjects()
@@ -174,11 +214,17 @@
$lecture2 = $this->creator->createLecture($course, $alt_course2);
$lecture3 = $this->creator->createLecture($course, $alt_course1);
+ $this->conn->reset();
+
$query = new lmbARQuery('LectureForTest', $this->conn);
$arr = $query->attach('course')->attach('alt_course')->fetch()->getArray();
+ $this->assertEqual($this->conn->count(), 3);
+
//make sure we really eager fetching
$this->db->delete('course_for_test');
+
+ $this->conn->reset();
$this->assertIsA($arr[0], 'LectureForTest');
$this->assertEqual($arr[0]->getTitle(), $lecture1->getTitle());
@@ -200,6 +246,8 @@
$this->assertEqual($arr[2]->getCourse()->getTitle(), $course->getTitle());
$this->assertIsA($arr[2]->getAltCourse(), 'CourseForTest');
$this->assertEqual($arr[2]->getAltCourse()->getTitle(), $alt_course1->getTitle());
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetch_Attach_RelatedHasMany()
@@ -212,12 +260,18 @@
$lecture3 = $this->creator->createLecture($course1, null, 'AAA');
$lecture4 = $this->creator->createLecture($course1, null, 'BBB');
+ $this->conn->reset();
+
$query = new lmbARQuery('CourseForTest', $this->conn);
$arr = $query->attach('lectures', array('sort' => array('title' => 'ASC')))->fetch()->getArray();
+ $this->assertEqual($this->conn->count(), 2);
+
//make sure we really eager fetching
$this->db->delete('lecture_for_test');
+ $this->conn->reset();
+
$this->assertIsA($arr[0], 'CourseForTest');
$this->assertEqual($arr[0]->getTitle(), $course1->getTitle());
$lectures = $arr[0]->getLectures();
@@ -235,6 +289,8 @@
$this->assertEqual(count($lectures), 1);
$this->assertEqual($lectures[0]->getId(), $lecture2->getId());
$this->assertEqual($lectures[0]->getTitle(), 'CCC');
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetch_Attach_RelatedHasManyToMany()
@@ -250,12 +306,18 @@
$group2->setUsers(array($user2));
$group3->setUsers(array($user1));
+ $this->conn->reset();
+
$query = new lmbARQuery('UserForTest', $this->conn);
$arr = $query->attach('groups', array('sort' => array('title' => 'DESC')))->fetch()->getArray();
+ $this->assertEqual($this->conn->count(), 2);
+
//make sure we really eager fetching
$this->db->delete('group_for_test');
$this->db->delete('user2group_for_test');
+
+ $this->conn->reset();
$this->assertIsA($arr[0], 'UserForTest');
$this->assertEqual($arr[0]->getFirstName(), $user1->getFirstName());
@@ -274,6 +336,8 @@
$this->assertEqual($groups[0]->getTitle(), 'BBB');
$this->assertEqual($groups[1]->getId(), $group1->getId());
$this->assertEqual($groups[1]->getTitle(), 'AAA');
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetch_NestedWithProperty_In_Attach_ForHasMany()
@@ -289,13 +353,19 @@
$lecture3 = $this->creator->createLecture($course1, $alt_course2);
$lecture4 = $this->creator->createLecture($course1, $alt_course1);
+ $this->conn->reset();
+
$query = new lmbARQuery('CourseForTest', $this->conn);
$query->where(lmbSQLCriteria :: in('id', array($course1->getId(), $course2->getId())));
$arr = $query->attach('lectures', array('with' => 'alt_course'))->fetch()->getArray();
+ $this->assertEqual($this->conn->count(), 2);
+
//make sure we really eager fetching
$this->db->delete('lecture_for_test');
$this->db->delete('course_for_test');
+
+ $this->conn->reset();
$this->assertIsA($arr[0], 'CourseForTest');
$this->assertEqual($arr[0]->getTitle(), $course1->getTitle());
@@ -315,6 +385,8 @@
$this->assertEqual(count($lectures), 1);
$this->assertEqual($lectures[0]->getId(), $lecture2->getId());
$this->assertEqual($lectures[0]->getAltCourse()->getTitle(), $alt_course1->getTitle());
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetch_NestedAttachProperty_In_With()
@@ -335,15 +407,21 @@
$lecture7 = $this->creator->createLecture($alt_course2);
$lecture8 = $this->creator->createLecture($alt_course1);
+ $this->conn->reset();
+
$query = new lmbARQuery('LectureForTest', $this->conn);
$query->where(lmbSQLCriteria :: equal('course_id', $course1->getId()));
$iterator = $query->with('alt_course', array('attach' => 'lectures'))->fetch();
$arr = $iterator->getArray();
+ $this->assertEqual($this->conn->count(), 2);
+
//make sure we really eager fetching
$this->db->delete('lecture_for_test');
$this->db->delete('course_for_test');
+ $this->conn->reset();
+
$this->assertIsA($arr[0], 'LectureForTest');
$this->assertEqual($arr[0]->getTitle(), $lecture1->getTitle());
@@ -363,6 +441,8 @@
$alt_course_lectures = $arr[2]->getAltCourse()->getLectures();
$this->assertEqual($alt_course_lectures[0]->getId(), $lecture6->getId());
$this->assertEqual($alt_course_lectures[1]->getId(), $lecture8->getId());
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetchNested_AttachProperty_In_WithProperty_In_Attach()
@@ -383,13 +463,19 @@
$lecture7 = $this->creator->createLecture($alt_course2);
$lecture8 = $this->creator->createLecture($alt_course1);
+ $this->conn->reset();
+
$query = new lmbARQuery('CourseForTest', $this->conn);
$query->where(lmbSQLCriteria :: in('id', array($course1->getId(), $course2->getId())));
$arr = $query->attach('lectures', array('with' => array('alt_course' => array('attach' => 'lectures'))))->fetch()->getArray();
+
+ $this->assertEqual($this->conn->count(), 3);
//make sure we really eager fetching
$this->db->delete('lecture_for_test');
$this->db->delete('course_for_test');
+
+ $this->conn->reset();
$this->assertIsA($arr[0], 'CourseForTest');
$this->assertEqual($arr[0]->getTitle(), $course1->getTitle());
@@ -423,6 +509,8 @@
$alt_course_lectures = $lectures[0]->getAltCourse()->getLectures();
$this->assertEqual($alt_course_lectures[0]->getId(), $lecture6->getId());
$this->assertEqual($alt_course_lectures[1]->getId(), $lecture8->getId());
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetch_NestedWithProperty_In_With()
@@ -434,14 +522,20 @@
$lecture1 = $this->creator->createLecture($course1);
$lecture2 = $this->creator->createLecture($course2);
+ $this->conn->reset();
+
$query = new lmbARQuery('LectureForTest', $this->conn);
$iterator = $query->with('course', array('with' => 'program'))->fetch();
$arr = $iterator->getArray();
+ $this->assertEqual($this->conn->count(), 1);
+
//make sure we really eager fetching
$this->db->delete('lecture_for_test');
$this->db->delete('course_for_test');
$this->db->delete('program_for_test');
+
+ $this->conn->reset();
$this->assertIsA($arr[0], 'LectureForTest');
$this->assertEqual($arr[0]->getTitle(), $lecture1->getTitle());
@@ -452,6 +546,8 @@
$this->assertEqual($arr[0]->getCourse()->getProgram()->getTitle(), $program1->getTitle());
$this->assertEqual($arr[1]->getCourse()->getProgram()->getTitle(), $program2->getTitle());
+
+ $this->assertEqual($this->conn->count(), 0);
}
function testFetch_NestedAttachProperty_In_Attach()
@@ -471,15 +567,21 @@
$lecture7 = $this->creator->createLecture($course3);
$lecture8 = $this->creator->createLecture($course4);
+ $this->conn->reset();
+
$query = new lmbARQuery('ProgramForTest', $this->conn);
$iterator = $query->attach('courses', array('attach' => 'lectures'))->fetch();
$arr = $iterator->getArray();
+
+ $this->assertEqual($this->conn->count(), 3);
//make sure we really eager fetching
$this->db->delete('lecture_for_test');
$this->db->delete('course_for_test');
$this->db->delete('program_for_test');
+
+ $this->conn->reset();
$this->assertIsA($arr[0], 'ProgramForTest');
$this->assertEqual($arr[0]->getTitle(), $program1->getTitle());
@@ -509,6 +611,8 @@
$lectures = $courses[1]->getLectures();
$this->assertEqual($lectures[0]->getTitle(), $lecture4->getTitle());
$this->assertEqual($lectures[1]->getTitle(), $lecture8->getTitle());
+
+ $this->assertEqual($this->conn->count(), 0);
}
}
More information about the limb-svn
mailing list