Skip to content

Commit cabc4ef

Browse files
authored
Test Django-related functions accept string defaults (#380)
* Test that django parser functions accept string defaults * Update changelog
1 parent 40e11ba commit cabc4ef

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ release_date = env.date("RELEASE", "2025-01-07")
2525
numbers = env.list("NUMBERS", "1,2,42", subcast=float)
2626
```
2727

28+
The exceptions to this rule are the Django-related functions, which
29+
accept string defaults.
30+
31+
```python
32+
DATABASE_URL = env.dj_db_url("DATABASE_URL", default="postgresql://localhost:5432/mydb")
33+
```
34+
2835
This fixes [#297](https://github.com/sloria/environs/issues/297)
2936
and [#270](https://github.com/sloria/environs/issues/270).
3037

tests/test_environs.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,11 @@ def dump_with_nested_prefixed(env, fail=False):
748748
class TestDjango:
749749
def test_dj_db_url(self, env: environs.Env, set_env):
750750
db_url = "postgresql://localhost:5432/mydb"
751+
752+
# Default is expected to be unparsed
753+
res = env.dj_db_url("DATABASE_URL", default=db_url)
754+
assert res == dj_database_url.parse(db_url)
755+
751756
set_env({"DATABASE_URL": db_url})
752757
res = env.dj_db_url("DATABASE_URL")
753758
assert res == dj_database_url.parse(db_url)
@@ -760,12 +765,22 @@ def test_dj_db_url_passes_kwargs(self, env: environs.Env, set_env):
760765

761766
def test_dj_email_url(self, env: environs.Env, set_env):
762767
email_url = "smtp://[email protected]:[email protected]:465/?ssl=True"
768+
769+
# Default is expected to be unparsed
770+
res = env.dj_email_url("EMAIL_URL", default=email_url)
771+
assert res == dj_email_url.parse(email_url)
772+
763773
set_env({"EMAIL_URL": email_url})
764774
res = env.dj_email_url("EMAIL_URL")
765775
assert res == dj_email_url.parse(email_url)
766776

767777
def test_dj_cache_url(self, env: environs.Env, set_env):
768778
cache_url = "redis://redis:6379/0"
779+
780+
# Default is expected to be unparsed
781+
res = env.dj_cache_url("CACHE_URL", default=cache_url)
782+
assert res == django_cache_url.parse(cache_url)
783+
769784
set_env({"CACHE_URL": cache_url})
770785
res = env.dj_cache_url("CACHE_URL")
771786
assert res == django_cache_url.parse(cache_url)

0 commit comments

Comments
 (0)