Skip to content

Commit

Permalink
update and test for Path in component dirs in settings (#11)
Browse files Browse the repository at this point in the history
  • Loading branch information
joshuadavidthomas authored Oct 4, 2024
1 parent 4c6561f commit 6b15157
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 18 deletions.
3 changes: 2 additions & 1 deletion src/django_bird/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from contextlib import suppress
from dataclasses import dataclass
from dataclasses import field
from pathlib import Path
from typing import Any

import django.template
Expand All @@ -15,7 +16,7 @@

@dataclass
class AppSettings:
COMPONENT_DIRS: list[str] = field(default_factory=lambda: ["bird"])
COMPONENT_DIRS: list[Path | str] = field(default_factory=lambda: ["bird"])
ENABLE_AUTO_CONFIG: bool = True
_template_configurator: TemplateConfigurator = field(init=False)

Expand Down
33 changes: 19 additions & 14 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,26 +46,21 @@ def pytest_configure(config):


@pytest.fixture
def template_dirs(tmp_path):
def base_dir(tmp_path):
base_dir = tmp_path / "templates"
base_dir.mkdir()
bird_template_dir = base_dir / "bird"
bird_template_dir.mkdir()
return {
"base": base_dir,
"bird": bird_template_dir,
}
return base_dir


@pytest.fixture(autouse=True)
def override_templates_settings(template_dirs):
def override_templates_settings(base_dir):
with override_settings(
TEMPLATES=[
settings.TEMPLATES[0]
| {
"DIRS": [
*settings.TEMPLATES[0]["DIRS"],
template_dirs["base"],
base_dir,
]
}
]
Expand All @@ -74,11 +69,21 @@ def override_templates_settings(template_dirs):


@pytest.fixture
def create_bird_template(template_dirs):
def func(name, content, subdir=None):
bird_dir = template_dirs["bird"]
if subdir is not None:
dir = bird_dir / subdir
def create_bird_dir(base_dir):
def func(name):
bird_template_dir = base_dir / name
bird_template_dir.mkdir()
return bird_template_dir

return func


@pytest.fixture
def create_bird_template(create_bird_dir):
def func(name, content, sub_dir=None, bird_dir_name="bird"):
bird_dir = create_bird_dir(bird_dir_name)
if sub_dir is not None:
dir = bird_dir / sub_dir
dir.mkdir()
else:
dir = bird_dir
Expand Down
23 changes: 20 additions & 3 deletions tests/test_templatetags.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from django.template.base import Token
from django.template.base import TokenType
from django.template.exceptions import TemplateSyntaxError
from django.test import override_settings

from django_bird.templatetags.django_bird import BirdNode
from django_bird.templatetags.django_bird import do_bird
Expand Down Expand Up @@ -140,7 +141,7 @@ def test_dynamic_attrs(self, create_bird_template):

class TestBirdNode:
@pytest.mark.parametrize(
"subdir,filename,component,nodename,expected",
"sub_dir,filename,component,nodename,expected",
[
(
None,
Expand Down Expand Up @@ -180,15 +181,31 @@ class TestBirdNode:
],
)
def test_get_template_names(
self, subdir, filename, component, nodename, expected, create_bird_template
self, sub_dir, filename, component, nodename, expected, create_bird_template
):
create_bird_template(name=filename, content=component, subdir=subdir)
create_bird_template(name=filename, content=component, sub_dir=sub_dir)
node = BirdNode(name=nodename, attrs=[], nodelist=None)

template_names = node.get_template_names()

assert any(expected in template_name for template_name in template_names)

@override_settings(DJANGO_BIRD={"COMPONENT_DIRS": ["not_default"]})
def test_get_template_names_path_component_dirs(self, create_bird_template):
create_bird_template(
name="button",
content="<button class=btn_class>Click me</button>",
bird_dir_name="not_default",
)

node = BirdNode(name="button", attrs=[], nodelist=None)

template_names = node.get_template_names()

print(f"{template_names=}")
assert all("not_default" in template_name for template_name in template_names)
assert not all("bird" in template_name for template_name in template_names)


class TestSlotsTemplateTag:
@pytest.mark.parametrize(
Expand Down

0 comments on commit 6b15157

Please sign in to comment.