def test_generate_from_form_schema(self): with tempfile.NamedTemporaryFile(mode='wb', suffix='.xlsx') as tmp: generate_from_form_export_instance(self.export_instance, tmp) wb = load_workbook(filename=tmp.name) ws = wb.worksheets[0] all_data = list(ws.values) headings = all_data.pop(0) data_by_headings = [dict(zip(headings, row)) for row in all_data] id_row = data_by_headings.pop(0) self.assertEqual('id', id_row['Source Field']) self.assertEqual('id', id_row['Field']) domain_row = data_by_headings.pop(0) self.assertEqual('domain', domain_row['Source Field']) self.assertEqual('domain', domain_row['Field']) main_table = self.export_instance.selected_tables[0] self.assertEqual(len(main_table.selected_columns), len(data_by_headings)) # basic sanity check for i, input_column in enumerate(main_table.selected_columns): self.assertEqual(input_column.label, data_by_headings[i]['Field']) self.assertEqual(FormDETSchemaHelper.transform_path(input_column.item.readable_path), data_by_headings[i]['Source Field']) # test individual fields / types data_by_headings_by_field = { row['Field']: row for row in data_by_headings } self.assertEqual('form.@xmlns', data_by_headings_by_field['@xmlns']['Source Field']) data_by_headings_by_source_field = { row['Source Field']: row for row in data_by_headings } self.assertEqual('str2date', data_by_headings_by_source_field['received_on']['Map Via']) self.assertEqual('str2date', data_by_headings_by_source_field['form.event_date']['Map Via']) self.assertEqual('str2num', data_by_headings_by_source_field['form.event_duration_minutes']['Map Via'])
def test_empty(self): old_tables = self.export_instance.tables def _cleanup(): self.export_instance.tables = old_tables self.addCleanup(_cleanup) self.export_instance.tables = [] with self.assertRaises(DETConfigError): generate_from_form_export_instance(self.export_instance, BytesIO())
def test_main_table_not_selected(self): self.export_instance.tables[0].selected = False with tempfile.NamedTemporaryFile(mode='wb', suffix='.xlsx') as tmp: generate_from_form_export_instance(self.export_instance, tmp) wb = load_workbook(filename=tmp.name) self.assertEqual(1, len(wb.worksheets)) repeat_ws = wb.worksheets[0] self._check_repeat_worksheet(repeat_ws) # restore self.export_instance changes made in this test self.export_instance.tables[0].selected = True
def test_generate_from_form_schema(self): with tempfile.NamedTemporaryFile(mode='wb', suffix='.xlsx') as tmp: generate_from_form_export_instance(self.export_instance, tmp) wb = load_workbook(filename=tmp.name) repeat_ws = wb.worksheets[1] self._check_repeat_worksheet(repeat_ws)