Esempio n. 1
0
 public function testOneToMany()
 {
     SolutionSchema::registerSchema("MySchema", "Rhubarb\\Stem\\Tests\\Fixtures\\UnitTestingSolutionSchema");
     $company = new Company();
     $company->getRepository()->clearObjectCache();
     $company->CompanyName = "Test Company";
     $company->save();
     $user = new User();
     $user->getRepository()->clearObjectCache();
     $user->Username = "******";
     $user->Password = "******";
     $user->Active = 1;
     $user->CompanyID = $company->CompanyID;
     $user->save();
     $user = new User();
     $user->Username = "******";
     $user->Password = "";
     $user->Active = 1;
     $user->CompanyID = $company->CompanyID;
     $user->save();
     $user = new User();
     $user->Username = "******";
     $user->Password = "";
     $user->Active = 0;
     $user->CompanyID = $company->CompanyID;
     $user->save();
     $oneToMany = new OneToMany("Unused", "Company", "CompanyID", "UnitTestUser");
     $list = $oneToMany->fetchFor($company);
     $this->assertCount(2, $list);
     $this->assertEquals("msmith", $list[1]->Username);
 }
 public function testManyToMany()
 {
     // UnitTestingSolutionSchema sets up a many to many relationship between company and category
     $company1 = new Company();
     $company2 = new Company();
     $company3 = new Company();
     $company1->getRepository()->clearObjectCache();
     $companyCategory = new CompanyCategory();
     $companyCategory->getRepository()->clearObjectCache();
     $category1 = new Category();
     $category2 = new Category();
     $category1->getRepository()->clearObjectCache();
     $company1->CompanyName = "GCD";
     $company1->save();
     $company2->CompanyName = "UTV";
     $company2->save();
     $company3->CompanyName = 'Inactive';
     $company3->Active = 0;
     $company3->save();
     $category1->CategoryName = "Fruit";
     $category1->save();
     $category2->CategoreName = "Apples";
     $category2->save();
     $companyCategory->CategoryID = $category1->CategoryID;
     $companyCategory->CompanyID = $company1->CompanyID;
     $companyCategory->save();
     $companyCategory = new CompanyCategory();
     $companyCategory->CategoryID = $category1->CategoryID;
     $companyCategory->CompanyID = $company2->CompanyID;
     $companyCategory->save();
     $companyCategory = new CompanyCategory();
     $companyCategory->CategoryID = $category2->CategoryID;
     $companyCategory->CompanyID = $company2->CompanyID;
     $companyCategory->save();
     $companyCategory = new CompanyCategory();
     $companyCategory->CategoryID = $category1->CategoryID;
     $companyCategory->CompanyID = $company3->CompanyID;
     $companyCategory->save();
     // At this point GCD is in Fruit, while UTV is in Fruit and Apples.
     $company1 = new Company($company1->CompanyID);
     $this->assertCount(1, $company1->Categories);
     $this->assertCount(2, $company2->Categories);
     $this->assertCount(2, $category1->Companies);
     $this->assertCount(1, $category2->Companies);
     $this->assertEquals("UTV", $category2->Companies[0]->CompanyName);
 }
Esempio n. 3
0
 protected function setUp()
 {
     parent::setUp();
     MySql::executeStatement("TRUNCATE TABLE tblCompany");
     $example = new Company();
     $example->getRepository()->clearObjectCache();
     $example = new Company();
     $example->CompanyName = "a";
     $example->Balance = 1;
     $example->save();
     $example = new Company();
     $example->CompanyName = "b";
     $example->Balance = 2;
     $example->save();
     $example = new Company();
     $example->CompanyName = "c";
     $example->Balance = 3;
     $example->save();
 }
 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);
 }
Esempio n. 5
0
 public function testMySqlAggregateSupport()
 {
     MySql::executeStatement("TRUNCATE TABLE tblCompany");
     MySql::executeStatement("TRUNCATE TABLE tblUser");
     $company1 = new Company();
     $company1->getRepository()->clearObjectCache();
     $company1->CompanyName = "1";
     $company1->save();
     $company2 = new Company();
     $company2->CompanyName = "2";
     $company2->save();
     $user1 = new User();
     $user1->Wage = 100;
     $company1->Users->Append($user1);
     $user2 = new User();
     $user2->Wage = 200;
     $company1->Users->Append($user2);
     $user3 = new User();
     $user3->Wage = 300;
     $company2->Users->Append($user3);
     $user4 = new User();
     $user4->Wage = 400;
     $company2->Users->Append($user4);
     $companies = new Collection("Company");
     $companies->addAggregateColumn(new Sum("Users.Wage"));
     $results = [];
     foreach ($companies as $company) {
         $results[] = $company->SumOfUsersWage;
     }
     $this->assertEquals([300, 700], $results);
     $sql = MySql::getPreviousStatement();
     $this->assertEquals("SELECT `tblCompany`.*, SUM( `Users`.`Wage` ) AS `SumOfUsersWage` FROM `tblCompany` LEFT JOIN `tblUser` AS `Users` ON `tblCompany`.`CompanyID` = `Users`.`CompanyID` GROUP BY `tblCompany`.`CompanyID`", $sql);
     $companies = new Collection("Company");
     $companies->addAggregateColumn(new Sum("Users.BigWage"));
     $results = [];
     foreach ($companies as $company) {
         $results[] = $company->SumOfUsersBigWage;
     }
     $this->assertEquals([3000, 7000], $results);
 }