Error text improvement and formatting

This commit is contained in:
Fernando Karchiloff 2025-01-13 23:56:15 -03:00
parent 52979b2c91
commit 4275dfdea1
2 changed files with 12 additions and 8 deletions

View file

@ -21,6 +21,7 @@ def get_values():
# Then update the mapping with actually values from the backend
return dict(default_initial, **dict(config._backend.mget(settings.CONFIG)))
def get_values_for_keys(keys):
"""
Retrieve values for specified keys from the backend.
@ -33,14 +34,12 @@ def get_values_for_keys(keys):
raise TypeError('keys must be a list, tuple, or set of strings')
# Prepare default initial mapping
default_initial = {
name: options[0] for name, options in settings.CONFIG.items() if name in keys
}
default_initial = {name: options[0] for name, options in settings.CONFIG.items() if name in keys}
# Check if all keys are present in the default_initial mapping
missing_keys = [key for key in keys if key not in default_initial]
if missing_keys:
raise AttributeError(f'Key "{missing_keys[0]}" not found in configuration.')
raise AttributeError(f'"{", ".join(missing_keys)}" keys not found in configuration.')
# Merge default values and backend values, prioritizing backend values
return dict(default_initial, **dict(config._backend.mget(keys)))

View file

@ -65,21 +65,26 @@ class UtilsTestCase(TestCase):
def test_get_values_for_keys(self):
self.assertEqual(
get_values_for_keys(["BOOL_VALUE", "CHOICE_VALUE", "LINEBREAK_VALUE"]),
get_values_for_keys(['BOOL_VALUE', 'CHOICE_VALUE', 'LINEBREAK_VALUE']),
{
'BOOL_VALUE': True,
'CHOICE_VALUE': 'yes',
'LINEBREAK_VALUE': 'Spam spam',
},
)
def test_get_values_for_keys_empty_keys(self):
result = get_values_for_keys([])
self.assertEqual(result, {})
def test_get_values_for_keys_throw_error_if_no_key(self):
self.assertRaisesMessage(AttributeError, 'Key "OLD_VALUE" not found in configuration.', get_values_for_keys, ['BOOL_VALUE', 'OLD_VALUE'])
self.assertRaisesMessage(
AttributeError,
'"OLD_VALUE, BOLD_VALUE" keys not found in configuration.',
get_values_for_keys,
['BOOL_VALUE', 'OLD_VALUE', 'BOLD_VALUE'],
)
def test_get_values_for_keys_invalid_input_type(self):
with self.assertRaises(TypeError):
get_values_for_keys("key1")
get_values_for_keys('key1')