]> git.agnieray.net Git - galette.git/blob - tests/Galette/Filters/tests/units/TransactionsList.php
9cc3193c380f21797912b9b8e129e4be41c65617
[galette.git] / tests / Galette / Filters / tests / units / TransactionsList.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\Entity\test\units;
23
24 use Galette\GaletteTestCase;
25
26 /**
27 * Transaction filters tests class
28 *
29 * @author Johan Cwiklinski <johan@x-tnd.be>
30 */
31 class TransactionsList extends GaletteTestCase
32 {
33 /**
34 * Test filter defaults values
35 *
36 * @param \Galette\Filters\TransactionsList $filters Filters instance
37 *
38 * @return void
39 */
40 protected function testDefaults(\Galette\Filters\TransactionsList $filters): void
41 {
42 $this->assertSame(\Galette\Filters\TransactionsList::ORDERBY_DATE, $filters->orderby);
43 $this->assertSame(\Galette\Filters\TransactionsList::ORDER_ASC, $filters->ordered);
44 $this->assertFalse($filters->filtre_cotis_children);
45 $this->assertNull($filters->start_date_filter);
46 $this->assertNull($filters->end_date_filter);
47 $this->assertNull($filters->filtre_cotis_adh);
48 }
49
50 /**
51 * Test creation
52 *
53 * @return void
54 */
55 public function testCreate()
56 {
57 $filters = new \Galette\Filters\TransactionsList();
58
59 $this->testDefaults($filters);
60
61 //change order field
62 $filters->orderby = \Galette\Filters\TransactionsList::ORDERBY_AMOUNT;
63 $this->assertSame(\Galette\Filters\TransactionsList::ORDERBY_AMOUNT, $filters->orderby);
64 $this->assertSame(\Galette\Filters\TransactionsList::ORDER_ASC, $filters->ordered);
65
66 //same order field again: direction inverted
67 $filters->orderby = \Galette\Filters\TransactionsList::ORDERBY_AMOUNT;
68 $this->assertSame(\Galette\Filters\TransactionsList::ORDERBY_AMOUNT, $filters->orderby);
69 $this->assertSame(\Galette\Filters\TransactionsList::ORDER_DESC, $filters->ordered);
70
71 //not existing order, same kept
72 $filters->ordered = 42;
73 $this->assertSame(\Galette\Filters\TransactionsList::ORDERBY_AMOUNT, $filters->orderby);
74 $this->assertSame(\Galette\Filters\TransactionsList::ORDER_DESC, $filters->ordered);
75
76 //change direction only
77 $filters->ordered = \Galette\Filters\TransactionsList::ORDER_ASC;
78 $this->assertSame(\Galette\Filters\TransactionsList::ORDERBY_AMOUNT, $filters->orderby);
79 $this->assertSame(\Galette\Filters\TransactionsList::ORDER_ASC, $filters->ordered);
80
81 //set filter on children
82 $filters->filtre_cotis_children = 18;
83 $this->assertSame(18, $filters->filtre_cotis_children);
84
85 //reinit and test defaults are back
86 $filters->reinit();
87 $this->testDefaults($filters);
88 }
89
90 /**
91 * Test localized date in filter
92 *
93 * @return void
94 */
95 public function testLocalizedDates(): void
96 {
97 $filters = new \Galette\Filters\TransactionsList();
98 $this->testDefaults($filters);
99
100 $i18n = new \Galette\Core\I18n(
101 \Galette\Core\I18n::DEFAULT_LANG
102 );
103 $langs = $i18n->getList();
104 $filter_date = new \DateTime('2000-01-01'); //day of the bug :D
105
106 foreach ($langs as $lang) {
107 $this->assertInstanceOf('\Galette\Core\I18n', $lang);
108 $i18n->changeLanguage($lang->getID());
109 $this->assertSame($i18n->getID(), $lang->getID());
110 try {
111 $filters->start_date_filter = $filter_date->format(__('Y-m-d'));
112 $filters->start_date_filter = $filter_date->format(__('Y-m'));
113 $filters->start_date_filter = $filter_date->format(__('Y'));
114 } catch (\Throwable $e) {
115 $this->fail(
116 sprintf(
117 'Failed to set start date filter with lang %s: %s',
118 $lang->getID(),
119 $e->getMessage()
120 )
121 );
122 }
123 }
124 }
125 }