AfterSaveBehaviorTest.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace Tools\Test\TestCase\Model\Behavior;
  3. use Cake\ORM\TableRegistry;
  4. use Tools\TestSuite\TestCase;
  5. class AfterSaveBehaviorTest extends TestCase {
  6. /**
  7. * @var array
  8. */
  9. public $fixtures = [
  10. 'core.Articles',
  11. ];
  12. /**
  13. * @var \Tools\Model\Table\Table|\Tools\Model\Behavior\AfterSaveBehavior
  14. */
  15. protected $table;
  16. /**
  17. * @return void
  18. */
  19. public function setUp(): void {
  20. parent::setUp();
  21. $this->table = TableRegistry::getTableLocator()->get('Articles');
  22. $this->table->addBehavior('Tools.AfterSave');
  23. }
  24. /**
  25. * @return void
  26. */
  27. public function testSaveBasic() {
  28. $data = [
  29. 'body' => 'test save',
  30. ];
  31. $entity = $this->table->newEntity($data);
  32. $entityAfter = $this->table->save($entity);
  33. $this->assertTrue((bool)$entityAfter);
  34. // The saved entity is resetted
  35. $this->assertFalse($entityAfter->isDirty('body'));
  36. $this->assertFalse($entityAfter->isNew());
  37. $this->assertSame(['id' => 4, 'body' => 'test save'], $entityAfter->extractOriginal(['id', 'body']));
  38. $entityBefore = $this->table->getEntityBeforeSave();
  39. // The stored one from before the save contains the info we want
  40. $this->assertTrue($entityBefore->isDirty('body'));
  41. $this->assertTrue($entityBefore->isNew());
  42. $this->assertSame(['id' => null, 'body' => 'test save'], $entityBefore->extractOriginal(['id', 'body']));
  43. }
  44. /**
  45. * @return void
  46. */
  47. public function testSaveExisting() {
  48. $data = [
  49. 'body' => 'test save',
  50. ];
  51. $entity = $this->table->newEntity($data);
  52. $this->table->saveOrFail($entity);
  53. $entity = $this->table->get($entity->id);
  54. $entity = $this->table->patchEntity($entity, ['body' => 'modified']);
  55. $this->assertEmpty($entity->getErrors());
  56. $entityAfter = $this->table->save($entity);
  57. $this->assertTrue((bool)$entityAfter);
  58. // The saved entity is resetted
  59. $this->assertFalse($entityAfter->isDirty('body'));
  60. $this->assertSame(['id' => 4, 'body' => 'modified'], $entityAfter->extractOriginal(['id', 'body']));
  61. $entityBefore = $this->table->getEntityBeforeSave();
  62. // The stored one from before the save contains the info we want
  63. $this->assertTrue($entityBefore->isDirty('body'));
  64. $this->assertSame(['id' => 4, 'body' => 'test save'], $entityBefore->extractOriginal(['id', 'body']));
  65. }
  66. }