Skip to content

Commit c7851e5

Browse files
move test utils
1 parent 7c855ea commit c7851e5

File tree

9 files changed

+86
-74
lines changed

9 files changed

+86
-74
lines changed

tests/conftest.py

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33
import contextlib
44
import logging
55
import re
6-
from dataclasses import dataclass
7-
from dataclasses import field
86
from pathlib import Path
9-
from typing import Any
107

118
import pytest
129
from django.conf import settings
@@ -15,8 +12,6 @@
1512
from django.template.engine import Engine
1613
from django.test import override_settings
1714

18-
from django_bird.staticfiles import AssetType
19-
2015
from .settings import DEFAULT_SETTINGS
2116

2217
pytest_plugins = []
@@ -89,63 +84,6 @@ def _override_app_settings(**kwargs):
8984
return _override_app_settings
9085

9186

92-
@dataclass
93-
class TestComponent:
94-
name: str
95-
content: str
96-
file: Path | None = None
97-
parent_dir: str = "bird"
98-
sub_dir: str | None = None
99-
100-
def create(self, base_dir: Path) -> TestComponent:
101-
parent = base_dir / self.parent_dir
102-
parent.mkdir(exist_ok=True)
103-
104-
if self.sub_dir is not None:
105-
dir = parent / self.sub_dir
106-
dir.mkdir(exist_ok=True)
107-
else:
108-
dir = parent
109-
110-
template = dir / f"{self.name}.html"
111-
template.write_text(self.content)
112-
113-
self.file = template
114-
115-
return self
116-
117-
118-
@dataclass
119-
class TestAsset:
120-
component: TestComponent
121-
content: str
122-
asset_type: AssetType
123-
file: Path | None = None
124-
125-
def create(self) -> TestAsset:
126-
if self.component.file is None:
127-
raise ValueError("Component must be created before adding assets")
128-
129-
component_dir = self.component.file.parent
130-
component_name = self.component.file.stem
131-
132-
asset_file = component_dir / f"{component_name}{self.asset_type.ext}"
133-
asset_file.write_text(self.content)
134-
135-
self.file = asset_file
136-
137-
return self
138-
139-
140-
@dataclass
141-
class TestComponentCase:
142-
component: TestComponent
143-
template_content: str
144-
expected: str
145-
description: str = ""
146-
template_context: dict[str, Any] = field(default_factory=dict)
147-
148-
14987
@pytest.fixture
15088
def create_template():
15189
def _create_template(template_file: Path) -> DjangoTemplate:

tests/templatetags/test_asset.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
from django_bird.templatetags.tags.asset import JS_TAG
1313
from django_bird.templatetags.tags.asset import AssetNode
1414
from django_bird.templatetags.tags.asset import do_asset
15-
from tests.conftest import TestAsset
16-
from tests.conftest import TestComponent
15+
from tests.utils import TestAsset
16+
from tests.utils import TestComponent
1717

1818

1919
class TestTemplateTag:

tests/templatetags/test_bird.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
from django_bird.templatetags.tags.bird import TAG
1919
from django_bird.templatetags.tags.bird import BirdNode
2020
from django_bird.templatetags.tags.bird import do_bird
21-
from tests.conftest import TestComponent
22-
from tests.conftest import TestComponentCase
21+
from tests.utils import TestComponent
22+
from tests.utils import TestComponentCase
2323

2424

2525
class TestTagParsing:

tests/templatetags/test_slot.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
from django.template.exceptions import TemplateSyntaxError
77

88
from django_bird.templatetags.tags.slot import parse_slot_name
9-
from tests.conftest import TestComponent
10-
from tests.conftest import TestComponentCase
9+
from tests.utils import TestComponent
10+
from tests.utils import TestComponentCase
1111

1212

1313
@pytest.mark.parametrize(

tests/test_apps.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
from django.apps import apps
44

55
from django_bird.components import components
6-
from tests.conftest import TestComponent
6+
7+
from .utils import TestComponent
78

89

910
def test_ready_scans_components(templates_dir):

tests/test_fixtures.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import pytest
44
from django.template.loader import get_template
55

6-
from tests.conftest import TestComponent
6+
from .utils import TestComponent
77

88

99
def test_test_component(templates_dir):

tests/test_integration.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77

88
from django_bird.components import components
99
from django_bird.staticfiles import AssetType
10-
from tests.conftest import TestAsset
11-
from tests.conftest import TestComponent
10+
11+
from .utils import TestAsset
12+
from .utils import TestComponent
1213

1314

1415
@contextmanager

tests/test_loader.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
from django_bird.loader import BirdLoader
1414
from django_bird.staticfiles import AssetType
1515
from django_bird.templatetags.tags.bird import BirdNode
16-
from tests.conftest import TestAsset
17-
from tests.conftest import TestComponent
16+
17+
from .utils import TestAsset
18+
from .utils import TestComponent
1819

1920

2021
@pytest.mark.parametrize(

tests/utils.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
from __future__ import annotations
2+
3+
from dataclasses import dataclass
4+
from dataclasses import field
5+
from pathlib import Path
6+
from typing import Any
7+
8+
from django_bird.staticfiles import AssetType
9+
10+
11+
@dataclass
12+
class TestComponent:
13+
__test__ = False
14+
15+
name: str
16+
content: str
17+
file: Path | None = None
18+
parent_dir: str = "bird"
19+
sub_dir: str | None = None
20+
21+
def create(self, base_dir: Path) -> TestComponent:
22+
parent = base_dir / self.parent_dir
23+
parent.mkdir(exist_ok=True)
24+
25+
if self.sub_dir is not None:
26+
dir = parent / self.sub_dir
27+
dir.mkdir(exist_ok=True)
28+
else:
29+
dir = parent
30+
31+
template = dir / f"{self.name}.html"
32+
template.write_text(self.content)
33+
34+
self.file = template
35+
36+
return self
37+
38+
39+
@dataclass
40+
class TestAsset:
41+
__test__ = False
42+
43+
component: TestComponent
44+
content: str
45+
asset_type: AssetType
46+
file: Path | None = None
47+
48+
def create(self) -> TestAsset:
49+
if self.component.file is None:
50+
raise ValueError("Component must be created before adding assets")
51+
52+
component_dir = self.component.file.parent
53+
component_name = self.component.file.stem
54+
55+
asset_file = component_dir / f"{component_name}{self.asset_type.ext}"
56+
asset_file.write_text(self.content)
57+
58+
self.file = asset_file
59+
60+
return self
61+
62+
63+
@dataclass
64+
class TestComponentCase:
65+
__test__ = False
66+
67+
component: TestComponent
68+
template_content: str
69+
expected: str
70+
description: str = ""
71+
template_context: dict[str, Any] = field(default_factory=dict)

0 commit comments

Comments
 (0)