def test_split_columns(self):
     # TODO: It probably makes more sense to test columns independently...
     # I'm assuming they will have some sort of get_value(document) property
     table_configuration = TableConfiguration(
         path=['form'],
         columns=[
             SplitExportColumn(
                 item=MultipleChoiceItem(
                     path=['form', 'q1'],
                     options=[Option(value='a'), Option(value='c')]
                 ),
                 ignore_extras=True
             ),
             SplitExportColumn(
                 item=MultipleChoiceItem(
                     path=['form', 'q1'],
                     options=[Option(value='a'), Option(value='c')]
                 ),
                 ignore_extras=False
             ),
         ]
     )
     submission = {"form": {"q1": "a b d"}}
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission)],
         [[1, None, 1, None, "b d"]]
     )
 def test_simple(self):
     table_configuration = TableConfiguration(
         columns=[
             ExportColumn(
                 item=ScalarItem(
                     path=['form', 'q3'],
                 )
             ),
             ExportColumn(
                 item=ScalarItem(
                     path=['form', 'q1'],
                 )
             ),
         ]
     )
     submission = {
         "form": {
             "q1": "foo",
             "q2": "bar",
             "q3": "baz"
         }
     }
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission)],
         [['baz', 'foo']]
     )
 def test_repeat(self):
     table_configuration = TableConfiguration(
         path=[PathNode(name="form", is_repeat=False), PathNode(name="repeat1", is_repeat=True)],
         columns=[
             ExportColumn(
                 item=ScalarItem(
                     path=[
                         PathNode(name="form"),
                         PathNode(name="repeat1", is_repeat=True),
                         PathNode(name="q1")
                     ],
                 ),
                 selected=True,
             ),
         ]
     )
     submission = {
         'domain': 'my-domain',
         '_id': '1234',
         'form': {
             'repeat1': [
                 {'q1': 'foo'},
                 {'q1': 'bar'}
             ]
         }
     }
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission, 0)],
         [ExportRow(['foo']).data, ExportRow(['bar']).data]
     )
 def test_empty_group(self):
     table_configuration = TableConfiguration(
         path=[
             PathNode(name="form", is_repeat=False),
             PathNode(name="group", is_repeat=False),
             PathNode(name="repeat1", is_repeat=True)
         ],
         columns=[
             ExportColumn(
                 item=ScalarItem(
                     path=[
                         PathNode(name="form"),
                         PathNode(name="group"),
                         PathNode(name="repeat1", is_repeat=True),
                         PathNode(name="q1")
                     ],
                 ),
                 selected=True,
             ),
         ]
     )
     submission = {
         'domain': 'my-domain',
         '_id': '1234',
         'form': {
             'group': ''
         }
     }
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission, 0)], []
     )
 def test_repeat(self):
     table_configuration = TableConfiguration(
         path=[PathNode(name="form", is_repeat=False), PathNode(name="repeat1", is_repeat=True)],
         columns=[
             ExportColumn(
                 item=ScalarItem(
                     path=[
                         PathNode(name="form"),
                         PathNode(name="repeat1", is_repeat=True),
                         PathNode(name="q1")
                     ],
                 ),
                 selected=True,
             ),
         ]
     )
     submission = {
         'domain': 'my-domain',
         '_id': '1234',
         'form': {
             'repeat1': [
                 {'q1': 'foo'},
                 {'q1': 'bar'}
             ]
         }
     }
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission, 0)],
         [ExportRow(['foo']).data, ExportRow(['bar']).data]
     )
示例#6
0
 def test_simple(self):
     table_configuration = TableConfiguration(
         path=[],
         columns=[
             ExportColumn(
                 item=ScalarItem(
                     path=[PathNode(name='form'),
                           PathNode(name='q3')], ),
                 selected=True,
             ),
             ExportColumn(
                 item=ScalarItem(
                     path=[PathNode(name='form'),
                           PathNode(name='q1')], ),
                 selected=True,
             ),
             ExportColumn(
                 item=ScalarItem(
                     path=[PathNode(name='form'),
                           PathNode(name='q2')], ),
                 selected=False,
             ),
         ])
     submission = {
         'domain': 'my-domain',
         '_id': '1234',
         "form": {
             "q1": "foo",
             "q2": "bar",
             "q3": "baz"
         }
     }
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission, 0)],
         [['baz', 'foo']])
示例#7
0
 def test_empty_group(self):
     table_configuration = TableConfiguration(
         path=[
             PathNode(name="form", is_repeat=False),
             PathNode(name="group", is_repeat=False),
             PathNode(name="repeat1", is_repeat=True)
         ],
         columns=[
             ExportColumn(
                 item=ScalarItem(
                     path=[
                         PathNode(name="form"),
                         PathNode(name="group"),
                         PathNode(name="repeat1", is_repeat=True),
                         PathNode(name="q1")
                     ],
                 ),
                 selected=True,
             ),
         ]
     )
     submission = {
         'domain': 'my-domain',
         '_id': '1234',
         'form': {
             'group': ''
         }
     }
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission, 0)], []
     )
 def test_double_repeat(self):
     table_configuration = TableConfiguration(
         path=[
             PathNode(name="form", is_repeat=False),
             PathNode(name="repeat1", is_repeat=True),
             PathNode(name="group1", is_repeat=False),
             PathNode(name="repeat2", is_repeat=True),
         ],
         columns=[
             RowNumberColumn(
                 selected=True
             ),
             ExportColumn(
                 item=ScalarItem(
                     path=[
                         PathNode(name='form'),
                         PathNode(name='repeat1', is_repeat=True),
                         PathNode(name='group1'),
                         PathNode(name='repeat2', is_repeat=True),
                         PathNode(name='q1')
                     ],
                 ),
                 selected=True,
             ),
         ]
     )
     submission = {
         'domain': 'my-domain',
         '_id': '1234',
         'form': {
             'repeat1': [
                 {
                     'group1': {
                         'repeat2': [
                             {'q1': 'foo'},
                             {'q1': 'bar'}
                         ]
                     }
                 },
                 {
                     'group1': {
                         'repeat2': [
                             {'q1': 'beep'},
                             {'q1': 'boop'}
                         ]
                     }
                 },
             ]
         }
     }
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission, 0)],
         [
             ["0.0.0", 0, 0, 0, 'foo'],
             ["0.0.1", 0, 0, 1, 'bar'],
             ["0.1.0", 0, 1, 0, 'beep'],
             ["0.1.1", 0, 1, 1, 'boop']
         ]
     )
 def test_double_repeat(self):
     table_configuration = TableConfiguration(
         path=[
             PathNode(name="form", is_repeat=False),
             PathNode(name="repeat1", is_repeat=True),
             PathNode(name="group1", is_repeat=False),
             PathNode(name="repeat2", is_repeat=True),
         ],
         columns=[
             RowNumberColumn(
                 selected=True
             ),
             ExportColumn(
                 item=ScalarItem(
                     path=[
                         PathNode(name='form'),
                         PathNode(name='repeat1', is_repeat=True),
                         PathNode(name='group1'),
                         PathNode(name='repeat2', is_repeat=True),
                         PathNode(name='q1')
                     ],
                 ),
                 selected=True,
             ),
         ]
     )
     submission = {
         'domain': 'my-domain',
         '_id': '1234',
         'form': {
             'repeat1': [
                 {
                     'group1': {
                         'repeat2': [
                             {'q1': 'foo'},
                             {'q1': 'bar'}
                         ]
                     }
                 },
                 {
                     'group1': {
                         'repeat2': [
                             {'q1': 'beep'},
                             {'q1': 'boop'}
                         ]
                     }
                 },
             ]
         }
     }
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission, 0)],
         [
             ["0.0.0", 0, 0, 0, 'foo'],
             ["0.0.1", 0, 0, 1, 'bar'],
             ["0.1.0", 0, 1, 0, 'beep'],
             ["0.1.1", 0, 1, 1, 'boop']
         ]
     )
 def test_double_repeat(self):
     table_configuration = TableConfiguration(
         path=['form', 'repeat1', 'group1', 'repeat2'],
         columns=[
             ExportColumn(
                 item=ScalarItem(
                     path=['form', 'repeat1', 'group1', 'repeat2', 'q1'],
                 ),
                 selected=True,
             ),
         ]
     )
     submission = {
         'form': {
             'repeat1': [
                 {
                     'group1': {
                         'repeat2': [
                             {'q1': 'foo'},
                             {'q1': 'bar'}
                         ]
                     }
                 },
                 {
                     'group1': {
                         'repeat2': [
                             {'q1': 'beep'},
                             {'q1': 'boop'}
                         ]
                     }
                 },
             ]
         }
     }
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission)],
         [['foo'], ['bar'], ['beep'], ['boop']]
     )
 def test_repeat(self):
     table_configuration = TableConfiguration(
         path=['form', 'repeat1'],
         columns=[
             ExportColumn(
                 item=ScalarItem(
                     path=['form', 'repeat1', 'q1'],
                 )
             ),
         ]
     )
     submission = {
         'form': {
             'repeat1': [
                 {'q1': 'foo'},
                 {'q1': 'bar'}
             ]
         }
     }
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission)],
         [ExportRow(['foo']).data, ExportRow(['bar']).data]
     )
 def test_simple(self):
     table_configuration = TableConfiguration(
         path=[],
         columns=[
             ExportColumn(
                 item=ScalarItem(
                     path=[PathNode(name='form'), PathNode(name='q3')],
                 ),
                 selected=True,
             ),
             ExportColumn(
                 item=ScalarItem(
                     path=[PathNode(name='form'), PathNode(name='q1')],
                 ),
                 selected=True,
             ),
             ExportColumn(
                 item=ScalarItem(
                     path=[PathNode(name='form'), PathNode(name='q2')],
                 ),
                 selected=False,
             ),
         ]
     )
     submission = {
         'domain': 'my-domain',
         '_id': '1234',
         "form": {
             "q1": "foo",
             "q2": "bar",
             "q3": "baz"
         }
     }
     self.assertEqual(
         [row.data for row in table_configuration.get_rows(submission, 0)],
         [['baz', 'foo']]
     )