ToggleBehaviorTest.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace Tools\Test\TestCase\Model\Behavior;
  3. use Cake\ORM\TableRegistry;
  4. use Tools\TestSuite\TestCase;
  5. class ToggleBehaviorTest extends TestCase {
  6. /**
  7. * @var array
  8. */
  9. public $fixtures = [
  10. 'plugin.Tools.ToggleAddresses',
  11. ];
  12. /**
  13. * @var \Tools\Model\Table\Table|\Tools\Model\Behavior\ToggleBehavior
  14. */
  15. protected $Addresses;
  16. /**
  17. * @return void
  18. */
  19. public function setUp(): void {
  20. parent::setUp();
  21. $this->Addresses = TableRegistry::getTableLocator()->get('ToggleAddresses');
  22. $this->Addresses->addBehavior('Tools.Toggle', ['scopeFields' => 'category_id']);
  23. }
  24. /**
  25. * @return void
  26. */
  27. public function testSaveBasic() {
  28. $data = [
  29. 'name' => 'Foo Bar',
  30. 'category_id' => 2,
  31. ];
  32. $entity = $this->Addresses->newEntity($data);
  33. $address = $this->Addresses->save($entity);
  34. $this->assertTrue((bool)$address);
  35. $this->assertTrue($address->primary);
  36. $data = [
  37. 'name' => 'Foo Bar Ext',
  38. 'category_id' => 2,
  39. ];
  40. $entity2 = $this->Addresses->newEntity($data);
  41. $address = $this->Addresses->save($entity2);
  42. $this->assertTrue((bool)$address);
  43. $address = $this->Addresses->get($entity2->id);
  44. $this->assertFalse($address->primary);
  45. $address->primary = true;
  46. $address = $this->Addresses->save($address);
  47. $this->assertTrue((bool)$address);
  48. $address = $this->Addresses->get($address->id);
  49. $this->assertTrue($address->primary);
  50. $address = $this->Addresses->get($entity->id);
  51. $this->assertFalse($address->primary);
  52. }
  53. /**
  54. * @return void
  55. */
  56. public function testDelete() {
  57. $data = [
  58. 'name' => 'Foo Bar',
  59. 'category_id' => 2,
  60. ];
  61. $entity = $this->Addresses->newEntity($data);
  62. $address = $this->Addresses->save($entity);
  63. $this->assertTrue((bool)$address);
  64. $this->assertTrue($address->primary);
  65. $data = [
  66. 'name' => 'Foo Bar Ext',
  67. 'category_id' => 2,
  68. 'primary' => true,
  69. ];
  70. $address2 = $this->Addresses->newEntity($data);
  71. $address2 = $this->Addresses->save($address2);
  72. $this->assertTrue((bool)$address2);
  73. $address = $this->Addresses->get($address->id);
  74. $this->assertFalse($address->primary);
  75. $address2 = $this->Addresses->get($address2->id);
  76. $this->assertTrue($address2->primary);
  77. $this->Addresses->delete($address2);
  78. $address = $this->Addresses->get($address->id);
  79. $this->assertTrue($address->primary);
  80. }
  81. /**
  82. * @return void
  83. */
  84. public function testToggleField() {
  85. $data = [
  86. 'name' => 'Foo Bar',
  87. 'category_id' => 2,
  88. ];
  89. $entity = $this->Addresses->newEntity($data);
  90. $address = $this->Addresses->save($entity);
  91. $this->assertTrue((bool)$address);
  92. $this->assertTrue($address->primary);
  93. $data = [
  94. 'name' => 'Foo Bar Ext',
  95. 'category_id' => 2,
  96. 'primary' => true,
  97. ];
  98. $address2 = $this->Addresses->newEntity($data);
  99. $address2 = $this->Addresses->save($address2);
  100. $this->assertTrue((bool)$address2);
  101. $address = $this->Addresses->get($address->id);
  102. $this->assertFalse($address->primary);
  103. $address2 = $this->Addresses->get($address2->id);
  104. $this->assertTrue($address2->primary);
  105. $this->Addresses->toggleField($address);
  106. $address = $this->Addresses->get($address->id);
  107. $this->assertTrue($address->primary);
  108. $address2 = $this->Addresses->get($address2->id);
  109. $this->assertFalse($address2->primary);
  110. }
  111. }