public function testSchemaCanBeCreatedFromTable() { MySql::executeStatement("DROP TABLE IF EXISTS tblTest"); MySql::executeStatement("CREATE TABLE `tblTest` (\n `ID` INT(10) NOT NULL AUTO_INCREMENT,\n `Nullable` INT(10) NULL DEFAULT NULL,\n `DefaultColumn` VARCHAR(50) NOT NULL DEFAULT 'Smith',\n `EnumColumn` ENUM('Open','Complete', 'Awaiting Feedback') NOT NULL,\n `Name` VARCHAR(50) NOT NULL,\n PRIMARY KEY (`ID`),\n INDEX `Name` (`Name`)\n )\n COLLATE='latin1_swedish_ci'\n ENGINE=InnoDB;"); $comparisonSchema = MySqlComparisonSchema::fromTable("tblTest"); $this->assertEquals(["ID" => "`ID` int(10) NOT NULL AUTO_INCREMENT", "Nullable" => "`Nullable` int(10) DEFAULT NULL", "DefaultColumn" => "`DefaultColumn` varchar(50) NOT NULL DEFAULT 'Smith'", "EnumColumn" => "`EnumColumn` enum('Open','Complete','Awaiting Feedback') NOT NULL", "Name" => "`Name` varchar(50) NOT NULL"], $comparisonSchema->columns); $this->assertEquals(["PRIMARY KEY (`ID`)", "KEY `Name` (`Name`)"], $comparisonSchema->indexes); }
public function testSchemaIsCreated() { MySql::executeStatement("DROP TABLE IF EXISTS tblExample"); $schema = new MysqlModelSchema("tblExample"); $schema->addColumn(new AutoIncrement("ID")); $schema->addColumn(new String("Name", 40, "StrangeDefault")); $schema->addColumn(new MySqlEnum("Type", "A", ["A", "B", "C"])); $schema->addIndex(new Index("ID", Index::PRIMARY)); $schema->checkSchema(Repository::getNewDefaultRepository(new Example())); $newSchema = MySqlComparisonSchema::fromTable("tblExample"); $columns = $newSchema->columns; $this->assertCount(3, $columns); $this->assertEquals("`Name` varchar(40) NOT NULL DEFAULT 'StrangeDefault'", $columns["Name"]); $this->assertContains("`Type` enum('A','B','C') NOT NULL DEFAULT 'A'", $columns["Type"]); // Check schema equivalence $this->assertTrue($newSchema == MySqlComparisonSchema::fromMySqlSchema($schema)); }
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(); }
protected function printViewContent() { parent::printViewContent(); $discussions = Gallery::find()->addSort('Order')->setRange(0, 6); $users = CustomUser::find(new Equals('Enabled', 1))->addSort('UserID', false)->setRange(0, 6); $sql = MySql::executeStatement('SELECT Source FROM tblImage ORDER BY RAND() LIMIT 6'); $images = []; while ($a = $sql->fetch(\PDO::FETCH_ASSOC)) { $images[] = $a['Source']; } ?> <div class="__container noPadding"> <?php echo new ImagePanorama($images); ?> </div> <div class="row"> <div class="discussion-group col-md-6"> <div class="__container min-height-500"> <div class="center-block clearfix relative"> <h1 style="text-align: center"> Top 6 Galerijas </h1> <a href="gallery/add/" class="btn btn-primary right-side-title">Pievienot galeriju</a> </div> <div class="row" style="height: 150px; text-align: center"> <?php foreach ($discussions as $discussion) { print '<div class="col-md-4 center-align">'; print new GalleryPresenter($discussion); print '</div>'; } ?> </div> <div class="__clear-floats"></div> <div class="__clear-floats"></div> </div> </div> <div class="col-md-6"> <div class="__container noPadding min-height-500"> <div class="center-block clearfix relative"> <h1 style="text-align: center"> 6 Jaunākie biedri portālā! </h1> <a href="/portal/users/" class="btn btn-primary right-side-title">Redzēt visus</a> </div> <div class="row"> <?php foreach ($users as $user) { print '<div class="col-md-4 center-align">'; print new ProfileSummaryPresenter($user); print '</div>'; } ?> </div> <div class="__clear-floats"></div> </div> </div> </div> <?php }
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); }
public function testIsNullFilter() { MySql::executeStatement("TRUNCATE TABLE tblCompany"); $company = new \Rhubarb\Stem\Tests\Fixtures\Company(); $company->CompanyName = "GCD"; $company->save(); $companies = new Collection('Rhubarb\\Stem\\Tests\\Fixtures\\Company'); $companies->filter(new Equals("CompanyName", null)); $this->assertEquals(0, $companies->count()); $companies = new Collection('Rhubarb\\Stem\\Tests\\Fixtures\\Company'); $companies->filter(new Equals("ProjectCount", null)); $this->assertEquals(1, $companies->count()); }