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_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']])
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']] )