Skip to content
Snippets Groups Projects

Added an export endpoint that produces a CSV file

Merged Jan Maximilian Michal requested to merge export-csv-results into master
6 files
+ 133
5
Compare changes
  • Side-by-side
  • Inline
Files
6
+ 86
0
 
from rest_framework import status
 
from django.test import TestCase, Client
 
 
from util.factories import make_test_data
 
 
 
class ExportCSVTest(TestCase):
 
 
@classmethod
 
def setUpTestData(cls):
 
cls.data = make_test_data(data_dict={
 
'submission_types': [
 
{
 
'name': '01. Sort',
 
'full_score': 35,
 
'description': 'Very complicated',
 
'solution': 'Trivial!'
 
},
 
{
 
'name': '02. Shuffle',
 
'full_score': 35,
 
'description': 'Very complicated',
 
'solution': 'Trivial!'
 
}
 
],
 
'students': [
 
{'username': 'student01'},
 
{'username': 'student02'}
 
],
 
'reviewers': [
 
{'username': 'reviewer'}
 
],
 
'submissions': [
 
{
 
'text': 'function blabl\n'
 
' on multi lines\n'
 
' for blabla in bla:\n'
 
' lorem ipsum und so\n',
 
'type': '01. Sort',
 
'user': 'student01',
 
'feedback': {
 
'score': 5,
 
'is_final': True,
 
'feedback_lines': {
 
'1': [{
 
'text': 'This is very bad!',
 
'of_tutor': 'reviewer'
 
}],
 
}
 
 
}
 
},
 
{
 
'text': 'not much',
 
'type': '02. Shuffle',
 
'user': 'student01'
 
},
 
{
 
'text': 'function blabl\n'
 
' asasxasx\n'
 
' lorem ipsum und so\n',
 
'type': '01. Sort',
 
'user': 'student02'
 
},
 
{
 
'text': 'not much to see here',
 
'type': '02. Shuffle',
 
'user': 'student02'
 
}
 
]}
 
)
 
 
def setUp(self):
 
client = Client()
 
client.force_login(user=self.data['reviewers'][0])
 
 
self.response = client.get('/export/csv/')
 
 
def test_can_access(self):
 
self.assertEqual(status.HTTP_200_OK, self.response.status_code)
 
 
def test_data_is_correct(self):
 
head, student1, student2, _ = self.response.content.split(b'\r\n')
 
self.assertIn(b'Matrikel,Username,Name,Sum,01. Sort,02. Shuffle', head)
 
self.assertIn(b'student01,,5,5,0', student1)
 
self.assertIn(b'student02,,0,0,0', student2)
Loading