Skip to content

Commit f786ef7

Browse files
committed
Fix pattern matching for templates using dashes
1 parent 33bb401 commit f786ef7

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

pattern_library/urls.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
# UI
88
re_path(r"^$", views.IndexView.as_view(), name="index"),
99
re_path(
10-
r"^pattern/(?P<pattern_template_name>[\w./-\\]+%s)$"
10+
r"^pattern/(?P<pattern_template_name>[\w./\-\\]+%s)$"
1111
% (get_pattern_template_suffix()),
1212
views.IndexView.as_view(),
1313
name="display_pattern",
1414
),
1515
# iframe rendering
1616
re_path(
17-
r"^render-pattern/(?P<pattern_template_name>[\w./-\\]+%s)$"
17+
r"^render-pattern/(?P<pattern_template_name>[\w./\-\\]+%s)$"
1818
% (get_pattern_template_suffix()),
1919
views.RenderPatternView.as_view(),
2020
name="render_pattern",
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
template-with-dash

tests/tests/test_views.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,31 @@ def test_pretty_names_from_filename(self):
5959
self.assertEqual(display_link.text.strip(), "test_molecule_no_context.html")
6060
self.assertEqual(render_link.text.strip(), pattern_path)
6161

62+
63+
def test_pretty_names_from_filename_containing_dashes(self):
64+
pattern_path = "patterns/molecules/test_molecule/test-molecule.html"
65+
test_molecule_display_url = reverse(
66+
"pattern_library:display_pattern",
67+
kwargs={"pattern_template_name": pattern_path},
68+
)
69+
test_molecule_render_url = reverse(
70+
"pattern_library:render_pattern",
71+
kwargs={"pattern_template_name": pattern_path},
72+
)
73+
74+
response = self.client.get(test_molecule_display_url)
75+
self.assertEqual(response.status_code, 200)
76+
77+
soup = BeautifulSoup(response.content, features="html.parser")
78+
79+
display_link = soup.select_one(
80+
f'.list__item>a[href="{test_molecule_display_url}"]'
81+
)
82+
render_link = soup.select_one(f'a[href="{test_molecule_render_url}"]')
83+
84+
self.assertEqual(display_link.text.strip(), "test-molecule.html")
85+
self.assertEqual(render_link.text.strip(), pattern_path)
86+
6287
def test_includes(self):
6388
pattern_path = "patterns/atoms/test_includes/test_includes.html"
6489
display_url = reverse(

0 commit comments

Comments
 (0)