]> git.agnieray.net Git - galette.git/blob - tests/Galette/Core/tests/units/Galette.php
8ab0729357d09c6e208b43038416438919444878
[galette.git] / tests / Galette / Core / tests / units / Galette.php
1 <?php
2
3 /**
4 * Copyright © 2003-2024 The Galette Team
5 *
6 * This file is part of Galette (https://galette.eu).
7 *
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.
12 *
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.
17 *
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/>.
20 */
21
22 namespace Galette\Core\test\units;
23
24 use Galette\GaletteTestCase;
25
26 /**
27 * Galette tests class
28 *
29 * @author Johan Cwiklinski <johan@x-tnd.be>
30 */
31 class Galette extends GaletteTestCase
32 {
33 protected int $seed = 20230324120838;
34
35 /**
36 * Test gitVersion
37 *
38 * @return void
39 */
40 public function testGitVersion()
41 {
42 $gitversion = \Galette\Core\Galette::gitVersion();
43 $this->assertStringStartsWith(str_replace('-dev', '', GALETTE_VERSION), $gitversion);
44 $this->assertSame(
45 1,
46 preg_match(
47 '/-git-.+ \(\d{4}-\d{2}-\d{2}\)/',
48 str_replace(GALETTE_VERSION, '', $gitversion)
49 )
50 );
51 }
52
53 /**
54 * Test storing into session of various objects to detect serialization issues
55 *
56 * @return void
57 */
58 public function testSerialization()
59 {
60 //global objects
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);
64
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);
68
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);
72
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);
76
77 $i18n = new \Galette\Core\I18n();
78 $this->session->i18n_test = $i18n;
79 $this->assertInstanceOf(\Galette\Core\I18n::class, $this->session->i18n_test);
80
81 //entities
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);
85
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);
89
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);
93
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);
97
98 //filters
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);
102
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);
106
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);
110
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);
114
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);
118
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);
122
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);
126 }
127
128 /**
129 * Test getMenus
130 *
131 * @return void
132 */
133 public function testGetMenus()
134 {
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'))
141 ->getMock();
142
143 $preferences->method('showPublicPages')->willReturn(true);
144
145 $menus = \Galette\Core\Galette::getMenus();
146 $this->assertIsArray($menus);
147 $this->assertCount(0, $menus);
148
149 $menus = \Galette\Core\Galette::getMenus(true);
150 $this->assertIsArray($menus);
151 $this->assertCount(1, $menus);
152 $this->assertArrayHasKey('public', $menus);
153
154 $login = $this->getMockBuilder(\Galette\Core\Login::class)
155 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
156 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
157 ->getMock();
158
159 $login->method('isLogged')->willReturn(true);
160 $login->method('isStaff')->willReturn(true);
161 $login->method('isAdmin')->willReturn(true);
162 $login->method('isSuperAdmin')->willReturn(false);
163
164 $menus = \Galette\Core\Galette::getMenus(true);
165 $this->assertIsArray($menus);
166 $this->assertCount(6, $menus);
167
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);
174
175 $login = $this->getMockBuilder(\Galette\Core\Login::class)
176 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
177 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
178 ->getMock();
179
180 $login->method('isLogged')->willReturn(true);
181 $login->method('isStaff')->willReturn(true);
182 $login->method('isAdmin')->willReturn(false);
183 $login->method('isSuperAdmin')->willReturn(false);
184
185 $menus = \Galette\Core\Galette::getMenus(true);
186 $this->assertIsArray($menus);
187 $this->assertCount(5, $menus);
188
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);
195
196 $login = $this->getMockBuilder(\Galette\Core\Login::class)
197 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
198 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
199 ->getMock();
200
201 $login->method('isLogged')->willReturn(true);
202 $login->method('isStaff')->willReturn(true);
203 $login->method('isAdmin')->willReturn(true);
204 $login->method('isSuperAdmin')->willReturn(true);
205
206 $menus = \Galette\Core\Galette::getMenus(true);
207 $this->assertIsArray($menus);
208 $this->assertCount(5, $menus);
209
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);
216 }
217
218 /**
219 * Test getPublicMenus
220 *
221 * @return void
222 */
223 public function testGetPublicMenus()
224 {
225 global $preferences;
226
227 $db = new \Galette\Core\Db();
228 $preferences = $this->getMockBuilder(\Galette\Core\Preferences::class)
229 ->setConstructorArgs(array($db))
230 ->onlyMethods(array('showPublicPages'))
231 ->getMock();
232 $preferences->method('showPublicPages')->willReturn(false);
233
234 $menus = \Galette\Core\Galette::getPublicMenus();
235 $this->assertIsArray($menus);
236 $this->assertCount(0, $menus);
237
238 $preferences = $this->getMockBuilder(\Galette\Core\Preferences::class)
239 ->setConstructorArgs(array($db))
240 ->onlyMethods(array('showPublicPages'))
241 ->getMock();
242 $preferences->method('showPublicPages')->willReturn(true);
243
244 $menus = \Galette\Core\Galette::getPublicMenus();
245 $this->assertIsArray($menus);
246 $this->assertCount(1, $menus);
247 }
248
249 /**
250 * Test getDashboards
251 *
252 * @return void
253 */
254 public function testGetDashboards()
255 {
256 global $login;
257
258 $db = new \Galette\Core\Db();
259
260 $dashboards = \Galette\Core\Galette::getDashboards();
261 $this->assertCount(0, $dashboards);
262
263 $login = $this->getMockBuilder(\Galette\Core\Login::class)
264 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
265 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
266 ->getMock();
267
268 $login->method('isLogged')->willReturn(true);
269 $login->method('isStaff')->willReturn(true);
270 $login->method('isAdmin')->willReturn(true);
271 $login->method('isSuperAdmin')->willReturn(true);
272
273 $dashboards = \Galette\Core\Galette::getDashboards();
274 $this->assertCount(9, $dashboards);
275
276 $login = $this->getMockBuilder(\Galette\Core\Login::class)
277 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
278 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
279 ->getMock();
280
281 $login->method('isLogged')->willReturn(true);
282 $login->method('isStaff')->willReturn(true);
283 $login->method('isAdmin')->willReturn(true);
284 $login->method('isSuperAdmin')->willReturn(false);
285
286 $dashboards = \Galette\Core\Galette::getDashboards();
287 $this->assertCount(11, $dashboards);
288
289 $login = $this->getMockBuilder(\Galette\Core\Login::class)
290 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
291 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
292 ->getMock();
293
294 $login->method('isLogged')->willReturn(true);
295 $login->method('isStaff')->willReturn(true);
296 $login->method('isAdmin')->willReturn(false);
297 $login->method('isSuperAdmin')->willReturn(false);
298
299 $dashboards = \Galette\Core\Galette::getDashboards();
300 $this->assertCount(9, $dashboards);
301
302 $login = $this->getMockBuilder(\Galette\Core\Login::class)
303 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
304 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
305 ->getMock();
306
307 $login->method('isLogged')->willReturn(true);
308 $login->method('isStaff')->willReturn(false);
309 $login->method('isAdmin')->willReturn(false);
310 $login->method('isSuperAdmin')->willReturn(false);
311
312 $dashboards = \Galette\Core\Galette::getDashboards();
313 $this->assertCount(3, $dashboards);
314 }
315
316 /**
317 * Test getListActions
318 *
319 * @return void
320 */
321 public function testGetListActions()
322 {
323 global $login;
324
325 $db = new \Galette\Core\Db();
326 $member = $this->getMemberOne();
327
328 $actions = \Galette\Core\Galette::getListActions($member);
329 $this->assertCount(0, $actions);
330
331 $login = $this->getMockBuilder(\Galette\Core\Login::class)
332 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
333 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
334 ->getMock();
335
336 $login->method('isLogged')->willReturn(true);
337 $login->method('isStaff')->willReturn(true);
338 $login->method('isAdmin')->willReturn(true);
339 $login->method('isSuperAdmin')->willReturn(true);
340
341 $actions = \Galette\Core\Galette::getListActions($member);
342 $this->assertCount(4, $actions);
343
344 $login = $this->getMockBuilder(\Galette\Core\Login::class)
345 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
346 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
347 ->getMock();
348
349 $login->method('isLogged')->willReturn(true);
350 $login->method('isStaff')->willReturn(true);
351 $login->method('isAdmin')->willReturn(true);
352 $login->method('isSuperAdmin')->willReturn(false);
353
354 $actions = \Galette\Core\Galette::getListActions($member);
355 $this->assertCount(3, $actions);
356
357 $login = $this->getMockBuilder(\Galette\Core\Login::class)
358 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
359 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
360 ->getMock();
361
362 $login->method('isLogged')->willReturn(true);
363 $login->method('isStaff')->willReturn(true);
364 $login->method('isAdmin')->willReturn(false);
365 $login->method('isSuperAdmin')->willReturn(false);
366
367 $actions = \Galette\Core\Galette::getListActions($member);
368 $this->assertCount(3, $actions);
369
370 $login = $this->getMockBuilder(\Galette\Core\Login::class)
371 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
372 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
373 ->getMock();
374
375 $login->method('isLogged')->willReturn(true);
376 $login->method('isStaff')->willReturn(false);
377 $login->method('isAdmin')->willReturn(false);
378 $login->method('isSuperAdmin')->willReturn(false);
379
380 $actions = \Galette\Core\Galette::getListActions($member);
381 $this->assertCount(0, $actions);
382 }
383
384 /**
385 * Test getDetailledActions
386 *
387 * @return void
388 */
389 public function testGetDetailledActions()
390 {
391 $member = $this->getMemberOne();
392
393 //no core actions yet
394 $actions = \Galette\Core\Galette::getDetailedActions($member);
395 $this->assertCount(0, $actions);
396 }
397
398 /**
399 * Test getBatchActions
400 *
401 * @return void
402 */
403 public function testGetBatchActions()
404 {
405 global $login;
406
407 $db = new \Galette\Core\Db();
408 $member = $this->getMemberOne();
409
410 $actions = \Galette\Core\Galette::getBatchActions();
411 $this->assertCount(0, $actions);
412
413 $login = $this->getMockBuilder(\Galette\Core\Login::class)
414 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
415 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
416 ->getMock();
417
418 $login->method('isLogged')->willReturn(true);
419 $login->method('isStaff')->willReturn(true);
420 $login->method('isAdmin')->willReturn(true);
421 $login->method('isSuperAdmin')->willReturn(true);
422
423 $actions = \Galette\Core\Galette::getBatchActions();
424 $this->assertCount(7, $actions);
425
426 $login = $this->getMockBuilder(\Galette\Core\Login::class)
427 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
428 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
429 ->getMock();
430
431 $login->method('isLogged')->willReturn(true);
432 $login->method('isStaff')->willReturn(true);
433 $login->method('isAdmin')->willReturn(true);
434 $login->method('isSuperAdmin')->willReturn(false);
435
436 $actions = \Galette\Core\Galette::getBatchActions();
437 $this->assertCount(7, $actions);
438
439 $login = $this->getMockBuilder(\Galette\Core\Login::class)
440 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
441 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
442 ->getMock();
443
444 $login->method('isLogged')->willReturn(true);
445 $login->method('isStaff')->willReturn(true);
446 $login->method('isAdmin')->willReturn(false);
447 $login->method('isSuperAdmin')->willReturn(false);
448
449 $actions = \Galette\Core\Galette::getBatchActions();
450 $this->assertCount(7, $actions);
451
452 $login = $this->getMockBuilder(\Galette\Core\Login::class)
453 ->setConstructorArgs(array($db, new \Galette\Core\I18n()))
454 ->onlyMethods(array('isLogged', 'isStaff', 'isAdmin', 'isSuperAdmin'))
455 ->getMock();
456
457 $login->method('isLogged')->willReturn(true);
458 $login->method('isStaff')->willReturn(false);
459 $login->method('isAdmin')->willReturn(false);
460 $login->method('isSuperAdmin')->willReturn(false);
461
462 $actions = \Galette\Core\Galette::getBatchActions();
463 $this->assertCount(0, $actions);
464 }
465 }