4 * Copyright © 2003-2024 The Galette Team
6 * This file is part of Galette (https://galette.eu).
8 * Galette is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
13 * Galette is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with Galette. If not, see <http://www.gnu.org/licenses/>.
22 namespace Galette\Core\test\units
;
24 use Galette\GaletteTestCase
;
29 * @author Johan Cwiklinski <johan@x-tnd.be>
31 class Galette
extends GaletteTestCase
33 protected int $seed = 20230324120838;
40 public function testGitVersion()
42 $gitversion = \Galette\Core\Galette
::gitVersion();
43 $this->assertStringStartsWith(str_replace('-dev', '', GALETTE_VERSION
), $gitversion);
47 '/-git-.+ \(\d{4}-\d{2}-\d{2}\)/',
48 str_replace(GALETTE_VERSION
, '', $gitversion)
54 * Test storing into session of various objects to detect serialization issues
58 public function testSerialization()
61 $login = new \Galette\Core\
Login($this->zdb
, $this->i18n
);
62 $this->session
->login_test
= $login;
63 $this->assertInstanceOf(\Galette\Core\Login
::class, $this->session
->login_test
);
65 $mailing = new \Galette\Core\
Mailing($this->preferences
);
66 $this->session
->mailing_test
= $mailing;
67 $this->assertInstanceOf(\Galette\Core\Mailing
::class, $this->session
->mailing_test
);
69 $gaptcha = new \Galette\Core\
Gaptcha($this->i18n
);
70 $this->session
->gaptcha_test
= $gaptcha;
71 $this->assertInstanceOf(\Galette\Core\Gaptcha
::class, $this->session
->gaptcha_test
);
73 $plugin_install = new \Galette\Core\
PluginInstall();
74 $this->session
->plugininstall_test
= $plugin_install;
75 $this->assertInstanceOf(\Galette\Core\PluginInstall
::class, $this->session
->plugininstall_test
);
77 $i18n = new \Galette\Core\
I18n();
78 $this->session
->i18n_test
= $i18n;
79 $this->assertInstanceOf(\Galette\Core\I18n
::class, $this->session
->i18n_test
);
82 $contribution = new \Galette\Entity\
Contribution($this->zdb
, $this->login
);
83 $this->session
->contribution_test
= $contribution;
84 $this->assertInstanceOf(\Galette\Entity\Contribution
::class, $this->session
->contribution_test
);
86 $df = \Galette\DynamicFields\DynamicField
::getFieldType($this->zdb
, \Galette\DynamicFields\DynamicField
::LINE
);
87 $this->session
->df_filter_test
= $df;
88 $this->assertInstanceOf(\Galette\DynamicFields\Line
::class, $this->session
->df_filter_test
);
90 $member = new \Galette\Entity\
Adherent($this->zdb
);
91 $this->session
->member_test
= $member;
92 $this->assertInstanceOf(\Galette\Entity\Adherent
::class, $this->session
->member_test
);
94 $transaction = new \Galette\Entity\
Transaction($this->zdb
, $this->login
);
95 $this->session
->transaction_test
= $transaction;
96 $this->assertInstanceOf(\Galette\Entity\Transaction
::class, $this->session
->transaction_test
);
99 $contribution_filter = new \Galette\Filters\
ContributionsList();
100 $this->session
->contribution_filter_test
= $contribution_filter;
101 $this->assertInstanceOf(\Galette\Filters\ContributionsList
::class, $this->session
->contribution_filter_test
);
103 $member_advanced_filter = new \Galette\Filters\
AdvancedMembersList();
104 $this->session
->member_advanced_filter_test
= $member_advanced_filter;
105 $this->assertInstanceOf(\Galette\Filters\AdvancedMembersList
::class, $this->session
->member_advanced_filter_test
);
107 $member_filter = new \Galette\Filters\
MembersList();
108 $this->session
->member_filter_test
= $member_filter;
109 $this->assertInstanceOf(\Galette\Filters\MembersList
::class, $this->session
->member_filter_test
);
111 $history_filter = new \Galette\Filters\
HistoryList();
112 $this->session
->history_filter_test
= $history_filter;
113 $this->assertInstanceOf(\Galette\Filters\HistoryList
::class, $this->session
->history_filter_test
);
115 $mailing_filter = new \Galette\Filters\
MailingsList();
116 $this->session
->mailing_filter_test
= $mailing_filter;
117 $this->assertInstanceOf(\Galette\Filters\MailingsList
::class, $this->session
->mailing_filter_test
);
119 $saved_filter = new \Galette\Filters\
SavedSearchesList();
120 $this->session
->saved_filter_test
= $saved_filter;
121 $this->assertInstanceOf(\Galette\Filters\SavedSearchesList
::class, $this->session
->saved_filter_test
);
123 $transaction_filter = new \Galette\Filters\
TransactionsList();
124 $this->session
->transaction_filter_test
= $transaction_filter;
125 $this->assertInstanceOf(\Galette\Filters\TransactionsList
::class, $this->session
->transaction_filter_test
);
133 public function testGetMenus()
135 global $preferences, $login, $plugins;
136 $db = new \Galette\Core\
Db();
137 $plugins = new \Galette\Core\
Plugins($db);
138 $preferences = $this->getMockBuilder(\Galette\Core\Preferences
::class)
139 ->setConstructorArgs(array($db))
140 ->onlyMethods(array('showPublicPages'))
143 $preferences->method('showPublicPages')->willReturn(true);
145 $menus = \Galette\Core\Galette
::getMenus();
146 $this->assertIsArray($menus);
147 $this->assertCount(0, $menus);
149 $menus = \Galette\Core\Galette
::getMenus(true);
150 $this->assertIsArray($menus);
151 $this->assertCount(1, $menus);
152 $this->assertArrayHasKey('public', $menus);
154 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
155 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
156 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
159 $login->method('isLogged')->willReturn(true);
160 $login->method('isStaff')->willReturn(true);
161 $login->method('isAdmin')->willReturn(true);
162 $login->method('isSuperAdmin')->willReturn(false);
164 $menus = \Galette\Core\Galette
::getMenus(true);
165 $this->assertIsArray($menus);
166 $this->assertCount(6, $menus);
168 $this->assertArrayHasKey('myaccount', $menus);
169 $this->assertArrayHasKey('members', $menus);
170 $this->assertArrayHasKey('contributions', $menus);
171 $this->assertArrayHasKey('management', $menus);
172 $this->assertArrayHasKey('configuration', $menus);
173 $this->assertArrayHasKey('public', $menus);
175 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
176 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
177 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
180 $login->method('isLogged')->willReturn(true);
181 $login->method('isStaff')->willReturn(true);
182 $login->method('isAdmin')->willReturn(false);
183 $login->method('isSuperAdmin')->willReturn(false);
185 $menus = \Galette\Core\Galette
::getMenus(true);
186 $this->assertIsArray($menus);
187 $this->assertCount(5, $menus);
189 $this->assertArrayHasKey('myaccount', $menus);
190 $this->assertArrayHasKey('members', $menus);
191 $this->assertArrayHasKey('contributions', $menus);
192 $this->assertArrayHasKey('management', $menus);
193 $this->assertArrayNotHasKey('configuration', $menus);
194 $this->assertArrayHasKey('public', $menus);
196 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
197 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
198 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
201 $login->method('isLogged')->willReturn(true);
202 $login->method('isStaff')->willReturn(true);
203 $login->method('isAdmin')->willReturn(true);
204 $login->method('isSuperAdmin')->willReturn(true);
206 $menus = \Galette\Core\Galette
::getMenus(true);
207 $this->assertIsArray($menus);
208 $this->assertCount(5, $menus);
210 $this->assertArrayNotHasKey('myaccount', $menus);
211 $this->assertArrayHasKey('members', $menus);
212 $this->assertArrayHasKey('contributions', $menus);
213 $this->assertArrayHasKey('management', $menus);
214 $this->assertArrayHasKey('configuration', $menus);
215 $this->assertArrayHasKey('public', $menus);
219 * Test getPublicMenus
223 public function testGetPublicMenus()
227 $db = new \Galette\Core\
Db();
228 $preferences = $this->getMockBuilder(\Galette\Core\Preferences
::class)
229 ->setConstructorArgs(array($db))
230 ->onlyMethods(array('showPublicPages'))
232 $preferences->method('showPublicPages')->willReturn(false);
234 $menus = \Galette\Core\Galette
::getPublicMenus();
235 $this->assertIsArray($menus);
236 $this->assertCount(0, $menus);
238 $preferences = $this->getMockBuilder(\Galette\Core\Preferences
::class)
239 ->setConstructorArgs(array($db))
240 ->onlyMethods(array('showPublicPages'))
242 $preferences->method('showPublicPages')->willReturn(true);
244 $menus = \Galette\Core\Galette
::getPublicMenus();
245 $this->assertIsArray($menus);
246 $this->assertCount(1, $menus);
254 public function testGetDashboards()
258 $db = new \Galette\Core\
Db();
260 $dashboards = \Galette\Core\Galette
::getDashboards();
261 $this->assertCount(0, $dashboards);
263 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
264 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
265 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
268 $login->method('isLogged')->willReturn(true);
269 $login->method('isStaff')->willReturn(true);
270 $login->method('isAdmin')->willReturn(true);
271 $login->method('isSuperAdmin')->willReturn(true);
273 $dashboards = \Galette\Core\Galette
::getDashboards();
274 $this->assertCount(9, $dashboards);
276 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
277 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
278 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
281 $login->method('isLogged')->willReturn(true);
282 $login->method('isStaff')->willReturn(true);
283 $login->method('isAdmin')->willReturn(true);
284 $login->method('isSuperAdmin')->willReturn(false);
286 $dashboards = \Galette\Core\Galette
::getDashboards();
287 $this->assertCount(11, $dashboards);
289 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
290 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
291 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
294 $login->method('isLogged')->willReturn(true);
295 $login->method('isStaff')->willReturn(true);
296 $login->method('isAdmin')->willReturn(false);
297 $login->method('isSuperAdmin')->willReturn(false);
299 $dashboards = \Galette\Core\Galette
::getDashboards();
300 $this->assertCount(9, $dashboards);
302 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
303 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
304 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
307 $login->method('isLogged')->willReturn(true);
308 $login->method('isStaff')->willReturn(false);
309 $login->method('isAdmin')->willReturn(false);
310 $login->method('isSuperAdmin')->willReturn(false);
312 $dashboards = \Galette\Core\Galette
::getDashboards();
313 $this->assertCount(3, $dashboards);
317 * Test getListActions
321 public function testGetListActions()
325 $db = new \Galette\Core\
Db();
326 $member = $this->getMemberOne();
328 $actions = \Galette\Core\Galette
::getListActions($member);
329 $this->assertCount(0, $actions);
331 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
332 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
333 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
336 $login->method('isLogged')->willReturn(true);
337 $login->method('isStaff')->willReturn(true);
338 $login->method('isAdmin')->willReturn(true);
339 $login->method('isSuperAdmin')->willReturn(true);
341 $actions = \Galette\Core\Galette
::getListActions($member);
342 $this->assertCount(4, $actions);
344 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
345 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
346 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
349 $login->method('isLogged')->willReturn(true);
350 $login->method('isStaff')->willReturn(true);
351 $login->method('isAdmin')->willReturn(true);
352 $login->method('isSuperAdmin')->willReturn(false);
354 $actions = \Galette\Core\Galette
::getListActions($member);
355 $this->assertCount(3, $actions);
357 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
358 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
359 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
362 $login->method('isLogged')->willReturn(true);
363 $login->method('isStaff')->willReturn(true);
364 $login->method('isAdmin')->willReturn(false);
365 $login->method('isSuperAdmin')->willReturn(false);
367 $actions = \Galette\Core\Galette
::getListActions($member);
368 $this->assertCount(3, $actions);
370 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
371 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
372 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
375 $login->method('isLogged')->willReturn(true);
376 $login->method('isStaff')->willReturn(false);
377 $login->method('isAdmin')->willReturn(false);
378 $login->method('isSuperAdmin')->willReturn(false);
380 $actions = \Galette\Core\Galette
::getListActions($member);
381 $this->assertCount(0, $actions);
385 * Test getDetailledActions
389 public function testGetDetailledActions()
391 $member = $this->getMemberOne();
393 //no core actions yet
394 $actions = \Galette\Core\Galette
::getDetailedActions($member);
395 $this->assertCount(0, $actions);
399 * Test getBatchActions
403 public function testGetBatchActions()
407 $db = new \Galette\Core\
Db();
408 $member = $this->getMemberOne();
410 $actions = \Galette\Core\Galette
::getBatchActions();
411 $this->assertCount(0, $actions);
413 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
414 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
415 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
418 $login->method('isLogged')->willReturn(true);
419 $login->method('isStaff')->willReturn(true);
420 $login->method('isAdmin')->willReturn(true);
421 $login->method('isSuperAdmin')->willReturn(true);
423 $actions = \Galette\Core\Galette
::getBatchActions();
424 $this->assertCount(7, $actions);
426 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
427 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
428 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
431 $login->method('isLogged')->willReturn(true);
432 $login->method('isStaff')->willReturn(true);
433 $login->method('isAdmin')->willReturn(true);
434 $login->method('isSuperAdmin')->willReturn(false);
436 $actions = \Galette\Core\Galette
::getBatchActions();
437 $this->assertCount(7, $actions);
439 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
440 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
441 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
444 $login->method('isLogged')->willReturn(true);
445 $login->method('isStaff')->willReturn(true);
446 $login->method('isAdmin')->willReturn(false);
447 $login->method('isSuperAdmin')->willReturn(false);
449 $actions = \Galette\Core\Galette
::getBatchActions();
450 $this->assertCount(7, $actions);
452 $login = $this->getMockBuilder(\Galette\Core\Login
::class)
453 ->setConstructorArgs(array($db, new \Galette\Core\
I18n()))
454 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
457 $login->method('isLogged')->willReturn(true);
458 $login->method('isStaff')->willReturn(false);
459 $login->method('isAdmin')->willReturn(false);
460 $login->method('isSuperAdmin')->willReturn(false);
462 $actions = \Galette\Core\Galette
::getBatchActions();
463 $this->assertCount(0, $actions);