Skip to content

Commit fd4549c

Browse files
committed
test: refactor test case to parametrize
Extract test cases from inline to make it clearer which permutations are being tested. Signed-off-by: Mike Fiedler <[email protected]>
1 parent 76dddcf commit fd4549c

File tree

1 file changed

+30
-26
lines changed

1 file changed

+30
-26
lines changed

tests/unit/rss/test_views.py

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import datetime
1414

1515
import pretend
16+
import pytest
1617

1718
from warehouse.rss import views as rss
1819

@@ -102,36 +103,39 @@ def test_rss_project_releases(db_request):
102103
assert db_request.response.content_type == "text/xml"
103104

104105

105-
def test_format_author(db_request):
106+
@pytest.mark.parametrize(
107+
"author_email, expected",
108+
[
109+
(None, None),
110+
("", None),
111+
("UNKNOWN", None),
112+
("[email protected], UNKNOWN", None),
113+
114+
115+
(
116+
(
117+
# simple, no spaces
118+
119+
# space after
120+
121+
# space before, incl realname
122+
" No Reply <[email protected]>,"
123+
# two spaces before, angle brackets
124+
125+
),
126+
", ".join(["[email protected]"] * 4),
127+
),
128+
],
129+
)
130+
def test_format_author(db_request, author_email, expected):
106131
db_request.find_service = pretend.call_recorder(
107132
lambda *args, **kwargs: pretend.stub(
108133
enabled=False, csp_policy=pretend.stub(), merge=lambda _: None
109134
)
110135
)
111-
112136
db_request.session = pretend.stub()
113137

114-
project = ProjectFactory.create()
115-
release = ReleaseFactory.create(project=project)
116-
117-
release.author_email = "[email protected]"
118-
assert rss._format_author(release) == release.author_email
119-
120-
release.author_email = "No Reply <[email protected]>"
121-
assert rss._format_author(release) == "[email protected]"
122-
123-
for invalid in (None, "", "UNKNOWN", "[email protected], UNKNOWN"):
124-
release.author_email = invalid
125-
assert rss._format_author(release) is None
126-
127-
release.author_email = (
128-
# simple, no spaces
129-
130-
# space after
131-
132-
# space before, incl realname
133-
" No Reply <[email protected]>,"
134-
# two spaces before, angle brackets
135-
136-
)
137-
assert rss._format_author(release) == ", ".join(["[email protected]"] * 4)
138+
release = ReleaseFactory.create()
139+
140+
release.author_email = author_email
141+
assert rss._format_author(release) == expected

0 commit comments

Comments
 (0)