[themotte/rDrama#451] Expand test coverage to cover who should see removed comments
This commit is contained in:
parent
28f4807a9b
commit
2e0104a7cc
1 changed files with 46 additions and 7 deletions
|
@ -4,6 +4,16 @@ from . import fixture_comments
|
||||||
from . import util
|
from . import util
|
||||||
from files.__main__ import db_session
|
from files.__main__ import db_session
|
||||||
from files.classes import Submission
|
from files.classes import Submission
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def assert_comment_visibility(post, comment_body, clients):
|
||||||
|
for client_name, (client, should_see) in clients.items():
|
||||||
|
response = client.get(f'/post/{post.id}')
|
||||||
|
if should_see:
|
||||||
|
assert comment_body in response.text, f'{client_name} should see comment'
|
||||||
|
else:
|
||||||
|
assert comment_body not in response.text, f'{client_name} should not see comment'
|
||||||
|
|
||||||
@util.no_rate_limit
|
@util.no_rate_limit
|
||||||
def test_submission_comment_count(accounts, submissions, comments):
|
def test_submission_comment_count(accounts, submissions, comments):
|
||||||
|
@ -11,11 +21,9 @@ def test_submission_comment_count(accounts, submissions, comments):
|
||||||
Scenario:
|
Scenario:
|
||||||
1. There is a submission
|
1. There is a submission
|
||||||
2. Bob the badpoaster poasts a comment on the submission
|
2. Bob the badpoaster poasts a comment on the submission
|
||||||
3. submission.comment_count goes up by 1
|
3. submission.comment_count goes up by 1. Everyone can see the comment.
|
||||||
4. Alice the admin removes the comment
|
4. Alice the admin removes the comment
|
||||||
5. submission.comment_count goes down by 1
|
5. submission.comment_count goes down by 1. Only Bob and admins can see the comment.
|
||||||
6. Alice the admin unremoves the comment
|
|
||||||
7. submission.comment_count goes up by 1
|
|
||||||
"""
|
"""
|
||||||
db = db_session()
|
db = db_session()
|
||||||
alice_client, alice = accounts.client_and_user_for_account('Alice')
|
alice_client, alice = accounts.client_and_user_for_account('Alice')
|
||||||
|
@ -24,6 +32,8 @@ def test_submission_comment_count(accounts, submissions, comments):
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
bob_client, bob = accounts.client_and_user_for_account('Bob')
|
bob_client, bob = accounts.client_and_user_for_account('Bob')
|
||||||
|
carol_client, carol = accounts.client_and_user_for_account('Carol')
|
||||||
|
logged_off_client = accounts.logged_off()
|
||||||
|
|
||||||
post = submissions.submission_for_client(alice_client, {
|
post = submissions.submission_for_client(alice_client, {
|
||||||
'title': 'Weekly Takes',
|
'title': 'Weekly Takes',
|
||||||
|
@ -34,14 +44,43 @@ def test_submission_comment_count(accounts, submissions, comments):
|
||||||
post = db.query(Submission).filter_by(id=post_id).first()
|
post = db.query(Submission).filter_by(id=post_id).first()
|
||||||
assert 0 == post.comment_count
|
assert 0 == post.comment_count
|
||||||
|
|
||||||
|
comment_body = 'The sun is a social construct.'
|
||||||
comment = comments.comment_for_client(bob_client, post.id, {
|
comment = comments.comment_for_client(bob_client, post.id, {
|
||||||
'body': 'The sun is a social construct.'
|
'body': comment_body,
|
||||||
})
|
})
|
||||||
|
|
||||||
post = db.query(Submission).filter_by(id=post_id).first()
|
post = db.query(Submission).filter_by(id=post_id).first()
|
||||||
assert 1 == post.comment_count
|
assert 1 == post.comment_count
|
||||||
|
|
||||||
#alice_client.post('/admin/update_filter_status', {
|
assert_comment_visibility(post, comment_body, {
|
||||||
#})
|
'alice': (alice_client, True),
|
||||||
|
'bob': (bob_client, True),
|
||||||
|
'carol': (carol_client, True),
|
||||||
|
'guest': (logged_off_client, True),
|
||||||
|
})
|
||||||
|
|
||||||
|
alice_formkey = util.formkey_from(alice_client.get(f'/post/{post.id}').text)
|
||||||
|
response = alice_client.post(
|
||||||
|
'/admin/update_filter_status',
|
||||||
|
data=json.dumps({
|
||||||
|
'comment_id': comment.id,
|
||||||
|
'new_status': 'removed',
|
||||||
|
"formkey": alice_formkey,
|
||||||
|
}),
|
||||||
|
content_type='application/json'
|
||||||
|
)
|
||||||
|
assert 200 == response.status_code
|
||||||
|
|
||||||
|
post = db.query(Submission).filter_by(id=post_id).first()
|
||||||
|
|
||||||
|
assert_comment_visibility(post, comment_body, {
|
||||||
|
# Alice should see the comment because she is an admin, level >= 2
|
||||||
|
'alice': (alice_client, True),
|
||||||
|
# Bob should see the comment because he wrote the comment
|
||||||
|
'bob': (bob_client, True),
|
||||||
|
# Other users, and guests, should NOT see the comment, since it has been removed
|
||||||
|
'carol': (carol_client, False),
|
||||||
|
'guest': (logged_off_client, False),
|
||||||
|
})
|
||||||
|
|
||||||
assert True
|
assert True
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue