PageRenderTime 45ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/vendor/propel/test/testsuite/generator/util/PropelDotGeneratorTest.php

https://bitbucket.org/bayrock/gw2spidy
PHP | 196 lines | 151 code | 34 blank | 11 comment | 0 complexity | b195ef6c19898c10f56c5a1c3621ab9d MD5 | raw file
Possible License(s): BSD-3-Clause, BSD-2-Clause
  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__) . '/../../../../generator/lib/util/PropelDotGenerator.php';
  10. require_once dirname(__FILE__) . '/../../../../generator/lib/model/AppData.php';
  11. /**
  12. *
  13. * @package generator.util
  14. */
  15. class PropelDotGeneratorTest extends PHPUnit_Framework_TestCase
  16. {
  17. public function testEmptyDatabase()
  18. {
  19. $db = new Database();
  20. $db->setName('Empty');
  21. $expected = implode("\n", array(
  22. 'digraph G {',
  23. '}',
  24. '',
  25. ));
  26. $this->assertEquals($expected, PropelDotGenerator::create($db));
  27. }
  28. public function testSingleTableWithoutName()
  29. {
  30. $column = new Column();
  31. $column->setName('id');
  32. $column->setPrimaryKey(true);
  33. $column->setAutoIncrement(true);
  34. $column->setType('integer');
  35. $table = new Table();
  36. $table->addColumn($column);
  37. $db = new Database();
  38. $db->setName('SingleTable');
  39. $db->addTable($table);
  40. $expected = implode("\n", array(
  41. 'digraph G {',
  42. 'node [label="{<table>|<cols>id (integer) [PK]\l}", shape=record];',
  43. '}',
  44. '',
  45. ));
  46. $this->assertEquals($expected, PropelDotGenerator::create($db));
  47. }
  48. public function testMultipleTablesWithoutForeignKey()
  49. {
  50. $column = new Column();
  51. $column->setName('id');
  52. $column->setPrimaryKey(true);
  53. $column->setAutoIncrement(true);
  54. $column->setType('integer');
  55. $table = new Table();
  56. $table->setCommonName('table_one');
  57. $table->addColumn($column);
  58. $db = new Database();
  59. $db->setName('MultipleTables');
  60. $db->addTable($table);
  61. $column = new Column();
  62. $column->setName('id');
  63. $column->setPrimaryKey(true);
  64. $column->setAutoIncrement(true);
  65. $column->setType('integer');
  66. $table = new Table();
  67. $table->setCommonName('table_two');
  68. $table->addColumn($column);
  69. $db->addTable($table);
  70. $expected = implode("\n", array(
  71. 'digraph G {',
  72. 'nodetable_one [label="{<table>table_one|<cols>id (integer) [PK]\l}", shape=record];',
  73. 'nodetable_two [label="{<table>table_two|<cols>id (integer) [PK]\l}", shape=record];',
  74. '}',
  75. '',
  76. ));
  77. $this->assertEquals($expected, PropelDotGenerator::create($db));
  78. }
  79. public function testMultipleTablesWithFK()
  80. {
  81. $column = new Column();
  82. $column->setName('id');
  83. $column->setPrimaryKey(true);
  84. $column->setAutoIncrement(true);
  85. $column->setType('integer');
  86. $table = new Table();
  87. $table->setCommonName('table_one');
  88. $table->addColumn($column);
  89. $db = new Database();
  90. $db->setName('MultipleTables');
  91. $db->addTable($table);
  92. $column = new Column();
  93. $column->setName('id');
  94. $column->setPrimaryKey(true);
  95. $column->setAutoIncrement(true);
  96. $column->setType('integer');
  97. $c2 = new Column();
  98. $c2->setName('foreign_id');
  99. $c2->setType('integer');
  100. $table = new Table();
  101. $table->setCommonName('table_two');
  102. $table->addColumn($column);
  103. $table->addColumn($c2);
  104. $fk = new ForeignKey();
  105. $fk->setName('FK_1');
  106. $fk->addReference('foreign_id', 'id');
  107. $fk->setForeignTableCommonName('table_one');
  108. $table->addForeignKey($fk);
  109. $db->addTable($table);
  110. $expected = implode("\n", array(
  111. 'digraph G {',
  112. 'nodetable_one [label="{<table>table_one|<cols>id (integer) [PK]\l}", shape=record];',
  113. 'nodetable_two [label="{<table>table_two|<cols>id (integer) [PK]\lforeign_id (integer) [FK]\l}", shape=record];',
  114. 'nodetable_two:cols -> nodetable_one:table [label="foreign_id=id"];',
  115. '}',
  116. '',
  117. ));
  118. $this->assertEquals($expected, PropelDotGenerator::create($db));
  119. }
  120. public function testColumnIsFKAndPK()
  121. {
  122. $column = new Column();
  123. $column->setName('id');
  124. $column->setPrimaryKey(true);
  125. $column->setAutoIncrement(true);
  126. $column->setType('integer');
  127. $table = new Table();
  128. $table->setCommonName('table_one');
  129. $table->addColumn($column);
  130. $db = new Database();
  131. $db->setName('MultipleTables');
  132. $db->addTable($table);
  133. $column = new Column();
  134. $column->setName('id');
  135. $column->setPrimaryKey(true);
  136. $column->setAutoIncrement(true);
  137. $column->setType('integer');
  138. $c2 = new Column();
  139. $c2->setPrimaryKey(true);
  140. $c2->setName('foreign_id');
  141. $c2->setType('integer');
  142. $table = new Table();
  143. $table->setCommonName('table_two');
  144. $table->addColumn($column);
  145. $table->addColumn($c2);
  146. $fk = new ForeignKey();
  147. $fk->setName('FK_1');
  148. $fk->addReference('foreign_id', 'id');
  149. $fk->setForeignTableCommonName('table_one');
  150. $table->addForeignKey($fk);
  151. $db->addTable($table);
  152. $expected = implode("\n", array(
  153. 'digraph G {',
  154. 'nodetable_one [label="{<table>table_one|<cols>id (integer) [PK]\l}", shape=record];',
  155. 'nodetable_two [label="{<table>table_two|<cols>id (integer) [PK]\lforeign_id (integer) [FK] [PK]\l}", shape=record];',
  156. 'nodetable_two:cols -> nodetable_one:table [label="foreign_id=id"];',
  157. '}',
  158. '',
  159. ));
  160. $this->assertEquals($expected, PropelDotGenerator::create($db));
  161. }
  162. }