Skip to content
Snippets Groups Projects
Commit 0af26f8e authored by Remco Tukker's avatar Remco Tukker
Browse files

fix testcases and add missing gender policy everywhere

parent dc4a4c11
Branches
Tags
1 merge request!77Feature/comp 276 publisher v2
...@@ -16,6 +16,7 @@ function getJSXFromMap(data: Map<string, Map<number, Policy>>) { ...@@ -16,6 +16,7 @@ function getJSXFromMap(data: Map<string, Map<number, Policy>>) {
['data_protection', 'Data Protection Policy'], ['data_protection', 'Data Protection Policy'],
['environmental', 'Environmental Policy'], ['environmental', 'Environmental Policy'],
['equal_opportunity', 'Equal Opportunity Policy'], ['equal_opportunity', 'Equal Opportunity Policy'],
['gender_equality', 'Gender Equality Policy'],
['privacy_notice', 'Privacy Notice'], ['privacy_notice', 'Privacy Notice'],
['strategic_plan', 'Strategic Plan'] ['strategic_plan', 'Strategic Plan']
]; ];
... ...
......
...@@ -17,6 +17,8 @@ depends_on = None ...@@ -17,6 +17,8 @@ depends_on = None
def upgrade(): def upgrade():
op.execute("DELETE FROM policy") # data is incomplete so force people to republish
# ### commands auto generated by Alembic - please adjust! ### # ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('policy', schema=None) as batch_op: with op.batch_alter_table('policy', schema=None) as batch_op:
batch_op.add_column(sa.Column('gender_equality', sa.String(), nullable=False)) batch_op.add_column(sa.Column('gender_equality', sa.String(), nullable=False))
... ...
......
...@@ -547,6 +547,7 @@ def transfer_policies(nren_dict): ...@@ -547,6 +547,7 @@ def transfer_policies(nren_dict):
acceptable_use=nren_info['acceptable_use'], acceptable_use=nren_info['acceptable_use'],
privacy_notice=nren_info['privacy'], privacy_notice=nren_info['privacy'],
data_protection=nren_info['data_protection'], data_protection=nren_info['data_protection'],
gender_equality=nren_info['gender']
) )
db.session.merge(policy_data) db.session.merge(policy_data)
db.session.commit() db.session.commit()
... ...
......
...@@ -3,8 +3,8 @@ from decimal import Decimal ...@@ -3,8 +3,8 @@ from decimal import Decimal
from sqlalchemy import delete, select from sqlalchemy import delete, select
from compendium_v2.db import db from compendium_v2.db import db
from compendium_v2.db.model import BudgetEntry, ChargingStructure, ECProject, FeeType, FundingSource, InstitutionURLs,\ from compendium_v2.db.model import BudgetEntry, ChargingStructure, ECProject, FeeType, FundingSource, \
NrenStaff, ParentOrganization, Policy, SubOrganization, TrafficVolume InstitutionURLs, NrenStaff, ParentOrganization, Policy, SubOrganization, TrafficVolume
from compendium_v2.db.survey_model import ResponseStatus, SurveyResponse from compendium_v2.db.survey_model import ResponseStatus, SurveyResponse
... ...
......
...@@ -24,6 +24,7 @@ POLICY_RESPONSE_SCHEMA = { ...@@ -24,6 +24,7 @@ POLICY_RESPONSE_SCHEMA = {
'acceptable_use': {'type': 'string'}, 'acceptable_use': {'type': 'string'},
'privacy_notice': {'type': 'string'}, 'privacy_notice': {'type': 'string'},
'data_protection': {'type': 'string'}, 'data_protection': {'type': 'string'},
'gender_equality': {'type': 'string'}
}, },
'required': ['nren', 'nren_country', 'year', 'strategic_plan', 'environmental', 'equal_opportunity', 'required': ['nren', 'nren_country', 'year', 'strategic_plan', 'environmental', 'equal_opportunity',
'connectivity', 'acceptable_use', 'privacy_notice', 'data_protection'], 'connectivity', 'acceptable_use', 'privacy_notice', 'data_protection'],
...@@ -63,6 +64,7 @@ def policy_view() -> Any: ...@@ -63,6 +64,7 @@ def policy_view() -> Any:
'acceptable_use': entry.acceptable_use, 'acceptable_use': entry.acceptable_use,
'privacy_notice': entry.privacy_notice, 'privacy_notice': entry.privacy_notice,
'data_protection': entry.data_protection, 'data_protection': entry.data_protection,
'gender_equality': entry.gender_equality
} }
entries = [_extract_data(entry) for entry in common.get_data(Policy)] entries = [_extract_data(entry) for entry in common.get_data(Policy)]
... ...
......
Source diff could not be displayed: it is too large. Options to address this: view the blob.
...@@ -156,16 +156,17 @@ def test_survey_data(app): ...@@ -156,16 +156,17 @@ def test_survey_data(app):
db.session.add_all(nren_dict.values()) db.session.add_all(nren_dict.values())
survey2021 = survey_model.Survey(year=2021, survey={}, status=survey_model.SurveyStatus.published) survey2021 = survey_model.Survey(year=2021, survey={}, status=survey_model.SurveyStatus.published)
survey2022 = survey_model.Survey( survey2022 = survey_model.Survey(year=2022, survey={}, status=survey_model.SurveyStatus.published)
year=2022, survey2023 = survey_model.Survey(
year=2023,
survey={'part1': [{'title': 'ha', 'visibleIf': 'false'}]}, survey={'part1': [{'title': 'ha', 'visibleIf': 'false'}]},
status=survey_model.SurveyStatus.open status=survey_model.SurveyStatus.open
) )
db.session.add_all([survey2021, survey2022]) db.session.add_all([survey2021, survey2022, survey2023])
db.session.add(survey_model.SurveyResponse( db.session.add(survey_model.SurveyResponse(
nren=nren_dict['nren1'], nren=nren_dict['nren1'],
survey=survey2022, survey=survey2023,
answers={}, answers={},
status=survey_model.ResponseStatus.completed status=survey_model.ResponseStatus.completed
)) ))
...@@ -327,7 +328,8 @@ def test_policy_data(app): ...@@ -327,7 +328,8 @@ def test_policy_data(app):
connectivity='', connectivity='',
acceptable_use='', acceptable_use='',
privacy_notice='', privacy_notice='',
data_protection='' data_protection='',
gender_equality='gender equality policy'
)) ))
db.session.commit() db.session.commit()
... ...
......
...@@ -47,7 +47,7 @@ def test_response_route_load_save_closed_survey(client, test_survey_data, mocked ...@@ -47,7 +47,7 @@ def test_response_route_load_save_closed_survey(client, test_survey_data, mocked
def test_response_route_load_lock_save_response(client, test_survey_data, mocked_user): def test_response_route_load_lock_save_response(client, test_survey_data, mocked_user):
rv = client.post( rv = client.post(
'/api/response/save/2022/nren2', '/api/response/save/2023/nren2',
headers={'Accept': ['application/json']}, headers={'Accept': ['application/json']},
json={ json={
'data': {'q1': 'yes', 'q2': ['no']}, 'data': {'q1': 'yes', 'q2': ['no']},
...@@ -58,7 +58,7 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked ...@@ -58,7 +58,7 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
assert result.get('message') == 'Survey response not found' assert result.get('message') == 'Survey response not found'
rv = client.get('/api/response/load/2022/nren2', headers={'Accept': ['application/json']}) rv = client.get('/api/response/load/2023/nren2', headers={'Accept': ['application/json']})
assert rv.status_code == 200 assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
jsonschema.validate(result, SURVEY_RESPONSE_SCHEMA) jsonschema.validate(result, SURVEY_RESPONSE_SCHEMA)
...@@ -66,7 +66,7 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked ...@@ -66,7 +66,7 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked
assert result['data'] == {} assert result['data'] == {}
assert result['verification_status'] == {} assert result['verification_status'] == {}
rv = client.post('/api/response/lock/2022/nren2', headers={'Accept': ['application/json']}) rv = client.post('/api/response/lock/2023/nren2', headers={'Accept': ['application/json']})
assert rv.status_code == 200 assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
jsonschema.validate(result, SURVEY_LOCK_SCHEMA) jsonschema.validate(result, SURVEY_LOCK_SCHEMA)
...@@ -76,7 +76,7 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked ...@@ -76,7 +76,7 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked
assert result.get('status') == ResponseStatus.started.value assert result.get('status') == ResponseStatus.started.value
rv = client.post( rv = client.post(
'/api/response/save/2022/nren2', '/api/response/save/2023/nren2',
headers={'Accept': ['application/json']}, headers={'Accept': ['application/json']},
json={ json={
'data': {'q1': 'yes', 'q2': ['no']}, 'data': {'q1': 'yes', 'q2': ['no']},
...@@ -90,7 +90,7 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked ...@@ -90,7 +90,7 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked
assert result.get('message') == 'Somebody else is currently editing this survey.' assert result.get('message') == 'Somebody else is currently editing this survey.'
rv = client.post( rv = client.post(
'/api/response/save/2022/nren2', '/api/response/save/2023/nren2',
headers={'Accept': ['application/json']}, headers={'Accept': ['application/json']},
json={ json={
'data': {'q1': 'yes', 'q2': ['no']}, 'data': {'q1': 'yes', 'q2': ['no']},
...@@ -104,7 +104,7 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked ...@@ -104,7 +104,7 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked
jsonschema.validate(result, SURVEY_STATUS_RESPONSE_SCHEMA) jsonschema.validate(result, SURVEY_STATUS_RESPONSE_SCHEMA)
assert result.get('mode') == 'display' assert result.get('mode') == 'display'
rv = client.get('/api/response/load/2022/nren2', headers={'Accept': ['application/json']}) rv = client.get('/api/response/load/2023/nren2', headers={'Accept': ['application/json']})
assert rv.status_code == 200 assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
jsonschema.validate(result, SURVEY_RESPONSE_SCHEMA) jsonschema.validate(result, SURVEY_RESPONSE_SCHEMA)
...@@ -117,12 +117,12 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked ...@@ -117,12 +117,12 @@ def test_response_route_load_lock_save_response(client, test_survey_data, mocked
def test_response_route_unlock(client, test_survey_data, mocked_user): def test_response_route_unlock(client, test_survey_data, mocked_user):
rv = client.post('/api/response/unlock/2022/nren2', headers={'Accept': ['application/json']}) rv = client.post('/api/response/unlock/2023/nren2', headers={'Accept': ['application/json']})
assert rv.status_code == 404 assert rv.status_code == 404
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
assert result.get('message') == 'Survey response not found' assert result.get('message') == 'Survey response not found'
rv = client.post('/api/response/lock/2022/nren2', headers={'Accept': ['application/json']}) rv = client.post('/api/response/lock/2023/nren2', headers={'Accept': ['application/json']})
assert rv.status_code == 200 assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
jsonschema.validate(result, SURVEY_LOCK_SCHEMA) jsonschema.validate(result, SURVEY_LOCK_SCHEMA)
...@@ -131,7 +131,7 @@ def test_response_route_unlock(client, test_survey_data, mocked_user): ...@@ -131,7 +131,7 @@ def test_response_route_unlock(client, test_survey_data, mocked_user):
assert result.get('locked_by') == mocked_user.fullname assert result.get('locked_by') == mocked_user.fullname
assert result.get('status') == ResponseStatus.started.value assert result.get('status') == ResponseStatus.started.value
rv = client.post('/api/response/unlock/2022/nren2', headers={'Accept': ['application/json']}) rv = client.post('/api/response/unlock/2023/nren2', headers={'Accept': ['application/json']})
assert rv.status_code == 200 assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
jsonschema.validate(result, SURVEY_STATUS_RESPONSE_SCHEMA) jsonschema.validate(result, SURVEY_STATUS_RESPONSE_SCHEMA)
...@@ -139,7 +139,7 @@ def test_response_route_unlock(client, test_survey_data, mocked_user): ...@@ -139,7 +139,7 @@ def test_response_route_unlock(client, test_survey_data, mocked_user):
def test_response_route_lock_prevents_other_edits(app, mocker, client, test_survey_data, mocked_user): def test_response_route_lock_prevents_other_edits(app, mocker, client, test_survey_data, mocked_user):
rv = client.post('/api/response/lock/2022/nren2', headers={'Accept': ['application/json']}) rv = client.post('/api/response/lock/2023/nren2', headers={'Accept': ['application/json']})
assert rv.status_code == 200 assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
jsonschema.validate(result, SURVEY_LOCK_SCHEMA) jsonschema.validate(result, SURVEY_LOCK_SCHEMA)
...@@ -154,7 +154,7 @@ def test_response_route_lock_prevents_other_edits(app, mocker, client, test_surv ...@@ -154,7 +154,7 @@ def test_response_route_lock_prevents_other_edits(app, mocker, client, test_surv
return user2 return user2
mocker.patch('flask_login.utils._get_user', user_loader) mocker.patch('flask_login.utils._get_user', user_loader)
rv = client.post('/api/response/lock/2022/nren2', headers={'Accept': ['application/json']}) rv = client.post('/api/response/lock/2023/nren2', headers={'Accept': ['application/json']})
assert rv.status_code == 403 assert rv.status_code == 403
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
assert result.get('message') == 'This survey is already locked.' assert result.get('message') == 'This survey is already locked.'
...@@ -64,66 +64,70 @@ def test_survey_route_open_close(app, client, test_survey_data, mocked_user): ...@@ -64,66 +64,70 @@ def test_survey_route_open_close(app, client, test_survey_data, mocked_user):
assert result.get('success') assert result.get('success')
rv = client.post( rv = client.post(
'/api/survey/open/2023', '/api/survey/open/2024',
headers={'Accept': ['application/json']}) headers={'Accept': ['application/json']})
assert rv.status_code == 200 assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
assert result == {'success': True} assert result == {'success': True}
rv = client.post( rv = client.post(
'/api/survey/open/2023', '/api/survey/open/2024',
headers={'Accept': ['application/json']}) headers={'Accept': ['application/json']})
assert rv.status_code != 200 assert rv.status_code != 200
rv = client.post( rv = client.post(
'/api/survey/close/2023', '/api/survey/close/2024',
headers={'Accept': ['application/json']}) headers={'Accept': ['application/json']})
assert rv.status_code == 200 assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
assert result == {'success': True} assert result == {'success': True}
rv = client.post( rv = client.post(
'/api/survey/close/2023', '/api/survey/close/2024',
headers={'Accept': ['application/json']}) headers={'Accept': ['application/json']})
assert rv.status_code != 200 assert rv.status_code != 200
def test_survey_route_preview(app, client, test_survey_data, mocked_admin_user): def test_survey_route_preview(app, client, test_survey_data, mocked_admin_user, mocker):
rv = client.post( rv = client.post(
'/api/survey/preview/2022', '/api/survey/preview/2023',
headers={'Accept': ['application/json']}) headers={'Accept': ['application/json']})
assert rv.status_code == 400 assert rv.status_code == 400
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
assert not result.get('success') assert not result.get('success')
with app.app_context(): with app.app_context():
survey = db.session.query(Survey).filter(Survey.year == 2022).first() survey = db.session.query(Survey).filter(Survey.year == 2023).first()
survey.status = SurveyStatus.closed survey.status = SurveyStatus.closed
db.session.commit() db.session.commit()
mocker.patch('compendium_v2.routes.survey.publish', lambda year: None)
rv = client.post( rv = client.post(
'/api/survey/preview/2022', '/api/survey/preview/2023',
headers={'Accept': ['application/json']}) headers={'Accept': ['application/json']})
assert rv.status_code == 200 assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
assert result.get('success') assert result.get('success')
def test_survey_route_publish(app, client, test_survey_data, mocked_admin_user): def test_survey_route_publish(app, client, test_survey_data, mocked_admin_user, mocker):
rv = client.post( rv = client.post(
'/api/survey/publish/2022', '/api/survey/publish/2023',
headers={'Accept': ['application/json']}) headers={'Accept': ['application/json']})
assert rv.status_code == 400 assert rv.status_code == 400
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
assert not result.get('success') assert not result.get('success')
with app.app_context(): with app.app_context():
survey = db.session.query(Survey).filter(Survey.year == 2022).first() survey = db.session.query(Survey).filter(Survey.year == 2023).first()
survey.status = SurveyStatus.preview survey.status = SurveyStatus.preview
db.session.commit() db.session.commit()
mocker.patch('compendium_v2.routes.survey.publish', lambda year: None)
rv = client.post( rv = client.post(
'/api/survey/publish/2022', '/api/survey/publish/2023',
headers={'Accept': ['application/json']}) headers={'Accept': ['application/json']})
assert rv.status_code == 200 assert rv.status_code == 200
result = json.loads(rv.data.decode('utf-8')) result = json.loads(rv.data.decode('utf-8'))
... ...
......
...@@ -187,7 +187,7 @@ def test_publisher(app_with_survey_db, mocker, dummy_config): ...@@ -187,7 +187,7 @@ def test_publisher(app_with_survey_db, mocker, dummy_config):
if question_id in [ if question_id in [
16469, 16064, 15720, 15305, 14910, 16471, 16066, 15722, 15307, 14912, 16473, 16378, 16469, 16064, 15720, 15305, 14910, 16471, 16066, 15722, 15307, 14912, 16473, 16378,
16475, 16068, 15724, 15309, 14914, 16477, 16070, 15726, 15311, 14916, 16479, 16072, 15728, 15575, 16475, 16068, 15724, 15309, 14914, 16477, 16070, 15726, 15311, 14916, 16479, 16072, 15728, 15575,
16481, 16074, 15730, 15577]: 16481, 16074, 15730, 15577, 16761]:
return [ return [
('nren1', f'www.nren.com/somepolicy{year}.pdf'), ('nren1', f'www.nren.com/somepolicy{year}.pdf'),
('nren2', 'policyemail@nren.com'), ('nren2', 'policyemail@nren.com'),
... ...
......
...@@ -83,11 +83,11 @@ def test_v2_publisher_full(app): ...@@ -83,11 +83,11 @@ def test_v2_publisher_full(app):
assert policy.strategic_plan == "https://serere.com" assert policy.strategic_plan == "https://serere.com"
assert policy.environmental == "http://mren.ac.me/documents/Environmental%20policy%20for%20MREN.pdf" assert policy.environmental == "http://mren.ac.me/documents/Environmental%20policy%20for%20MREN.pdf"
assert policy.equal_opportunity == "" assert policy.equal_opportunity == ""
assert policy.connectivity == "http://www.ucg.ac.me/skladiste/blog_1028/objava_10/fajlovi/Pravila%20o%20koriscenju%20Akademske%20mreze%20Univerziteta%20Crne%20Gore.pdf" assert policy.connectivity == "http://www.ucg.ac.me/skladiste/blog_1028/objava_10/fajlovi/Pravila%20o%20koriscenju%20Akademske%20mreze%20Univerziteta%20Crne%20Gore.pdf" # noqa: E501
assert policy.acceptable_use == "http://www.ucg.ac.me/skladiste/blog_1028/objava_10/fajlovi/Pravila%20o%20koriscenju%20Akademske%20mreze%20Univerziteta%20Crne%20Gore.pdf" assert policy.acceptable_use == "http://www.ucg.ac.me/skladiste/blog_1028/objava_10/fajlovi/Pravila%20o%20koriscenju%20Akademske%20mreze%20Univerziteta%20Crne%20Gore.pdf" # noqa: E501
assert policy.privacy_notice == "" assert policy.privacy_notice == ""
assert policy.data_protection == "" assert policy.data_protection == ""
assert policy.gender_equality == "https://www.ucg.ac.me/objava/blog/616808/objava/148423-plan-rodne-ravnopravnosti-univerziteta-crne-gore" assert policy.gender_equality == "https://www.ucg.ac.me/objava/blog/616808/objava/148423-plan-rodne-ravnopravnosti-univerziteta-crne-gore" # noqa: E501
traffic = db.session.scalar(select(model.TrafficVolume)) traffic = db.session.scalar(select(model.TrafficVolume))
assert traffic.to_customers == Decimal("3") assert traffic.to_customers == Decimal("3")
... ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment