DatabaseSyncCommandTest.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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\Migration\PaperMigration;
  15. use PhpDevCommunity\UniTester\TestCase;
  16. use Test\PhpDevCommunity\PaperORM\Entity\UserTest;
  17. use Test\PhpDevCommunity\PaperORM\Helper\DataBaseHelperTest;
  18. class DatabaseSyncCommandTest 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 = new EntityManager($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. $paperMigration = PaperMigration::create($em, 'mig_versions', __DIR__ . '/migrations');
  41. $runner = new CommandRunner([
  42. new DatabaseSyncCommand($paperMigration, __DIR__ . '/Entity', 'test'),
  43. ]);
  44. $out = [];
  45. $code = $runner->run(new CommandParser(['', 'paper:database:sync', '--no-execute']), new Output(function ($message) use(&$out) {
  46. $out[] = $message;
  47. }));
  48. $this->assertEquals(0, $code);
  49. $this->assertStringContains( implode(' ', $out), "[INFO] Preview mode only — SQL statements were displayed but NOT executed.");
  50. $out = [];
  51. $code = $runner->run(new CommandParser(['', 'paper:database:sync']), new Output(function ($message) use(&$out) {
  52. $out[] = $message;
  53. }));
  54. $this->assertEquals(0, $code);
  55. $this->assertStringContains( implode(' ', $out), "✔ Executed:");
  56. //
  57. // $out = [];
  58. // $code = $runner->run(new CommandParser(['', 'paper:show:tables', 'post', '--columns']), new Output(function ($message) use(&$out) {
  59. // $out[] = $message;
  60. // }));
  61. //
  62. // $this->assertEquals(0, $code);
  63. // $this->assertEquals(62, count($out));
  64. $platform->dropDatabase();
  65. }
  66. }