2
0

DatabaseShowTablesCommandTest.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace Test\PhpDevCommunity\PaperORM;
  3. use PhpDevCommunity\Console\CommandParser;
  4. use PhpDevCommunity\Console\CommandRunner;
  5. use PhpDevCommunity\Console\Output;
  6. use PhpDevCommunity\PaperORM\Command\DatabaseSyncCommand;
  7. use PhpDevCommunity\PaperORM\Command\ShowTablesCommand;
  8. use PhpDevCommunity\PaperORM\EntityManager;
  9. use PhpDevCommunity\PaperORM\Mapping\Column\BoolColumn;
  10. use PhpDevCommunity\PaperORM\Mapping\Column\IntColumn;
  11. use PhpDevCommunity\PaperORM\Mapping\Column\JoinColumn;
  12. use PhpDevCommunity\PaperORM\Mapping\Column\PrimaryKeyColumn;
  13. use PhpDevCommunity\PaperORM\Mapping\Column\StringColumn;
  14. use PhpDevCommunity\PaperORM\PaperConfiguration;
  15. use PhpDevCommunity\UniTester\TestCase;
  16. use Test\PhpDevCommunity\PaperORM\Entity\UserTest;
  17. use Test\PhpDevCommunity\PaperORM\Helper\DataBaseHelperTest;
  18. class DatabaseShowTablesCommandTest extends TestCase
  19. {
  20. protected function setUp(): void
  21. {
  22. }
  23. protected function tearDown(): void
  24. {
  25. }
  26. protected function execute(): void
  27. {
  28. foreach (DataBaseHelperTest::drivers() as $params) {
  29. $em = EntityManager::createFromConfig(PaperConfiguration::fromArray($params));
  30. $this->executeTest($em);
  31. $em->getConnection()->close();
  32. }
  33. }
  34. private function executeTest(EntityManager $em)
  35. {
  36. $platform = $em->getPlatform();
  37. $platform->createDatabaseIfNotExists();
  38. $platform->dropDatabase();
  39. $platform->createDatabaseIfNotExists();
  40. $platform->createTable('user', [
  41. new PrimaryKeyColumn('id'),
  42. new StringColumn('firstname'),
  43. new StringColumn('lastname'),
  44. new StringColumn('email'),
  45. new StringColumn('password'),
  46. new BoolColumn('is_active'),
  47. ]);
  48. $platform->createTable('post', [
  49. new PrimaryKeyColumn('id'),
  50. new JoinColumn('user_id', UserTest::class),
  51. new StringColumn('title'),
  52. new StringColumn('content'),
  53. ]);
  54. $runner = new CommandRunner([
  55. new ShowTablesCommand($em)
  56. ]);
  57. $out = [];
  58. $code = $runner->run(new CommandParser(['', 'paper:show:tables', '--columns']), new Output(function ($message) use(&$out) {
  59. $out[] = $message;
  60. }));
  61. $this->assertEquals(0, $code);
  62. $this->assertEquals(132, count($out));
  63. $out = [];
  64. $code = $runner->run(new CommandParser(['', 'paper:show:tables', 'post']), new Output(function ($message) use(&$out) {
  65. $out[] = $message;
  66. }));
  67. $this->assertEquals(0, $code);
  68. $this->assertEquals(18, count($out));
  69. $out = [];
  70. $code = $runner->run(new CommandParser(['', 'paper:show:tables', 'post', '--columns']), new Output(function ($message) use(&$out) {
  71. $out[] = $message;
  72. }));
  73. $this->assertEquals(0, $code);
  74. $this->assertEquals(132, count($out));
  75. $platform->dropDatabase();
  76. }
  77. }