def test_output_generator_csv_02(self, opml_filename, output_filename, json_dns_file, row, col, expected_result): """ Creates csv file from outline using JSON data node specifier. :param opml_filename: :param output_filename: :param row: :param col: :param expected_result: :return: """ test_data_file = os.path.join(input_files_root, "output_generator", opml_filename) test_csv_output_path = os.path.join(output_files_root, "output_generator", output_filename) data_node_descriptor_file = os.path.join(input_files_root, "data_node_descriptor", json_dns_file) outline = Outline.from_opml(test_data_file) unleashed_outline = UnleashedOutline( outline, default_text_tag_delimiter=['[*', '*]']) data_nodes = unleashed_outline.extract_data_nodes() data_node_name = data_nodes[0]['data_node_name'] self.assertEqual('data_node_01', data_node_name) data_node_list_index = data_nodes[0]['data_node_list_index'] data_node = unleashed_outline.list_unleashed_nodes( )[data_node_list_index].node() data_node_descriptor = DataNodeSpecifier.from_json_file( data_node_descriptor_file) data_table = data_node_descriptor.extract_data_node_dispatch(data_node) CsvOutputGenerator.create_csv_file(data_table, test_csv_output_path) result_checker = CsvTestChecker(test_csv_output_path) self.assertTrue(result_checker.check(row, col, expected_result))
def main(): num_arguments = len(sys.argv) expected_num_arguments = 3 # Note command line arguments will be one more as filename is first opml_path = "" json_path = "" csv_path = "" if num_arguments == 1: # Temporary hack to allow debugging. No parameters supplied --> use test files. print("Debug mode - hard coded arguments for command line") opml_path = "tests/test_resources/opml_data_extraction_test_01.opml" json_path = "tests/test_resources/custom_json_test_descriptors_risk_01.json" csv_path = "tests/test_resources/output_files/opml_data_extraction_test_01.csv" elif num_arguments != expected_num_arguments + 1: print(f"Wrong number of arguments ({num_arguments - 1} (should be {expected_num_arguments})") else: opml_path = sys.argv[1] json_path = sys.argv[2] csv_path = sys.argv[3] outline = Outline.from_opml(opml_path) print("Successfully read outline, unleashing...") unleashed_outline = UnleashedOutline(outline) data_nodes = unleashed_outline.extract_data_nodes() print(f"Outline is unleashed, there are {len(data_nodes)} data nodes in this outline") for index, node in enumerate(data_nodes): print(f"{index}: {node['data_node_name']}") print("Processing first node") data_node_list_index = data_nodes[0]['data_node_list_index'] data_node = unleashed_outline.list_unleashed_nodes()[data_node_list_index].node() data_node_specifier = DataNodeSpecifier.from_json_file(json_path) extracted_data_table = data_node_specifier.extract_data_node_dispatch(data_node) CsvOutputGenerator.create_csv_file(extracted_data_table, csv_path)