def test_project_to_csv(self): project = Project(name='test', html_template='<p>${number} - ${letter}</p>') project.save() batch_one = Batch(project=project) batch_one.save() task1 = Task( batch=batch_one, completed=True, input_csv_fields={ 'number': '1', 'letter': 'a' }, ) task1.save() TaskAssignment(answers={ 'combined': '1a' }, assigned_to=None, completed=True, task=task1).save() batch_two = Batch(project=project) batch_two.save() task2 = Task(batch=batch_two, completed=True, input_csv_fields={ 'number': '2', 'letter': 'b' }) task2.save() TaskAssignment(answers={ 'combined': '2b' }, assigned_to=None, completed=True, task=task2).save() csv_output = BytesIO() project.to_csv(csv_output) rows = csv_output.getvalue().split(b'\r\n') self.assertTrue( b'"Input.letter","Input.number","Answer.combined"' in rows[0]) self.assertTrue(any([b'"a","1","1a"' in row for row in rows[1:]])) self.assertTrue(any([b'"b","2","2b"' in row for row in rows[1:]]))
def test_project_to_csv_different_answers_per_batch(self): project = Project(name='test', html_template='<p>${letter}</p>') project.save() batch_one = Batch(project=project) batch_one.save() task1 = Task( batch=batch_one, completed=True, input_csv_fields={'letter': 'a'}, ) task1.save() TaskAssignment(answers={ '1': 1, '2': 2 }, assigned_to=None, completed=True, task=task1).save() batch_two = Batch(project=project) batch_two.save() task2 = Task( batch=batch_two, completed=True, input_csv_fields={'letter': 'b'}, ) task2.save() TaskAssignment(answers={ '3': 3, '4': 4 }, assigned_to=None, completed=True, task=task2).save() csv_output = BytesIO() project.to_csv(csv_output) rows = csv_output.getvalue().split(b'\r\n') self.assertTrue( b'"Input.letter","Answer.1","Answer.2","Answer.3","Answer.4"' in rows[0]) self.assertTrue(b'"a","1","2","",""' in rows[1]) self.assertTrue(b'"b","","","3","4"' in rows[2])
def test_project_to_csv_different_answers_per_batch(self): project = Project(name='test', html_template='<p>${letter}</p><textarea>') project.save() batch_one = Batch(project=project) batch_one.save() task1 = Task( batch=batch_one, completed=True, input_csv_fields={'letter': 'a'}, ) task1.save() TaskAssignment( answers={'1': 1, '2': 2}, assigned_to=None, completed=True, task=task1 ).save() batch_two = Batch(project=project) batch_two.save() task2 = Task( batch=batch_two, completed=True, input_csv_fields={'letter': 'b'}, ) task2.save() TaskAssignment( answers={'3': 3, '4': 4}, assigned_to=None, completed=True, task=task2 ).save() csv_output = StringIO() project.to_csv(csv_output) rows = csv_output.getvalue().split('\r\n') self.assertTrue( '"Input.letter","Answer.1","Answer.2","Answer.3","Answer.4"' in rows[0]) self.assertTrue('"a","1","2","",""' in rows[1]) self.assertTrue('"b","","","3","4"' in rows[2])
def test_project_to_csv(self): project = Project(name='test', html_template='<p>${number} - ${letter}</p><textarea>') project.save() batch_one = Batch(project=project) batch_one.save() task1 = Task( batch=batch_one, completed=True, input_csv_fields={'number': '1', 'letter': 'a'}, ) task1.save() TaskAssignment( answers={'combined': '1a'}, assigned_to=None, completed=True, task=task1 ).save() batch_two = Batch(project=project) batch_two.save() task2 = Task( batch=batch_two, completed=True, input_csv_fields={'number': '2', 'letter': 'b'} ) task2.save() TaskAssignment( answers={'combined': '2b'}, assigned_to=None, completed=True, task=task2 ).save() csv_output = StringIO() project.to_csv(csv_output) rows = csv_output.getvalue().split('\r\n') self.assertTrue( '"Input.letter","Input.number","Answer.combined"' in rows[0]) self.assertTrue(any(['"a","1","1a"' in row for row in rows[1:]])) self.assertTrue(any(['"b","2","2b"' in row for row in rows[1:]]))