Skip to content
Snippets Groups Projects
Commit e38a1684 authored by Ruben Young On's avatar Ruben Young On
Browse files

Removed fixtures in conftest.py due to error added all tests in one file

parent d764be89
No related branches found
No related tags found
1 merge request!16Add API tests, small fix for MultipleChoiceOption
Pipeline #17838 passed
from flask import json
def mco_json():
return {
'x': 100,
'y': 40,
'problem_id': 1,
'page': 1,
'label': 'a',
'name': 'test'
}
def test_get_exams(test_client):
mc_option_1 = {
'x': 100,
'y': 40,
'problem_id': 3,
'page': 1,
'label': 'a',
'name': 'test'
}
test_client.put('/api/mult-choice/', data=mc_option_1)
mc_option_2 = {
'x': 100,
'y': 40,
'problem_id': 3,
'page': 1,
'label': 'a',
'name': 'test'
}
test_client.put('/api/mult-choice/', data=mc_option_2)
response = test_client.get('/api/exams/3')
data = json.loads(response.data)
print(data)
assert len(data['problems'][0]['mc_options']) == 2
......@@ -2,63 +2,8 @@ import os
import pytest
from zesje.api import api_bp
from zesje.database import db, Exam, Problem, ProblemWidget
from flask import Flask
# Adapted from https://stackoverflow.com/a/46062148/1062698
@pytest.fixture
def datadir():
return os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data')
def add_test_data():
exam1 = Exam(id=1, name='exam 1', finalized=False)
exam2 = Exam(id=2, name='exam 2', finalized=True)
exam3 = Exam(id=3, name='exam 1', finalized=False)
db.session.add(exam1)
db.session.add(exam2)
db.session.add(exam3)
db.session.commit()
problem1 = Problem(id=1, name='Problem 1', exam_id=1)
problem2 = Problem(id=2, name='Problem 2', exam_id=2)
problem3 = Problem(id=3, name='Problem 1', exam_id=3)
db.session.add(problem1)
db.session.add(problem2)
db.session.add(problem3)
db.session.commit()
problem_widget_1 = ProblemWidget(id=3, name='problem widget', problem_id=3, page=2,
width=100, height=150, x=40, y=200, type='problem_widget')
db.session.add(problem_widget_1)
db.session.commit()
@pytest.fixture(scope="module")
def app():
app = Flask(__name__, static_folder=None)
app.config.update(
SQLALCHEMY_DATABASE_URI='sqlite:///:memory:',
SQLALCHEMY_TRACK_MODIFICATIONS=False # Suppress future deprecation warning
)
db.init_app(app)
with app.app_context():
db.create_all()
add_test_data()
app.register_blueprint(api_bp, url_prefix='/api')
return app
@pytest.fixture()
def test_client(app):
client = app.test_client()
yield client
from flask import json
import pytest
from flask import Flask, json
from zesje.api import api_bp
from zesje.database import db, Exam, Problem, ProblemWidget
def add_test_data():
exam1 = Exam(id=1, name='exam 1', finalized=False)
exam2 = Exam(id=2, name='exam 2', finalized=True)
exam3 = Exam(id=3, name='exam 1', finalized=False)
db.session.add(exam1)
db.session.add(exam2)
db.session.add(exam3)
db.session.commit()
problem1 = Problem(id=1, name='Problem 1', exam_id=1)
problem2 = Problem(id=2, name='Problem 2', exam_id=2)
problem3 = Problem(id=3, name='Problem 1', exam_id=3)
db.session.add(problem1)
db.session.add(problem2)
db.session.add(problem3)
db.session.commit()
problem_widget_1 = ProblemWidget(id=3, name='problem widget', problem_id=3, page=2,
width=100, height=150, x=40, y=200, type='problem_widget')
db.session.add(problem_widget_1)
db.session.commit()
@pytest.fixture()
def app():
app = Flask(__name__, static_folder=None)
app.config.update(
SQLALCHEMY_DATABASE_URI='sqlite:///:memory:',
SQLALCHEMY_TRACK_MODIFICATIONS=False # Suppress future deprecation warning
)
db.init_app(app)
with app.app_context():
db.create_all()
add_test_data()
app.register_blueprint(api_bp, url_prefix='/api')
return app
@pytest.fixture()
def test_client(app):
client = app.test_client()
yield client
def mco_json():
......@@ -12,14 +67,19 @@ def mco_json():
}
def test_get_no_exam(test_client):
'''
MULTIPLE CHOICE OPTION TESTS
'''
def not_present(test_client):
result = test_client.get('/api/mult-choice/1')
data = json.loads(result.data)
assert data['message'] == "Multiple choice question with id 1 does not exist."
def test_add_exam(test_client):
def test_add(test_client):
req = mco_json()
response = test_client.put('/api/mult-choice/', data=req)
......@@ -44,12 +104,12 @@ def test_add_get(test_client):
data = json.loads(result.data)
exp_resp = {
'id': 5,
'id': 4,
'name': 'test',
'x': 100,
'y': 40,
'type': 'mcq_widget',
'feedback_id': 2,
'feedback_id': 1,
'label': 'a',
}
......@@ -118,3 +178,35 @@ def test_delete_finalized_exam(test_client):
data = json.loads(response.data)
assert data['status'] == 401
'''
EXAM API TESTS
'''
def test_get_exams(test_client):
mc_option_1 = {
'x': 100,
'y': 40,
'problem_id': 3,
'page': 1,
'label': 'a',
'name': 'test'
}
test_client.put('/api/mult-choice/', data=mc_option_1)
mc_option_2 = {
'x': 100,
'y': 40,
'problem_id': 3,
'page': 1,
'label': 'a',
'name': 'test'
}
test_client.put('/api/mult-choice/', data=mc_option_2)
response = test_client.get('/api/exams/3')
data = json.loads(response.data)
assert len(data['problems'][0]['mc_options']) == 2
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment