/plugins/sfPropelORMPlugin/lib/vendor/propel/test/testsuite/generator/platform/PlatformTestProvider.php

https://github.com/crew-cr/Crew · PHP · 311 lines · 272 code · 28 blank · 11 comment · 0 complexity · 70fa8b5699b878b1b573979f0073928d MD5 · raw file

  1. <?php
  2. /**
  3. * This file is part of the Propel package.
  4. * For the full copyright and license information, please view the LICENSE
  5. * file that was distributed with this source code.
  6. *
  7. * @license MIT License
  8. */
  9. require_once dirname(__FILE__) . '/PlatformTestBase.php';
  10. /**
  11. * provider for platform DDL unit tests
  12. * @package generator.platform
  13. */
  14. abstract class PlatformTestProvider extends PlatformTestBase
  15. {
  16. public function providerForTestGetAddTablesDDL()
  17. {
  18. $schema = <<<EOF
  19. <database name="test">
  20. <table name="book">
  21. <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
  22. <column name="title" type="VARCHAR" size="255" required="true" />
  23. <index>
  24. <index-column name="title" />
  25. </index>
  26. <column name="author_id" type="INTEGER"/>
  27. <foreign-key foreignTable="author">
  28. <reference local="author_id" foreign="id" />
  29. </foreign-key>
  30. </table>
  31. <table name="author">
  32. <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
  33. <column name="first_name" type="VARCHAR" size="100" />
  34. <column name="last_name" type="VARCHAR" size="100" />
  35. </table>
  36. </database>
  37. EOF;
  38. return array(array($schema));
  39. }
  40. public function providerForTestGetAddTablesDDLSchema()
  41. {
  42. $schema = <<<EOF
  43. <database name="test" schema="x">
  44. <table name="book">
  45. <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
  46. <column name="title" type="VARCHAR" size="255" required="true" />
  47. <index>
  48. <index-column name="title" />
  49. </index>
  50. <column name="author_id" type="INTEGER"/>
  51. <foreign-key foreignTable="author" foreignSchema="y">
  52. <reference local="author_id" foreign="id" />
  53. </foreign-key>
  54. </table>
  55. <table name="author" schema="y">
  56. <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
  57. <column name="first_name" type="VARCHAR" size="100" />
  58. <column name="last_name" type="VARCHAR" size="100" />
  59. </table>
  60. <table name="book_summary">
  61. <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
  62. <column name="book_id" required="true" type="INTEGER" />
  63. <column name="summary" required="true" type="LONGVARCHAR" />
  64. <foreign-key foreignTable="book" onDelete="cascade">
  65. <reference local="book_id" foreign="id" />
  66. </foreign-key>
  67. </table>
  68. </database>
  69. EOF;
  70. return array(array($schema));
  71. }
  72. public function providerForTestGetAddTablesSkipSQLDDL()
  73. {
  74. $schema = <<<EOF
  75. <database name="test">
  76. <table name="book" skipSql="true">
  77. <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
  78. <column name="title" type="VARCHAR" size="255" required="true" />
  79. <index>
  80. <index-column name="title" />
  81. </index>
  82. <column name="author_id" type="INTEGER"/>
  83. <foreign-key foreignTable="author">
  84. <reference local="author_id" foreign="id" />
  85. </foreign-key>
  86. </table>
  87. <table name="author" skipSql="true">
  88. <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
  89. <column name="first_name" type="VARCHAR" size="100" />
  90. <column name="last_name" type="VARCHAR" size="100" />
  91. </table>
  92. </database>
  93. EOF;
  94. return array(array($schema));
  95. }
  96. public function providerForTestGetAddTableDDLSimplePK()
  97. {
  98. $schema = <<<EOF
  99. <database name="test">
  100. <table name="foo" description="This is foo table">
  101. <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
  102. <column name="bar" type="VARCHAR" size="255" required="true" />
  103. </table>
  104. </database>
  105. EOF;
  106. return array(array($schema));
  107. }
  108. public function providerForTestGetAddTableDDLNonIntegerPK()
  109. {
  110. $schema = <<<EOF
  111. <database name="test">
  112. <table name="foo" description="This is foo table">
  113. <column name="foo" primaryKey="true" type="VARCHAR" />
  114. <column name="bar" type="VARCHAR" size="255" required="true" />
  115. </table>
  116. </database>
  117. EOF;
  118. return array(array($schema));
  119. }
  120. public function providerForTestGetAddTableDDLCompositePK()
  121. {
  122. $schema = <<<EOF
  123. <database name="test">
  124. <table name="foo">
  125. <column name="foo" primaryKey="true" type="INTEGER" />
  126. <column name="bar" primaryKey="true" type="INTEGER" />
  127. <column name="baz" type="VARCHAR" size="255" required="true" />
  128. </table>
  129. </database>
  130. EOF;
  131. return array(array($schema));
  132. }
  133. public function providerForTestGetAddTableDDLUniqueIndex()
  134. {
  135. $schema = <<<EOF
  136. <database name="test">
  137. <table name="foo">
  138. <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
  139. <column name="bar" type="INTEGER" />
  140. <unique>
  141. <unique-column name="bar" />
  142. </unique>
  143. </table>
  144. </database>
  145. EOF;
  146. return array(array($schema));
  147. }
  148. public function providerForTestGetAddTableDDLSchema()
  149. {
  150. $schema = <<<EOF
  151. <database name="test">
  152. <table name="foo" schema="Woopah">
  153. <column name="id" primaryKey="true" type="INTEGER" autoIncrement="true" />
  154. <column name="bar" type="INTEGER" />
  155. </table>
  156. </database>
  157. EOF;
  158. return array(array($schema));
  159. }
  160. public function providerForTestGetUniqueDDL()
  161. {
  162. $table = new Table('foo');
  163. $column1 = new Column('bar1');
  164. $column1->getDomain()->copy(new Domain('FOOTYPE'));
  165. $table->addColumn($column1);
  166. $column2 = new Column('bar2');
  167. $column2->getDomain()->copy(new Domain('BARTYPE'));
  168. $table->addColumn($column2);
  169. $index = new Unique('babar');
  170. $index->addColumn($column1);
  171. $index->addColumn($column2);
  172. $table->addUnique($index);
  173. return array(
  174. array($index)
  175. );
  176. }
  177. public function providerForTestGetIndicesDDL()
  178. {
  179. $table = new Table('foo');
  180. $column1 = new Column('bar1');
  181. $column1->getDomain()->copy(new Domain('FOOTYPE'));
  182. $table->addColumn($column1);
  183. $column2 = new Column('bar2');
  184. $column2->getDomain()->copy(new Domain('BARTYPE'));
  185. $table->addColumn($column2);
  186. $index1 = new Index('babar');
  187. $index1->addColumn($column1);
  188. $index1->addColumn($column2);
  189. $table->addIndex($index1);
  190. $index2 = new Index('foo_index');
  191. $index2->addColumn($column1);
  192. $table->addIndex($index2);
  193. return array(
  194. array($table)
  195. );
  196. }
  197. public function providerForTestGetIndexDDL()
  198. {
  199. $table = new Table('foo');
  200. $column1 = new Column('bar1');
  201. $column1->getDomain()->copy(new Domain('FOOTYPE'));
  202. $table->addColumn($column1);
  203. $column2 = new Column('bar2');
  204. $column2->getDomain()->copy(new Domain('BARTYPE'));
  205. $table->addColumn($column2);
  206. $index = new Index('babar');
  207. $index->addColumn($column1);
  208. $index->addColumn($column2);
  209. $table->addIndex($index);
  210. return array(
  211. array($index)
  212. );
  213. }
  214. public function providerForTestPrimaryKeyDDL()
  215. {
  216. $table = new Table('foo');
  217. $column = new Column('bar');
  218. $column->setPrimaryKey(true);
  219. $table->addColumn($column);
  220. return array(
  221. array($table)
  222. );
  223. }
  224. public function providerForTestGetForeignKeyDDL()
  225. {
  226. $table1 = new Table('foo');
  227. $column1 = new Column('bar_id');
  228. $column1->getDomain()->copy(new Domain('FOOTYPE'));
  229. $table1->addColumn($column1);
  230. $table2 = new Table('bar');
  231. $column2 = new Column('id');
  232. $column2->getDomain()->copy(new Domain('BARTYPE'));
  233. $table2->addColumn($column2);
  234. $fk = new ForeignKey('foo_bar_FK');
  235. $fk->setForeignTableCommonName('bar');
  236. $fk->addReference($column1, $column2);
  237. $fk->setOnDelete('CASCADE');
  238. $table1->addForeignKey($fk);
  239. return array(
  240. array($fk)
  241. );
  242. }
  243. public function providerForTestGetForeignKeySkipSqlDDL()
  244. {
  245. $arr = self::providerForTestGetForeignKeyDDL();
  246. $fk = $arr[0][0];
  247. $fk->setSkipSql(true);
  248. return array(
  249. array($fk)
  250. );
  251. }
  252. public function providerForTestGetForeignKeysDDL()
  253. {
  254. $table1 = new Table('foo');
  255. $column1 = new Column('bar_id');
  256. $column1->getDomain()->copy(new Domain('FOOTYPE'));
  257. $table1->addColumn($column1);
  258. $table2 = new Table('bar');
  259. $column2 = new Column('id');
  260. $column2->getDomain()->copy(new Domain('BARTYPE'));
  261. $table2->addColumn($column2);
  262. $fk = new ForeignKey('foo_bar_FK');
  263. $fk->setForeignTableCommonName('bar');
  264. $fk->addReference($column1, $column2);
  265. $fk->setOnDelete('CASCADE');
  266. $table1->addForeignKey($fk);
  267. $column3 = new Column('baz_id');
  268. $column3->getDomain()->copy(new Domain('BAZTYPE'));
  269. $table1->addColumn($column3);
  270. $table3 = new Table('baz');
  271. $column4 = new Column('id');
  272. $column4->getDomain()->copy(new Domain('BAZTYPE'));
  273. $table3->addColumn($column4);
  274. $fk = new ForeignKey('foo_baz_FK');
  275. $fk->setForeignTableCommonName('baz');
  276. $fk->addReference($column3, $column4);
  277. $fk->setOnDelete('SETNULL');
  278. $table1->addForeignKey($fk);
  279. return array(
  280. array($table1)
  281. );
  282. }
  283. }