Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
rmk135 committed Oct 27, 2021
1 parent dccd26c commit ddf106f
Show file tree
Hide file tree
Showing 2 changed files with 122 additions and 1 deletion.
2 changes: 1 addition & 1 deletion tests/unit/providers/configuration/conftest.py
Expand Up @@ -3,7 +3,7 @@
import os

from dependency_injector import providers
from pytest import fixture, mark
from pytest import fixture


@fixture
Expand Down
@@ -0,0 +1,121 @@
"""Configuration.from_pydantic() tests."""

import pydantic
from dependency_injector import providers
from pytest import fixture, mark, raises


class Section11(pydantic.BaseModel):
value1 = 1


class Section12(pydantic.BaseModel):
value2 = 2


class Settings1(pydantic.BaseSettings):
section1 = Section11()
section2 = Section12()


class Section21(pydantic.BaseModel):
value1 = 11
value11 = 11


class Section3(pydantic.BaseModel):
value3 = 3


class Settings2(pydantic.BaseSettings):
section1 = Section21()
section3 = Section3()


@fixture
def config(config_type, pydantic_settings_1, pydantic_settings_2):
if config_type == "strict":
return providers.Configuration(strict=True)
elif config_type == "default":
return providers.Configuration(pydantic_settings=[pydantic_settings_1, pydantic_settings_2])
else:
raise ValueError("Undefined config type \"{0}\"".format(config_type))


@fixture
def pydantic_settings_1():
return Settings1()


@fixture
def pydantic_settings_2():
return Settings2()


def test_load(config):
config.load()

assert config() == {
"section1": {
"value1": 11,
"value11": 11,
},
"section2": {
"value2": 2,
},
"section3": {
"value3": 3,
},
}
assert config.section1() == {"value1": 11, "value11": 11}
assert config.section1.value1() == 11
assert config.section1.value11() == 11
assert config.section2() == {"value2": 2}
assert config.section2.value2() == 2
assert config.section3() == {"value3": 3}
assert config.section3.value3() == 3


def test_get_pydantic_settings(config, pydantic_settings_1, pydantic_settings_2):
assert config.get_pydantic_settings() == [pydantic_settings_1, pydantic_settings_2]


def test_set_pydantic_settings(config):
class Settings3(pydantic.BaseSettings):
...

class Settings4(pydantic.BaseSettings):
...

settings_3 = Settings3()
settings_4 = Settings4()

config.set_pydantic_settings([settings_3, settings_4])
assert config.get_pydantic_settings() == [settings_3, settings_4]


def test_file_does_not_exist(config):
config.set_pydantic_settings([pydantic.BaseSettings()])
config.load()
assert config() == {}


@mark.parametrize("config_type", ["strict"])
def test_file_does_not_exist_strict_mode(config):
config.set_pydantic_settings([pydantic.BaseSettings()])
with raises(ValueError):
config.load()
assert config() == {}


def test_required_file_does_not_exist(config):
config.set_pydantic_settings([pydantic.BaseSettings()])
with raises(ValueError):
config.load(required=True)


@mark.parametrize("config_type", ["strict"])
def test_not_required_file_does_not_exist_strict_mode(config):
config.set_pydantic_settings([pydantic.BaseSettings()])
config.load(required=False)
assert config() == {}

0 comments on commit ddf106f

Please sign in to comment.