3 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
10 * Copyright © 2013-2014 The Galette Team
12 * This file is part of Galette (http://galette.tuxfamily.org).
14 * Galette is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation, either version 3 of the License, or
17 * (at your option) any later version.
19 * Galette is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
24 * You should have received a copy of the GNU General Public License
25 * along with Galette. If not, see <http://www.gnu.org/licenses/>.
28 * @package GaletteTests
30 * @author Johan Cwiklinski <johan@x-tnd.be>
31 * @copyright 2013-2014 The Galette Team
32 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
34 * @link http://galette.tuxfamily.org
38 namespace Galette\Core\test\units
;
43 * Preferences tests class
47 * @package GaletteTests
48 * @author Johan Cwiklinski <johan@x-tnd.be>
49 * @copyright 2013-2014 The Galette Team
50 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
51 * @link http://galette.tuxfamily.org
54 class Preferences
extends atoum
56 private $preferences = null;
62 * @param string $testMethod Calling method
66 public function beforeTestMethod($testMethod)
68 $this->zdb
= new \Galette\Core\
Db();
69 $this->preferences
= new \Galette\Core\
Preferences(
75 * Test preferences initialization
79 public function testInstallInit()
81 $result = $this->preferences
->installInit(
84 password_hash('da_secret', PASSWORD_BCRYPT
)
86 $this->boolean($result)->isTrue();
88 //new object with values loaded from database to compare
89 $prefs = new \Galette\Core\
Preferences($this->zdb
);
91 foreach ($prefs->getDefaults() as $key => $expected) {
92 $value = $prefs->$key;
95 case 'pref_admin_login':
96 $this->variable($value)->isIdenticalTo('da_admin');
98 case 'pref_admin_pass':
99 $pw_checked = password_verify('da_secret', $value);
100 $this->boolean($pw_checked)->isTrue();
103 $this->variable($value)->isIdenticalTo('en_US');
105 case 'pref_card_year':
106 $this->variable($value)->isIdenticalTo(date('Y'));
109 $this->variable($value)->isEqualTo($expected);
114 //tru to set and get a non existent value
115 $prefs->doesnotexists
= 'that *does* not exists.';
116 $false_result = $prefs->doesnotexists
;
117 $this->boolean($false_result)->isFalse();
120 $slogan = 'One Galette to rule them all';
121 $prefs->pref_slogan
= $slogan;
122 $check = $prefs->pref_slogan
;
123 $this->string($check)->isIdenticalTo($slogan);
126 $new_pass = 'anoth3er_s3cr3t';
127 $prefs->pref_admin_pass
= $new_pass;
128 $pass = $prefs->pref_admin_pass
;
129 $pw_checked = password_verify($new_pass, $pass);
130 $this->boolean($pw_checked)->isTrue();
132 $this->preferences
->pref_nom
= 'Galette';
133 $this->preferences
->pref_ville
= 'Avignon';
134 $this->preferences
->pref_cp
= '84000';
135 $this->preferences
->pref_adresse
= 'Palais des Papes';
136 $this->preferences
->pref_adresse2
= 'Au milieu';
137 $this->preferences
->pref_pays
= 'France';
139 $expected = "Galette\n\nPalais des Papes\nAu milieu\n84000 Avignon - France";
140 $address = $this->preferences
->getPostalAddress();
142 $this->variable($address)->isIdenticalTo($expected);
144 $slogan = $this->preferences
->pref_slogan
;
145 $this->variable($slogan)->isEqualTo('');
147 $slogan = 'One Galette to rule them all';
148 $this->preferences
->pref_slogan
= $slogan;
149 $result = $this->preferences
->store();
151 $this->boolean($result)->isTrue();
153 $prefs = new \Galette\Core\
Preferences($this->zdb
);
154 $check_slogan = $prefs->pref_slogan
;
155 $this->variable($check_slogan)->isEqualTo($slogan);
157 //reset database value...
158 $this->preferences
->pref_slogan
= '';
159 $this->preferences
->store();
167 public function testFieldsNames()
169 $this->preferences
->load();
170 $fields_names = $this->preferences
->getFieldsNames();
171 $expected = array_keys($this->preferences
->getDefaults());
176 $this->array($fields_names)->isIdenticalTo($expected);
180 * Test preferences updating when some are missing
184 public function testUpdate()
186 $delete = $this->zdb
->delete(\Galette\Core\Preferences
::TABLE
);
189 \Galette\Core\Preferences
::PK
=> 'pref_facebook'
192 $this->zdb
->execute($delete);
194 $delete = $this->zdb
->delete(\Galette\Core\Preferences
::TABLE
);
197 \Galette\Core\Preferences
::PK
=> 'pref_viadeo'
200 $this->zdb
->execute($delete);
202 $this->preferences
->load();
203 $fb = $this->preferences
->pref_facebook
;
204 $viadeo = $this->preferences
->pref_viadeo
;
206 $this->boolean($fb)->isFalse();
207 $this->boolean($viadeo)->isFalse();
209 $prefs = new \Galette\Core\
Preferences($this->zdb
);
210 $fb = $prefs->pref_facebook
;
211 $viadeo = $prefs->pref_viadeo
;
213 $this->variable($fb)->isIdenticalTo('');
214 $this->variable($viadeo)->isIdenticalTo('');
218 * Test public pages visibility
222 public function testPublicPagesVisibility()
224 $this->preferences
->load();
225 $session = new \RKA\
Session();
227 $visibility = $this->preferences
->pref_publicpages_visibility
;
228 $this->variable($visibility)->isEqualTo(
229 \Galette\Core\Preferences
::PUBLIC_PAGES_VISIBILITY_RESTRICTED
232 $anon_login = new \Galette\Core\
Login(
234 new \Galette\Core\
I18n(),
238 $admin_login = new \mock\Galette\Core\
Login(
240 new \Galette\Core\
I18n(),
243 $this->calling($admin_login)->isAdmin
= true;
245 $user_login = new \mock\Galette\Core\
Login(
247 new \Galette\Core\
I18n(),
250 $this->calling($user_login)->isUp2Date
= true;
252 $visible = $this->preferences
->showPublicPages($anon_login);
253 $this->boolean($visible)->isFalse();
255 $visible = $this->preferences
->showPublicPages($admin_login);
256 $this->boolean($visible)->isTrue();
258 $visible = $this->preferences
->showPublicPages($user_login);
259 $this->boolean($visible)->isTrue();
261 $this->preferences
->pref_publicpages_visibility
262 = \Galette\Core\Preferences
::PUBLIC_PAGES_VISIBILITY_PUBLIC
;
264 $visible = $this->preferences
->showPublicPages($anon_login);
265 $this->boolean($visible)->isTrue();
267 $visible = $this->preferences
->showPublicPages($admin_login);
268 $this->boolean($visible)->isTrue();
270 $visible = $this->preferences
->showPublicPages($user_login);
271 $this->boolean($visible)->isTrue();
273 $this->preferences
->pref_publicpages_visibility
274 = \Galette\Core\Preferences
::PUBLIC_PAGES_VISIBILITY_PRIVATE
;
276 $visible = $this->preferences
->showPublicPages($anon_login);
277 $this->boolean($visible)->isFalse();
279 $visible = $this->preferences
->showPublicPages($admin_login);
280 $this->boolean($visible)->isTrue();
282 $visible = $this->preferences
->showPublicPages($user_login);
283 $this->boolean($visible)->isFalse();