]> git.agnieray.net Git - galette.git/blob - tests/Galette/Features/tests/units/HasEvent.php
Disable events from mass changes; closes #1733
[galette.git] / tests / Galette / Features / tests / units / HasEvent.php
1 <?php
2
3 /**
4 * HasEvents tests
5 *
6 * PHP version 5
7 *
8 * Copyright © 2024 The Galette Team
9 *
10 * This file is part of Galette (http://galette.tuxfamily.org).
11 *
12 * Galette is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation, either version 3 of the License, or
15 * (at your option) any later version.
16 *
17 * Galette is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with Galette. If not, see <http://www.gnu.org/licenses/>.
24 *
25 * @category Features
26 * @package GaletteTests
27 *
28 * @author Johan Cwiklinski <johan@x-tnd.be>
29 * @copyright 2024 The Galette Team
30 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
31 * @link https://galette.eu
32 */
33
34 namespace Galette\Entity\test\units;
35
36 use Galette\GaletteTestCase;
37
38 /**
39 * HasEvent tests class
40 *
41 * @category Features
42 * @name HasEvents
43 * @package GaletteTests
44 * @author Johan Cwiklinski <johan@x-tnd.be>
45 * @copyright 2024 The Galette Team
46 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
47 * @link https://galette.eu
48 */
49 class HasEvent extends GaletteTestCase
50 {
51 protected int $seed = 20240223092214;
52
53 /**
54 * Test HasEvent capacities
55 *
56 * @return void
57 */
58 public function testCapacities(): void
59 {
60 $this->adh = new \Galette\Entity\Adherent($this->zdb);
61
62 //per default, add and edit events are active on contributions
63 $contrib = new \Galette\Entity\Contribution($this->zdb, $this->login);
64 $this->assertTrue($contrib->areEventsEnabled());
65 $this->assertTrue($contrib->hasAddEvent());
66 $this->assertTrue($contrib->hasEditEvent());
67 $this->assertFalse($contrib->hasDeleteEvent());
68 $this->assertEquals('contribution.add', $contrib->getAddEventName());
69 $this->assertEquals('contribution.edit', $contrib->getEditEventName());
70 $this->assertNull($contrib->getDeleteEventName());
71
72 //per default, add and edit events are active on members
73 $this->assertTrue($this->adh->areEventsEnabled());
74 $this->assertTrue($this->adh->hasAddEvent());
75 $this->assertTrue($this->adh->hasEditEvent());
76 $this->assertFalse($this->adh->hasDeleteEvent());
77 $this->assertEquals('member.add', $this->adh->getAddEventName());
78 $this->assertEquals('member.edit', $this->adh->getEditEventName());
79 $this->assertNull($this->adh->getDeleteEventName());
80
81 //disable add event
82 $this->adh->withoutAddEvent();
83 $this->assertFalse($this->adh->hasAddEvent());
84 $this->assertNull($this->adh->getAddEventName());
85 $this->assertTrue($this->adh->hasEditEvent());
86 //enable add event
87 $this->adh->withAddEvent();
88 $this->assertTrue($this->adh->hasAddEvent());
89
90 //disable edit event
91 $this->adh->withoutEditEvent();
92 $this->assertTrue($this->adh->hasAddEvent());
93 $this->assertFalse($this->adh->hasEditEvent());
94 $this->assertNull($this->adh->getEditEventName());
95 //enable edit event
96 $this->adh->withEditEvent();
97 $this->assertTrue($this->adh->hasEditEvent());
98
99 //enable delete event
100 $this->adh->withDeleteEvent();
101 $this->assertTrue($this->adh->hasDeleteEvent());
102 $this->assertEquals('member.delete', $this->adh->getDeleteEventName());
103 //disable delete event
104 $this->adh->withoutDeleteEvent();
105 $this->assertFalse($this->adh->hasDeleteEvent());
106
107 // disable all events
108 $this->adh->disableEvents();
109 $this->assertFalse($this->adh->areEventsEnabled());
110 $this->assertFalse($this->adh->hasAddEvent());
111 $this->assertFalse($this->adh->hasEditEvent());
112 $this->assertFalse($this->adh->hasDeleteEvent());
113 $this->assertNull($this->adh->getAddEventName());
114 $this->assertNull($this->adh->getEditEventName());
115 $this->assertNull($this->adh->getDeleteEventName());
116
117 //reactivate events
118 $this->adh->activateEvents();
119 $this->assertTrue($this->adh->areEventsEnabled());
120 $this->assertTrue($this->adh->hasAddEvent());
121 $this->assertTrue($this->adh->hasEditEvent());
122 $this->assertFalse($this->adh->hasDeleteEvent());
123 }
124 }