-
Notifications
You must be signed in to change notification settings - Fork 14
Closed
Description
Hey!
I found some problem in attr getter. It lies in the fact that it does not know how to work with nested attributes. Just look at some tests below and you'll understand what we're talking about.
from dataclasses import dataclass, field
import pytest
from that_depends import providers
@dataclass
class Nested2:
some_const = 144
@dataclass
class Nested1:
nested2_attr: Nested2 = field(default_factory=Nested2)
@dataclass
class Settings:
some_str_value: str = 'some_string_value'
some_int_value: int = 3453621
nested1_attr: Nested1 = field(default_factory=Nested1)
@pytest.fixture
def some_settings_provider() -> providers.Singleton:
provider = providers.Singleton(Settings)
return provider
# WORKS
def test_attr_getter_with_zero_attribute_depth(some_settings_provider):
attr_getter = some_settings_provider.some_str_value
assert attr_getter.sync_resolve() == Settings().some_str_value
# DOESNT WORKS BECAUSE Settings HAS NESTED OBJECTS AND ATTRIBUTES
def test_attr_getter_with_more_than_zero_attribute_depth(some_settings_provider):
attr_getter = some_settings_provider.nested1_attr.nested2_attr.some_const
assert attr_getter.sync_resolve() == Nested2().some_const
I think I can fix this if you want these cases to work
Metadata
Metadata
Assignees
Labels
No labels