Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
zesje
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
7
Issues
7
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Works on my machine
zesje
Commits
f075de53
Commit
f075de53
authored
Jun 03, 2019
by
Hugo Kerstens
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add test for database cascades
parent
64706fca
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
140 additions
and
1 deletion
+140
-1
tests/test_database.py
tests/test_database.py
+140
-1
No files found.
tests/test_database.py
View file @
f075de53
import
pytest
from
flask
import
Flask
from
zesje.database
import
db
,
Exam
,
_generate_exam_token
from
zesje.database
import
db
,
_generate_exam_token
,
Exam
,
Problem
,
ProblemWidget
,
Solution
from
zesje.database
import
Submission
,
Scan
,
Page
,
ExamWidget
,
FeedbackOption
@
pytest
.
mark
.
parametrize
(
'duplicate_count'
,
[
...
...
@@ -32,3 +33,141 @@ def test_exam_generate_token_length_uppercase(duplicate_count, monkeypatch):
id
=
_generate_exam_token
()
assert
len
(
id
)
==
12
assert
id
.
isupper
()
def
test_cascades_exam
(
empty_app
,
exam
,
problem
,
submission
,
scan
,
exam_widget
):
"""Tests the cascades defined for a exam
Tests the cascades for the following relations:
- Exam -> Submission
- Exam -> Problem
- Exam -> Scan
- Exam -> ExamWidget
"""
empty_app
.
app_context
()
.
push
()
exam
.
problems
=
[
problem
]
exam
.
scans
=
[
scan
]
exam
.
submissions
=
[
submission
]
exam
.
widgets
=
[
exam_widget
]
db
.
session
.
add
(
exam
)
db
.
session
.
commit
()
assert
problem
in
db
.
session
assert
submission
in
db
.
session
assert
scan
in
db
.
session
assert
exam_widget
in
db
.
session
db
.
session
.
delete
(
exam
)
db
.
session
.
commit
()
assert
problem
not
in
db
.
session
assert
submission
not
in
db
.
session
assert
scan
not
in
db
.
session
assert
exam_widget
not
in
db
.
session
def
test_cascades_problem
(
empty_app
,
exam
,
problem
,
submission
,
solution
,
problem_widget
,
feedback_option
):
"""Tests the cascades defined for a problem
Tests the cascades for the following relations:
- Problem -> Solution
- Problem -> ProblemWidget
- Problem -> FeedbackOption
"""
empty_app
.
app_context
()
.
push
()
exam
.
problems
=
[
problem
]
exam
.
submissions
=
[
submission
]
solution
.
submission
=
submission
problem
.
widget
=
problem_widget
problem
.
solutions
=
[
solution
]
problem
.
feedback_options
=
[
feedback_option
]
db
.
session
.
add_all
([
exam
,
problem
,
submission
])
db
.
session
.
commit
()
assert
solution
in
db
.
session
assert
problem_widget
in
db
.
session
assert
feedback_option
in
db
.
session
db
.
session
.
delete
(
problem
)
db
.
session
.
commit
()
assert
solution
not
in
db
.
session
assert
problem_widget
not
in
db
.
session
assert
feedback_option
not
in
db
.
session
def
test_cascades_submission
(
empty_app
,
exam
,
problem
,
submission
,
solution
,
page
):
"""Tests the cascades defined for a submission
Tests the cascades for the following relations:
- Submission -> Solution
- Submission -> Page
"""
empty_app
.
app_context
()
.
push
()
exam
.
problems
=
[
problem
]
exam
.
submissions
=
[
submission
]
solution
.
problem
=
problem
solution
.
submission
=
submission
page
.
submission
=
submission
db
.
session
.
add_all
([
exam
,
problem
,
submission
])
db
.
session
.
commit
()
assert
solution
in
db
.
session
assert
page
in
db
.
session
db
.
session
.
delete
(
submission
)
db
.
session
.
commit
()
assert
solution
not
in
db
.
session
assert
page
not
in
db
.
session
@
pytest
.
fixture
def
exam
():
return
Exam
(
name
=
''
)
@
pytest
.
fixture
def
problem
():
return
Problem
(
name
=
''
)
@
pytest
.
fixture
def
problem_widget
():
return
ProblemWidget
(
name
=
''
,
page
=
0
,
x
=
0
,
y
=
0
,
width
=
0
,
height
=
0
)
@
pytest
.
fixture
def
exam_widget
():
return
ExamWidget
(
name
=
''
,
x
=
0
,
y
=
0
)
@
pytest
.
fixture
def
submission
():
return
Submission
(
copy_number
=
0
)
@
pytest
.
fixture
def
solution
():
return
Solution
()
@
pytest
.
fixture
def
scan
():
return
Scan
(
name
=
''
,
status
=
''
)
@
pytest
.
fixture
def
page
():
return
Page
(
path
=
''
,
number
=
0
)
@
pytest
.
fixture
def
feedback_option
():
return
FeedbackOption
(
text
=
''
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment