2
0

DatabaseShowTablesCommandTest.php 2.8 KB

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