Skip to content

Commit 27b023f

Browse files
authored
Simplify pull request handler (#286)
* Simplify pull request handler * Remove redundant test
1 parent 15ba872 commit 27b023f

2 files changed

Lines changed: 6 additions & 18 deletions

File tree

democrasite/webiscite/tests/test_webhooks.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -136,15 +136,6 @@ def test_pr_handler_dispatch_invalid(self, pr_handler: PullRequestHandler):
136136
assert response.status_code == HTTPStatus.BAD_REQUEST
137137
assert response.content == b"Unsupported action: test"
138138

139-
def test_pr_handler_get_response(self, pr_handler: PullRequestHandler, bill: Bill):
140-
response = pr_handler.get_response("test", bill.pull_request, bill)
141-
142-
assert json.loads(response.content) == {
143-
"action": "test",
144-
"pull_request": bill.pull_request.number,
145-
"bill": bill.id,
146-
}
147-
148139
@patch("requests.get")
149140
def test_opened(self, mock_get, user: User, pr_handler: PullRequestHandler):
150141
pr = GithubPullRequestFactory.create()

democrasite/webiscite/webhooks.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ def __call__(self, payload: dict) -> HttpResponse:
4242
An object containing the primary keys of the pull request and bill affected,
4343
if applicable
4444
"""
45+
action = payload["action"]
4546
handler: (
4647
Callable[[dict[str, Any]], tuple[PullRequest | None, Bill | None]] | None
4748
)
48-
handler = getattr(self, payload["action"], None)
49+
handler = getattr(self, action, None)
4950
if handler is None:
5051
logger.warning(
5152
"GitHub pull request webhook failed with unsupported action: %s",
@@ -54,18 +55,14 @@ def __call__(self, payload: dict) -> HttpResponse:
5455
return HttpResponseBadRequest(f"Unsupported action: {payload['action']}")
5556

5657
pull_request, bill = handler(payload["pull_request"])
57-
return self.get_response(payload["action"], pull_request, bill)
5858

59-
def get_response(
60-
self, action: str, pull_request: PullRequest | None, bill: Bill | None
61-
) -> JsonResponse:
62-
body: dict[str, str | int] = {"action": action}
59+
response = {"action": action}
6360
if pull_request is not None:
64-
body["pull_request"] = pull_request.number
61+
response["pull_request"] = pull_request.number
6562
if bill is not None:
66-
body["bill"] = bill.id
63+
response["bill"] = bill.id
6764

68-
return JsonResponse(body)
65+
return JsonResponse(response)
6966

7067
def reopened(self, pr: dict[str, Any]) -> tuple[PullRequest, Bill | None]:
7168
return self.opened(pr)

0 commit comments

Comments
 (0)