mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-05-22 21:46:17 +03:00
Add implementation and tests
This commit is contained in:
parent
69ebc19b5f
commit
c3e93f8d4d
File diff suppressed because it is too large
Load Diff
|
@ -1140,6 +1140,15 @@ cdef class ConfigurationOption(Provider):
|
|||
root = self.__root_ref()
|
||||
return '.'.join((root.get_name(), self._get_self_name()))
|
||||
|
||||
def as_int(self):
|
||||
return Callable(int, self)
|
||||
|
||||
def as_float(self):
|
||||
return Callable(float, self)
|
||||
|
||||
def as_(self, callback, *args, **kwargs):
|
||||
return Callable(callback, self, *args, **kwargs)
|
||||
|
||||
def override(self, value):
|
||||
if isinstance(value, Provider):
|
||||
raise Error('Configuration option can only be overridden by a value')
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
"""Dependency injector config providers unit tests."""
|
||||
|
||||
import contextlib
|
||||
import decimal
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
|
@ -69,6 +70,33 @@ class ConfigTests(unittest.TestCase):
|
|||
self.assertEqual(abc(), 1)
|
||||
self.assertEqual(abd(), 2)
|
||||
|
||||
def test_as_int(self):
|
||||
value_provider = providers.Callable(lambda value: value, self.config.test.as_int())
|
||||
self.config.from_dict({'test': '123'})
|
||||
|
||||
value = value_provider()
|
||||
|
||||
self.assertEqual(value, 123)
|
||||
|
||||
def test_as_float(self):
|
||||
value_provider = providers.Callable(lambda value: value, self.config.test.as_float())
|
||||
self.config.from_dict({'test': '123.123'})
|
||||
|
||||
value = value_provider()
|
||||
|
||||
self.assertEqual(value, 123.123)
|
||||
|
||||
def test_as_(self):
|
||||
value_provider = providers.Callable(
|
||||
lambda value: value,
|
||||
self.config.test.as_(decimal.Decimal),
|
||||
)
|
||||
self.config.from_dict({'test': '123.123'})
|
||||
|
||||
value = value_provider()
|
||||
|
||||
self.assertEqual(value, decimal.Decimal('123.123'))
|
||||
|
||||
def test_providers_value_override(self):
|
||||
a = self.config.a
|
||||
ab = self.config.a.b
|
||||
|
@ -358,7 +386,6 @@ class ConfigFromIniWithEnvInterpolationTests(unittest.TestCase):
|
|||
self.assertEqual(self.config.section1.value1(), 'test-value')
|
||||
|
||||
|
||||
|
||||
class ConfigFromYamlTests(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
|
Loading…
Reference in New Issue
Block a user