Add a grandchild comment test.

This commit is contained in:
Ben Rog-Wilhelm 2022-12-23 00:14:30 -06:00
parent fb77cbcc2b
commit fe800dd9a5
2 changed files with 37 additions and 0 deletions

View file

@ -52,3 +52,22 @@ def test_post_and_comment(accounts):
post_response = client.get(post.url)
assert post_response.status_code == 200
assert comment_body in post_response.text
# yank the ID out again
comment = util.ItemData.from_json(submit_comment_response.text)
# post a comment grandchild!
grandcomment_body = util.generate_text()
submit_grandcomment_response = client.post("/comment", data={
"parent_fullname": comment.id_full,
"parent_level": 1,
"submission": comment.id,
"body": grandcomment_body,
"formkey": util.formkey_from(submit_post_response.text),
})
assert submit_grandcomment_response.status_code == 200
# verify it actually got posted
post_response = client.get(post.url)
assert post_response.status_code == 200
assert grandcomment_body in post_response.text

View file

@ -1,5 +1,6 @@
from bs4 import BeautifulSoup
import json
import random
import re
import string
@ -34,3 +35,20 @@ class ItemData:
result.id_full = f"t2_{result.id}"
result.url = url
return result
@staticmethod
def from_json(text):
data = json.loads(text)
soup = BeautifulSoup(data["comment"], 'html.parser')
divid = soup.find("div")["id"]
match = re.search(r'comment-(\d+)', divid)
if match is None:
return None
result = ItemData()
result.id = match.group(1) # this really should get yanked out of the JS, not the HTML
result.id_full = f"t3_{result.id}"
result.url = f"/comment/{result.id}"
return result