DatabaseShowTablesCommandTest.php 2.9 KB

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