1212from django_bird .templatetags .tags .asset import JS_TAG
1313from django_bird .templatetags .tags .asset import AssetNode
1414from django_bird .templatetags .tags .asset import do_asset
15+ from tests .conftest import TestAsset
16+ from tests .conftest import TestComponent
1517
1618
1719class TestTemplateTag :
@@ -44,16 +46,28 @@ def test_invalid_tag_name(self, tag):
4446 with pytest .raises (ValueError ):
4547 do_asset (parser , token )
4648
47- def test_template_inheritence (
48- self , create_bird_template , create_bird_asset , create_template , templates_dir
49- ):
50- alert = create_bird_template ("alert" , '<div class="alert">{{ slot }}</div>' )
51- alert_css = create_bird_asset (alert , ".alert { color: red; }" , "css" )
52- alert_js = create_bird_asset (alert , "console.log('alert');" , "js" )
53-
54- button = create_bird_template ("button" , "<button>{{ slot }}</button>" )
55- button_css = create_bird_asset (button , ".button { color: blue; }" , "css" )
56- button_js = create_bird_asset (button , "console.log('button');" , "js" )
49+ def test_template_inheritence (self , create_template , templates_dir ):
50+ alert = TestComponent (
51+ name = "alert" , content = '<div class="alert">{{ slot }}</div>'
52+ ).create (templates_dir )
53+ alert_css = TestAsset (
54+ component = alert , content = ".alert { color: red; }" , asset_type = AssetType .CSS
55+ ).create ()
56+ alert_js = TestAsset (
57+ component = alert , content = "console.log('alert');" , asset_type = AssetType .JS
58+ ).create ()
59+
60+ button = TestComponent (
61+ name = "button" , content = "<button>{{ slot }}</button>"
62+ ).create (templates_dir )
63+ button_css = TestAsset (
64+ component = button ,
65+ content = ".button { color: blue; }" ,
66+ asset_type = AssetType .CSS ,
67+ ).create ()
68+ button_js = TestAsset (
69+ component = button , content = "console.log('button');" , asset_type = AssetType .JS
70+ ).create ()
5771
5872 base_path = templates_dir / "base.html"
5973 base_path .write_text ("""
@@ -82,15 +96,15 @@ def test_template_inheritence(
8296
8397 rendered = template .render ({})
8498
85- assert f'<link rel="stylesheet" href="{ alert_css } ">' in rendered
86- assert f'<link rel="stylesheet" href="{ button_css } ">' in rendered
87- assert f'<script src="{ alert_js } "></script>' in rendered
88- assert f'<script src="{ button_js } "></script>' in rendered
99+ assert f'<link rel="stylesheet" href="{ alert_css . file } ">' in rendered
100+ assert f'<link rel="stylesheet" href="{ button_css . file } ">' in rendered
101+ assert f'<script src="{ alert_js . file } "></script>' in rendered
102+ assert f'<script src="{ button_js . file } "></script>' in rendered
89103
90- def test_with_no_assets (
91- self , create_bird_template , create_bird_asset , create_template , templates_dir
92- ):
93- create_bird_template ( "alert" , '<div class="alert">{{ slot }}</div>' )
104+ def test_with_no_assets (self , create_template , templates_dir ):
105+ TestComponent (
106+ name = "alert" , content = '<div class="alert">{{ slot }}</div>'
107+ ). create ( templates_dir )
94108
95109 base_path = templates_dir / "base.html"
96110 base_path .write_text ("""
@@ -114,16 +128,28 @@ def test_with_no_assets(
114128 assert '<link rel="stylesheet" href="' not in rendered
115129 assert '<script src="' not in rendered
116130
117- def test_component_render_order (
118- self , create_bird_template , create_bird_asset , create_template , templates_dir
119- ):
120- first = create_bird_template ("first" , "<div>First: {{ slot }}</div>" )
121- first_css = create_bird_asset (first , ".first { color: red; }" , "css" )
122- first_js = create_bird_asset (first , "console.log('first');" , "js" )
123-
124- second = create_bird_template ("second" , "<div>Second: {{ slot }}</div>" )
125- second_css = create_bird_asset (second , ".second { color: red; }" , "css" )
126- second_js = create_bird_asset (second , "console.log('second');" , "js" )
131+ def test_component_render_order (self , create_template , templates_dir ):
132+ first = TestComponent (
133+ name = "first" , content = "<div>First: {{ slot }}</div>"
134+ ).create (templates_dir )
135+ first_css = TestAsset (
136+ component = first , content = ".first { color: red; }" , asset_type = AssetType .CSS
137+ ).create ()
138+ first_js = TestAsset (
139+ component = first , content = "console.log('first');" , asset_type = AssetType .JS
140+ ).create ()
141+
142+ second = TestComponent (
143+ name = "second" , content = "<div>Second: {{ slot }}</div>"
144+ ).create (templates_dir )
145+ second_css = TestAsset (
146+ component = second ,
147+ content = ".second { color: red; }" ,
148+ asset_type = AssetType .CSS ,
149+ ).create ()
150+ second_js = TestAsset (
151+ component = second , content = "console.log('second');" , asset_type = AssetType .JS
152+ ).create ()
127153
128154 template_path = templates_dir / "test.html"
129155 template_path .write_text ("""
@@ -147,12 +173,14 @@ def test_component_render_order(
147173 rendered = template .render ({})
148174
149175 head_end = rendered .find ("</head>" )
150- assert f'<link rel="stylesheet" href="{ first_css } ">' in rendered [:head_end ]
151- assert f'<link rel="stylesheet" href="{ second_css } ">' in rendered [:head_end ]
176+ assert f'<link rel="stylesheet" href="{ first_css .file } ">' in rendered [:head_end ]
177+ assert (
178+ f'<link rel="stylesheet" href="{ second_css .file } ">' in rendered [:head_end ]
179+ )
152180
153181 body_start = rendered .find ("<body" )
154- assert f'<script src="{ first_js } "></script>' in rendered [body_start :]
155- assert f'<script src="{ second_js } "></script>' in rendered [body_start :]
182+ assert f'<script src="{ first_js . file } "></script>' in rendered [body_start :]
183+ assert f'<script src="{ second_js . file } "></script>' in rendered [body_start :]
156184
157185
158186class TestNode :
0 commit comments