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\Entity\test\units
;
24 use Galette\GaletteTestCase
;
27 * Transaction filters tests class
29 * @author Johan Cwiklinski <johan@x-tnd.be>
31 class TransactionsList
extends GaletteTestCase
34 * Test filter defaults values
36 * @param \Galette\Filters\TransactionsList $filters Filters instance
40 protected function testDefaults(\Galette\Filters\TransactionsList
$filters): void
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
);
55 public function testCreate()
57 $filters = new \Galette\Filters\
TransactionsList();
59 $this->testDefaults($filters);
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
);
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
);
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
);
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
);
81 //set filter on children
82 $filters->filtre_cotis_children
= 18;
83 $this->assertSame(18, $filters->filtre_cotis_children
);
85 //reinit and test defaults are back
87 $this->testDefaults($filters);
91 * Test localized date in filter
95 public function testLocalizedDates(): void
97 $filters = new \Galette\Filters\
TransactionsList();
98 $this->testDefaults($filters);
100 $i18n = new \Galette\Core\
I18n(
101 \Galette\Core\I18n
::DEFAULT_LANG
103 $langs = $i18n->getList();
104 $filter_date = new \
DateTime('2000-01-01'); //day of the bug :D
106 foreach ($langs as $lang) {
107 $this->assertInstanceOf('\Galette\Core\I18n', $lang);
108 $i18n->changeLanguage($lang->getID());
109 $this->assertSame($i18n->getID(), $lang->getID());
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) {
117 'Failed to set start date filter with lang %s: %s',