public function testTableNamespaceAndDbNamespace() { $d = new Database('fooDb'); $d->setNamespace('Baz'); $t = new Table('fooTable'); $t->setNamespace('Foo\\Bar'); $d->addTable($t); $builder = new TestableOMBuilder2($t); $this->assertEquals('Baz\\Foo\\Bar', $builder->getNamespace(), 'Builder namespace is composed from the database and table namespaces when both are set'); }
/** * @return void */ protected function _before() { $config = new QuickGeneratorConfig(); $table = new Table('Foo'); $column = new Column('testColumn', PropelTypes::INTEGER); $table->addColumn($column); $table->setNamespace('Unit\\Spryker\\Zed\\Propel\\Business\\Builder\\QueryBuilder'); $table->setDatabase(new Database('TestDB', new DefaultPlatform())); foreach ($this->getFilesToGenerate() as $fileName => $builderClass) { $builder = new $builderClass($table); $builder->setGeneratorConfig($config); $this->writePropelFile($builder, $fileName); } }
/** * Computes the table namespace based on the current relative or * absolute table namespace and the database namespace. * * @param Table $table * @return string */ private function computeTableNamespace(Table $table) { $namespace = $table->getNamespace(); if ($this->isAbsoluteNamespace($namespace)) { $namespace = ltrim($namespace, '\\'); $table->setNamespace($namespace); return $namespace; } if ($namespace = $this->getNamespace()) { if ($table->getNamespace()) { $namespace .= '\\' . $table->getNamespace(); } $table->setNamespace($namespace); } return $namespace; }
/** * @dataProvider provideNamespaces * */ public function testSetNamespace($namespace, $expected) { $table = new Table(); $table->setNamespace($namespace); $this->assertSame($expected, $table->getNamespace()); }
$table3->setPackage('Acme.Blog'); $table3->addColumns([$column31, $column32]); $table4 = new Table('blog_tag'); $table4->setDescription('The list of tags'); $table4->setNamespace('Blog'); $table4->setPackage('Acme.Blog'); $table4->addColumns([$column41, $column42]); $table5 = new Table('blog_post_tag'); $table5->setNamespace('Blog'); $table5->setPackage('Acme.Blog'); $table5->setCrossRef(); $table5->addColumns([$column51, $column52]); $table5->addForeignKeys([$fkPostTag, $fkTagPost]); $table6 = new Table('cms_page'); $table6->setPhpName('Page'); $table6->setNamespace('Cms'); $table6->setBaseClass('Acme\\Model\\PublicationActiveRecord'); $table6->setPackage('Acme.Cms'); $table6->addColumns([$column61, $column62, $column63, $column64]); $table6->addIndex($pageContentFulltextIdx); $table6->addVendorInfo(new VendorInfo('mysql', ['Engine' => 'MyISAM'])); /* Database */ $database = new Database('acme_blog', new MysqlPlatform()); $database->setSchema('acme'); $database->setTablePrefix('acme_'); $database->setNamespace('Acme\\Model'); $database->setBaseClass('Acme\\Model\\ActiveRecord'); $database->setPackage('Acme'); $database->setHeavyIndexing(); $database->addVendorInfo(new VendorInfo('mysql', ['Engine' => 'InnoDB', 'Charset' => 'utf8'])); $database->addTables([$table1, $table2, $table3, $table4, $table5, $table6]);
public function testAppendXmlNamespaceWithAutoPackage() { $schema = <<<EOF <?xml version="1.0"?> <table name="test" namespace="\\testNs"/> EOF; $doc = new DOMDocument('1.0'); $doc->formatOutput = true; $config = new GeneratorConfig(); $config->setBuildProperties(array('propel.namespace.autoPackage' => 'true')); $appData = new AppData(); $appData->setGeneratorConfig($config); $db = new Database('testDb'); $db->setAppData($appData); $table = new Table('test'); $table->setDatabase($db); $table->setNamespace('\\testNs'); $table->appendXml($doc); $xmlstr = trim($doc->saveXML()); $this->assertSame($schema, $xmlstr); $schema = <<<EOF <?xml version="1.0"?> <table name="test" namespace="\\testNs" package="testPkg"/> EOF; $doc = new DOMDocument('1.0'); $doc->formatOutput = true; $table->setPackage('testPkg'); $table->appendXml($doc); $xmlstr = trim($doc->saveXML()); $this->assertSame($schema, $xmlstr); }
public function testAddTableSkipsDatabaseNamespaceWhenTableNamespaceIsAbsolute() { $db = new Database(); $db->setNamespace('Foo'); $t1 = new Table('t1'); $t1->setNamespace('\\Bar'); $db->addTable($t1); $this->assertEquals('Bar', $t1->getNamespace()); }
public function testValidateReturnsTrueWhenTwoTablesHaveSamePhpNameInDifferentNamespaces() { $column1 = new Column('id'); $column1->setPrimaryKey(true); $table1 = new Table('foo'); $table1->addColumn($column1); $table1->setNamespace('Foo'); $column2 = new Column('id'); $column2->setPrimaryKey(true); $table2 = new Table('bar'); $table2->addColumn($column2); $table2->setPhpName('Foo'); $table2->setNamespace('Bar'); $database = new Database(); $database->addTable($table1); $database->addTable($table2); $schema = new Schema(); $schema->addDatabase($database); $validator = new SchemaValidator($schema); $this->assertTrue($validator->validate()); }