Skip to content
Snippets Groups Projects
Select Git revision
  • ca123a7c3d6b7d9dc322a7a8d14805a3acb8ac68
  • develop default
  • master protected
  • feature/frontend-tests
  • 0.110
  • 0.109
  • 0.108
  • 0.107
  • 0.106
  • 0.105
  • 0.104
  • 0.103
  • 0.102
  • 0.101
  • 0.100
  • 0.99
  • 0.98
  • 0.97
  • 0.96
  • 0.95
  • 0.94
  • 0.93
  • 0.92
  • 0.91
24 results

survey.py

Blame
  • 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')