Example #1
0
 public function testCollectionRangingCreatesLimitClause()
 {
     MySql::executeStatement("TRUNCATE TABLE tblCompany");
     for ($x = 1; $x <= 20; $x++) {
         $company = new Company();
         $company->CompanyName = $x;
         $company->save();
     }
     $collection = new Collection("Rhubarb\\Stem\\Tests\\Fixtures\\Company");
     $collection->setRange(10, 4);
     $size = sizeof($collection);
     $this->assertEquals(20, $size);
     $statement = MySql::getPreviousStatement(true);
     $this->assertContains("SQL_CALC_FOUND_ROWS", $statement);
     $this->assertContains("LIMIT 10, 4", $statement);
 }
 public function testLimits()
 {
     MySql::executeStatement("TRUNCATE TABLE tblCompany");
     $company = new Company();
     $repos = $company->getRepository();
     $repos->clearObjectCache();
     $company = new Company();
     $company->CompanyName = "A";
     $company->save();
     $company = new Company();
     $company->CompanyName = "B";
     $company->save();
     $company = new Company();
     $company->CompanyName = "B";
     $company->save();
     $company = new Company();
     $company->CompanyName = "B";
     $company->save();
     $company = new Company();
     $company->CompanyName = "C";
     $company->save();
     $company = new Company();
     $company->CompanyName = "D";
     $company->save();
     $list = new Collection("\\Rhubarb\\Stem\\Tests\\Fixtures\\Company");
     $list->setRange(2, 6);
     $this->assertCount(6, $list);
     $this->assertEquals("C", $list[2]->CompanyName);
     $sql = MySql::getPreviousStatement(true);
     $this->assertContains("LIMIT 2, 6", $sql);
     // Sorting by a computed column should mean that limits are no longer used.
     $list->addSort("CompanyIDSquared", true);
     $this->assertCount(6, $list);
     $this->assertEquals("C", $list[2]->CompanyName);
     $sql = MySql::getPreviousStatement();
     $this->assertNotContains("LIMIT 2, 6", $sql);
     $sql = MySql::getPreviousStatement(true);
     $this->assertNotContains("LIMIT 2, 6", $sql);
 }