PlatformDiffTest.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace Test\PhpDevCommunity\PaperORM;
  3. use PhpDevCommunity\PaperORM\EntityManager;
  4. use PhpDevCommunity\PaperORM\Mapping\Column\BoolColumn;
  5. use PhpDevCommunity\PaperORM\Mapping\Column\PrimaryKeyColumn;
  6. use PhpDevCommunity\PaperORM\Mapping\Column\StringColumn;
  7. use PhpDevCommunity\UniTester\TestCase;
  8. class PlatformDiffTest extends TestCase
  9. {
  10. private EntityManager $em;
  11. protected function setUp(): void
  12. {
  13. $this->em = new EntityManager([
  14. 'driver' => 'sqlite',
  15. 'user' => null,
  16. 'password' => null,
  17. 'memory' => true,
  18. ]);
  19. }
  20. protected function tearDown(): void
  21. {
  22. $this->em->getConnection()->close();
  23. }
  24. protected function execute(): void
  25. {
  26. $platform = $this->em->createDatabasePlatform();
  27. $columns = [
  28. new PrimaryKeyColumn('id'),
  29. new StringColumn('firstname'),
  30. new StringColumn('lastname'),
  31. new StringColumn('email'),
  32. new StringColumn('password'),
  33. new BoolColumn('active', 'is_active'),
  34. ];
  35. $platform->createTable('user', $columns);
  36. $diff = $platform->diff('user', $columns, [] );
  37. $this->assertEmpty($diff->getColumnsToAdd());
  38. $this->assertEmpty($diff->getColumnsToUpdate());
  39. $this->assertEmpty($diff->getColumnsToDelete());
  40. //
  41. //
  42. $columns[3] = new StringColumn('username');
  43. $diff = $platform->diff('user', $columns, [] );
  44. $this->assertTrue(count($diff->getColumnsToAdd()) == 1);
  45. $this->assertTrue(count($diff->getColumnsToDelete()) == 1);
  46. $this->assertEmpty($diff->getColumnsToUpdate());
  47. $platform->dropTable('user');
  48. $platform->createTable('user', $columns, [] );
  49. $columns[3] = new StringColumn('username', 'username', 100);
  50. $diff = $platform->diff('user', $columns, [] );
  51. $this->assertTrue(count($diff->getColumnsToUpdate()) == 1);
  52. $this->assertEmpty($diff->getColumnsToAdd());
  53. $this->assertEmpty($diff->getColumnsToDelete());
  54. $diff = $platform->diff('user2', $columns, [] );
  55. $this->assertTrue(count($diff->getColumnsToAdd()) == 6);
  56. }
  57. }