]> git.agnieray.net Git - galette.git/blobdiff - tests/Galette/Features/tests/units/HasEvent.php
Disable events from mass changes; closes #1733
[galette.git] / tests / Galette / Features / tests / units / HasEvent.php
diff --git a/tests/Galette/Features/tests/units/HasEvent.php b/tests/Galette/Features/tests/units/HasEvent.php
new file mode 100644 (file)
index 0000000..2f17592
--- /dev/null
@@ -0,0 +1,124 @@
+<?php
+
+/**
+ * HasEvents tests
+ *
+ * PHP version 5
+ *
+ * Copyright © 2024 The Galette Team
+ *
+ * This file is part of Galette (http://galette.tuxfamily.org).
+ *
+ * Galette is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Galette is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Galette. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Features
+ * @package   GaletteTests
+ *
+ * @author    Johan Cwiklinski <johan@x-tnd.be>
+ * @copyright 2024 The Galette Team
+ * @license   https://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
+ * @link      https://galette.eu
+ */
+
+namespace Galette\Entity\test\units;
+
+use Galette\GaletteTestCase;
+
+/**
+ * HasEvent tests class
+ *
+ * @category  Features
+ * @name      HasEvents
+ * @package   GaletteTests
+ * @author    Johan Cwiklinski <johan@x-tnd.be>
+ * @copyright 2024 The Galette Team
+ * @license   https://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
+ * @link      https://galette.eu
+ */
+class HasEvent extends GaletteTestCase
+{
+    protected int $seed = 20240223092214;
+
+    /**
+     * Test HasEvent capacities
+     *
+     * @return void
+     */
+    public function testCapacities(): void
+    {
+        $this->adh = new \Galette\Entity\Adherent($this->zdb);
+
+        //per default, add and edit events are active on contributions
+        $contrib = new \Galette\Entity\Contribution($this->zdb, $this->login);
+        $this->assertTrue($contrib->areEventsEnabled());
+        $this->assertTrue($contrib->hasAddEvent());
+        $this->assertTrue($contrib->hasEditEvent());
+        $this->assertFalse($contrib->hasDeleteEvent());
+        $this->assertEquals('contribution.add', $contrib->getAddEventName());
+        $this->assertEquals('contribution.edit', $contrib->getEditEventName());
+        $this->assertNull($contrib->getDeleteEventName());
+
+        //per default, add and edit events are active on members
+        $this->assertTrue($this->adh->areEventsEnabled());
+        $this->assertTrue($this->adh->hasAddEvent());
+        $this->assertTrue($this->adh->hasEditEvent());
+        $this->assertFalse($this->adh->hasDeleteEvent());
+        $this->assertEquals('member.add', $this->adh->getAddEventName());
+        $this->assertEquals('member.edit', $this->adh->getEditEventName());
+        $this->assertNull($this->adh->getDeleteEventName());
+
+        //disable add event
+        $this->adh->withoutAddEvent();
+        $this->assertFalse($this->adh->hasAddEvent());
+        $this->assertNull($this->adh->getAddEventName());
+        $this->assertTrue($this->adh->hasEditEvent());
+        //enable add event
+        $this->adh->withAddEvent();
+        $this->assertTrue($this->adh->hasAddEvent());
+
+        //disable edit event
+        $this->adh->withoutEditEvent();
+        $this->assertTrue($this->adh->hasAddEvent());
+        $this->assertFalse($this->adh->hasEditEvent());
+        $this->assertNull($this->adh->getEditEventName());
+        //enable edit event
+        $this->adh->withEditEvent();
+        $this->assertTrue($this->adh->hasEditEvent());
+
+        //enable delete event
+        $this->adh->withDeleteEvent();
+        $this->assertTrue($this->adh->hasDeleteEvent());
+        $this->assertEquals('member.delete', $this->adh->getDeleteEventName());
+        //disable delete event
+        $this->adh->withoutDeleteEvent();
+        $this->assertFalse($this->adh->hasDeleteEvent());
+
+        // disable all events
+        $this->adh->disableEvents();
+        $this->assertFalse($this->adh->areEventsEnabled());
+        $this->assertFalse($this->adh->hasAddEvent());
+        $this->assertFalse($this->adh->hasEditEvent());
+        $this->assertFalse($this->adh->hasDeleteEvent());
+        $this->assertNull($this->adh->getAddEventName());
+        $this->assertNull($this->adh->getEditEventName());
+        $this->assertNull($this->adh->getDeleteEventName());
+
+        //reactivate events
+        $this->adh->activateEvents();
+        $this->assertTrue($this->adh->areEventsEnabled());
+        $this->assertTrue($this->adh->hasAddEvent());
+        $this->assertTrue($this->adh->hasEditEvent());
+        $this->assertFalse($this->adh->hasDeleteEvent());
+    }
+}