Select Git revision
test_excel_publisher.py
test_survey.py 4.32 KiB
import json
import jsonschema
from compendium_v2.db import db
from compendium_v2.db.survey_model import Survey, SurveyStatus
from compendium_v2.routes.survey import LIST_SURVEYS_RESPONSE_SCHEMA
def test_survey_route_list_response(client, test_survey_data, mocked_admin_user):
rv = client.get(
'/api/survey/list',
headers={'Accept': ['application/json']})
assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8'))
jsonschema.validate(result, LIST_SURVEYS_RESPONSE_SCHEMA)
assert result
def test_survey_route_new(app, client, test_survey_data, mocked_user):
rv = client.post(
'/api/survey/new',
headers={'Accept': ['application/json']})
assert rv.status_code == 400
result = json.loads(rv.data.decode('utf-8'))
assert not result.get('success')
# mark all surveys as published
with app.app_context():
for survey in db.session.query(Survey).all():
survey.status = SurveyStatus.published
db.session.commit()
rv = client.post(
'/api/survey/new',
headers={'Accept': ['application/json']})
assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8'))
assert result == {'success': True}
rv = client.post(
'/api/survey/new',
headers={'Accept': ['application/json']})
assert rv.status_code != 200
def test_survey_route_open_close(app, client, test_survey_data, mocked_user):
rv = client.post(
'/api/survey/new',
headers={'Accept': ['application/json']})
assert rv.status_code == 400
result = json.loads(rv.data.decode('utf-8'))
assert not result.get('success')
# mark all surveys as published
with app.app_context():
for survey in db.session.query(Survey).all():
survey.status = SurveyStatus.published
db.session.commit()
rv = client.post(
'/api/survey/new',
headers={'Accept': ['application/json']})
assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8'))
assert result.get('success')
rv = client.post(
'/api/survey/open/2024',
headers={'Accept': ['application/json']})
assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8'))
assert result == {'success': True}
rv = client.post(
'/api/survey/open/2024',
headers={'Accept': ['application/json']})
assert rv.status_code != 200
rv = client.post(
'/api/survey/close/2024',
headers={'Accept': ['application/json']})
assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8'))
assert result == {'success': True}
rv = client.post(
'/api/survey/close/2024',
headers={'Accept': ['application/json']})
assert rv.status_code != 200
def test_survey_route_preview(app, client, test_survey_data, mocked_admin_user, mocker):
rv = client.post(
'/api/survey/preview/2023',
headers={'Accept': ['application/json']})
assert rv.status_code == 400
result = json.loads(rv.data.decode('utf-8'))
assert not result.get('success')
with app.app_context():
survey = db.session.query(Survey).filter(Survey.year == 2023).first()
survey.status = SurveyStatus.closed
db.session.commit()
mocker.patch('compendium_v2.routes.survey.publish', lambda year: None)
rv = client.post(
'/api/survey/preview/2023',
headers={'Accept': ['application/json']})
assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8'))
assert result.get('success')
def test_survey_route_publish(app, client, test_survey_data, mocked_admin_user, mocker):
rv = client.post(
'/api/survey/publish/2023',
headers={'Accept': ['application/json']})
assert rv.status_code == 400
result = json.loads(rv.data.decode('utf-8'))
assert not result.get('success')
with app.app_context():
survey = db.session.query(Survey).filter(Survey.year == 2023).first()
survey.status = SurveyStatus.preview
db.session.commit()
mocker.patch('compendium_v2.routes.survey.publish', lambda year: None)
rv = client.post(
'/api/survey/publish/2023',
headers={'Accept': ['application/json']})
assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8'))
assert result.get('success')