mirror of
https://github.com/jointakahe/takahe.git
synced 2024-11-29 10:40:59 +00:00
e382994e73
Implement poll AP and API backend
62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
from datetime import timedelta
|
|
|
|
import pytest
|
|
from django.utils import timezone
|
|
|
|
from activities.models import Post
|
|
from core.ld import format_ld_date
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_get_poll(api_client):
|
|
response = api_client.post(
|
|
"/api/v1/statuses",
|
|
content_type="application/json",
|
|
data={
|
|
"status": "Hello, world!",
|
|
"poll": {
|
|
"options": ["Option 1", "Option 2"],
|
|
"expires_in": 300,
|
|
},
|
|
},
|
|
).json()
|
|
|
|
id = response["id"]
|
|
|
|
response = api_client.get(
|
|
f"/api/v1/polls/{id}",
|
|
).json()
|
|
|
|
assert response["id"] == id
|
|
assert response["voted"]
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_vote_poll(api_client, identity2):
|
|
post = Post.create_local(
|
|
author=identity2,
|
|
content="<p>Test Question</p>",
|
|
question={
|
|
"type": "Question",
|
|
"mode": "oneOf",
|
|
"options": [
|
|
{"name": "Option 1", "type": "Note", "votes": 0},
|
|
{"name": "Option 2", "type": "Note", "votes": 0},
|
|
],
|
|
"voter_count": 0,
|
|
"end_time": format_ld_date(timezone.now() + timedelta(1)),
|
|
},
|
|
)
|
|
|
|
response = api_client.post(
|
|
f"/api/v1/polls/{post.id}/votes",
|
|
content_type="application/json",
|
|
data={
|
|
"choices": [0],
|
|
},
|
|
).json()
|
|
|
|
assert response["id"] == str(post.id)
|
|
assert response["voted"]
|
|
assert response["votes_count"] == 1
|
|
assert response["own_votes"] == [0]
|