DatabaseShowTablesCommandTest.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace Test\Michel\PaperORM;
  3. use Michel\Console\CommandParser;
  4. use Michel\Console\CommandRunner;
  5. use Michel\Console\Output;
  6. use Michel\PaperORM\Command\ShowTablesCommand;
  7. use Michel\PaperORM\EntityManager;
  8. use Michel\PaperORM\Mapping\Column\BoolColumn;
  9. use Michel\PaperORM\Mapping\Column\JoinColumn;
  10. use Michel\PaperORM\Mapping\Column\PrimaryKeyColumn;
  11. use Michel\PaperORM\Mapping\Column\StringColumn;
  12. use Michel\PaperORM\PaperConfiguration;
  13. use Michel\UniTester\TestCase;
  14. use Test\Michel\PaperORM\Entity\UserTest;
  15. use Test\Michel\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 = EntityManager::createFromConfig(PaperConfiguration::fromArray($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(131, 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(15, 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(61, count($out));
  73. $platform->dropDatabase();
  74. }
  75. }