def test_as_html(self): user = self.login() sk1 = UserSettingKey('creme_core-test_model_bool', description=u'Page displayed', app_label='creme_core', type=SettingKey.BOOL, hidden=False, ) sk2 = UserSettingKey('creme_core-test_model_str', description=u'Page size', app_label='creme_core', type=SettingKey.STRING, hidden=False, ) self._register_key(sk1, sk2) with self.assertRaises(KeyError): user.settings.as_html(sk1) str_value = 'Foobar' with user.settings as settings: settings[sk1] = True settings[sk2] = str_value as_html = user.settings.as_html self.assertEqual(bool_as_html(True), as_html(sk1)) self.assertEqual(str_value, as_html(sk2))
def test_edit_user_setting_value05(self): "Blank + INT." user = self.user sk = UserSettingKey( 'creme_config-test_edit_user_setting_value05', description='API key', app_label='creme_core', type=SettingKey.INT, blank=True, ) self._register_key(sk) usettings = user.settings with usettings: usettings[sk] = 123 url = self._build_edit_user_svalue_url(sk) response = self.assertGET200(url) with self.assertNoException(): value_f = response.context['form'].fields['value'] self.assertEqual(123, value_f.initial) # --- response = self.client.post(url) self.assertNoFormError(response) self.assertIsNone(self.refresh(user).settings.get(sk))
def test_edit_user_setting_value01(self): user = self.user sk = UserSettingKey( 'creme_config-test_edit_user_setting_value01', description='Page displayed', app_label='creme_core', type=SettingKey.BOOL, hidden=False, ) self.assertIsNone(user.settings.get(sk)) url = self._build_edit_user_svalue_url(sk) self.assertGET404(url) # --- self._register_key(sk) response = self.assertGET200(url) self.assertTemplateUsed( response, 'creme_core/generics/blockform/edit-popup.html') context = response.context self.assertEqual( _('Edit «{key}»').format(key=sk.description), context.get('title')) # self.assertEqual(_('Save the modifications'), context.get('submit_label')) TODO # --- response = self.client.post(url, data={'value': 'on'}) self.assertNoFormError(response) self.assertIs(True, self.refresh(user).settings.get(sk))
def test_cast_bool(self): user = self.login() sk = UserSettingKey('creme_core-test_model_bool', description=u'Page displayed', app_label='creme_core', type=SettingKey.BOOL, hidden=False, ) self._register_key(sk) displayed = 1 with user.settings as settings: settings[sk] = displayed self.assertIs(True, user.settings.get(key=sk)) # ----- displayed = 0 with user.settings as settings: settings[sk] = displayed self.assertIs(False, user.settings.get(key=sk)) # ----- user = self.refresh(user) with self.assertNoException(): d = json.loads(user.json_settings) self.assertIsInstance(d, dict) self.assertIsInstance(d.get(sk.id), bool)
def test_get(self): user = self.login() sk = UserSettingKey('creme_core-test_model_string', description=u'Page title', app_label='creme_core', type=SettingKey.STRING, hidden=False, ) self._register_key(sk) settings = user.settings with self.assertNoException(): value = settings.get(sk) self.assertIsNone(value) with self.assertNoException(): value = settings.get(sk, '') self.assertEqual('', value) title = 'May the source be with you' with self.assertRaises(settings.ReadOnlyError): settings[sk] = title with settings: settings[sk] = title self.assertEqual(title, settings.get(sk, ''))
def test_cast_int(self): user = self.login() sk = UserSettingKey('creme_core-test_model_int', description=u'Page size', app_label='creme_core', type=SettingKey.INT, hidden=False, ) self._register_key(sk) size = 143 with user.settings as settings: settings[sk] = str(size) # <== __str()__ self.assertEqual(size, user.settings.get(key=sk)) user = self.refresh(user) self.assertEqual(size, user.settings.get(key=sk)) with self.assertNoException(): d = json.loads(user.json_settings) self.assertIsInstance(d, dict) self.assertIsInstance(d.get(sk.id), int)
def test_serialise(self): "JSON in DB + int" user = self.login() sk = UserSettingKey( 'creme_core-test_model_int', description='Page size', app_label='creme_core', type=SettingKey.INT, hidden=False, ) self._register_key(sk) size = 142 with user.settings as settings: settings[sk] = size user = self.refresh( user ) # Oblige UserSettingValue to be stored in DB (we clean the cache) with self.assertNoException(): value = user.settings.get(key=sk) self.assertEqual(size, value)
def test_basic(self): user = self.create_user() sk = UserSettingKey( 'creme_core-test_model_string', description='Page title', app_label='creme_core', type=SettingKey.STRING, hidden=False, ) self._register_key(sk) title = 'May the source be with you' settings = user.settings with self.assertRaises(KeyError): settings[sk] with self.assertRaises(settings.ReadOnlyError): settings[sk] = title with settings: settings[sk] = title with self.assertNoException(): value = settings[sk] self.assertEqual(title, value) with self.assertNoException(): value = user.settings[sk] self.assertEqual(title, value)
def test_edit_user_setting_value02(self): "hidden=True => error" sk = UserSettingKey('creme_config-test_edit_user_setting_value02', description='Page displayed', app_label='creme_core', type=SettingKey.BOOL, hidden=True, ) self._register_key(sk) self.assertGET409(self._build_edit_user_svalue_url(sk))
def test_edit_user_setting_value03(self): "Not blank + STRING" sk = UserSettingKey('creme_config-test_edit_user_setting_value03', description='API key', app_label='creme_core', type=SettingKey.STRING, ) self.assertFalse(sk.blank) self._register_key(sk) response = self.client.post(self._build_edit_user_svalue_url(sk), data={'value': ''}) self.assertFormError(response, 'form', 'value', _('This field is required.'))
def _aux_test_pop(self): user = self.login() sk = UserSettingKey('creme_core-test_model_int', description=u'Page size', app_label='creme_core', type=SettingKey.INT, hidden=False, ) self._register_key(sk) settings = user.settings with settings: settings[sk] = 142 return user, settings, sk
def test_bool(self): user = self.login() sk = UserSettingKey('creme_core-test_model_bool', description=u'Page displayed', app_label='creme_core', type=SettingKey.BOOL, hidden=False, ) self._register_key(sk) def test_value(displayed): with user.settings as settings: settings[sk] = displayed with self.assertNoException(): value = self.refresh(user).settings.get(key=sk) self.assertIs(displayed, value) test_value(True) test_value(False)
def test_edit_user_setting_value04(self): "Blank + STRING" user = self.user sk = UserSettingKey('creme_config-test_edit_user_setting_value04', description='API key', app_label='creme_core', type=SettingKey.STRING, blank=True, ) self.assertIsNone(user.settings.get(sk)) url = self._build_edit_user_svalue_url(sk) self.assertGET404(url) self._register_key(sk) self.assertIsNone(user.settings.get(sk)) self.assertGET200(url) response = self.client.post(url, data={'value': ''}) self.assertNoFormError(response) self.assertEqual('', self.refresh(user).settings.get(sk)) self.assertGET200(url)