[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/active_record/tests/cases/ -> lmbARRecordSetDecoratorTest.class.php (source)

   1  <?php
   2  /*

   3   * Limb PHP Framework

   4   *

   5   * @link http://limb-project.com

   6   * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)

   7   * @license    LGPL http://www.gnu.org/copyleft/lesser.html

   8   */
   9  lmb_require('limb/active_record/src/lmbARRecordSetDecorator.class.php');
  10  lmb_require('limb/core/src/lmbCollection.class.php');
  11  require_once(dirname(__FILE__) . '/lmbAROneToManyRelationsTest.class.php');
  12  
  13  class lmbARRecordSetDecoratorTest extends UnitTestCase
  14  {
  15    function setUp()
  16    {
  17      $this->_dbCleanUp();
  18    }
  19  
  20    function tearDown()
  21    {
  22      $this->_dbCleanUp();
  23    }
  24  
  25    function _dbCleanUp()
  26    {
  27      lmbActiveRecord :: delete('CourseForTest');
  28      lmbActiveRecord :: delete('LectureForTest');
  29    }
  30  
  31    function testCreateActiveRecordFromCurrentRecord()
  32    {
  33      $course = $this->_createCourseWithTwoLectures();
  34  
  35      $db = new lmbSimpleDb(lmbToolkit :: instance()->getDefaultDbConnection());
  36      $decorated = $db->select('lecture_for_test');
  37  
  38      $iterator = new lmbARRecordSetDecorator($decorated, 'LectureForTest');
  39      $iterator->rewind();
  40  
  41      $lecture1 = $iterator->current();
  42      $this->assertEqual($lecture1->getCourse()->getTitle(), $course->getTitle());
  43  
  44      $iterator->next();
  45      $lecture2 = $iterator->current();
  46      $this->assertEqual($lecture2->getCourse()->getTitle(), $course->getTitle());
  47    }
  48  
  49    function testSetActiveRecordClassPathWithSetter()
  50    {
  51      $course = $this->_createCourseWithTwoLectures();
  52  
  53      $db = new lmbSimpleDb(lmbToolkit :: instance()->getDefaultDbConnection());
  54      $decorated = $db->select('lecture_for_test');
  55  
  56      $iterator = new lmbARRecordSetDecorator($decorated);
  57      $iterator->setClassPath('LectureForTest');
  58      $iterator->rewind();
  59  
  60      $lecture1 = $iterator->current();
  61      $this->assertEqual($lecture1->getCourse()->getTitle(), $course->getTitle());
  62  
  63      $iterator->next();
  64      $lecture2 = $iterator->current();
  65      $this->assertEqual($lecture2->getCourse()->getTitle(), $course->getTitle());
  66    }
  67  
  68    function testGetOffsetIsDecorated()
  69    {
  70      $course = $this->_createCourseWithTwoLectures();
  71  
  72      $db = new lmbSimpleDb(lmbToolkit :: instance()->getDefaultDbConnection());
  73      $decorated = $db->select('lecture_for_test');
  74  
  75      $iterator = new lmbARRecordSetDecorator($decorated);
  76      $iterator->setClassPath('LectureForTest');
  77  
  78      $this->assertEqual($iterator->at(0)->getCourse()->getTitle(), $course->getTitle());
  79      $this->assertEqual($iterator[0]->getCourse()->getTitle(), $course->getTitle());
  80  
  81      $this->assertEqual($iterator->at(1)->getCourse()->getTitle(), $course->getTitle());
  82      $this->assertEqual($iterator[1]->getCourse()->getTitle(), $course->getTitle());
  83    }
  84  
  85    function testThrowExceptionIfClassPathIsNotDefined()
  86    {
  87      $course = $this->_createCourseWithTwoLectures();
  88  
  89      $db = new lmbSimpleDb(lmbToolkit :: instance()->getDefaultDbConnection());
  90      $decorated = $db->select('lecture_for_test');
  91  
  92      $iterator = new lmbARRecordSetDecorator($decorated);
  93      $iterator->rewind();
  94      try
  95      {
  96        $iterator->current();
  97        $this->assertTrue(false);
  98      }
  99      catch(lmbException $e){}
 100    }
 101  
 102    function testIfRecordIsEmpty()
 103    {
 104      $iterator = new lmbARRecordSetDecorator(new lmbCollection());
 105      $iterator->setClassPath('LectureForTest');
 106      $iterator->rewind();
 107      $this->assertFalse($iterator->valid());
 108    }
 109  
 110    function _createCourseWithTwoLectures()
 111    {
 112      $course = new CourseForTest();
 113      $course->setTitle($title = 'General Course');
 114  
 115      $l1 = new LectureForTest();
 116      $l1->setTitle('Physics');
 117      $l2 = new LectureForTest();
 118      $l2->setTitle('Math');
 119  
 120      $course->addToLectures($l1);
 121      $course->addToLectures($l2);
 122      $course->save();
 123  
 124      return $course;
 125    }
 126  }
 127  ?>


Generated: Sat Nov 22 03:48:54 2008 Cross-referenced by PHPXref 0.7