# tests/test_markdown_utils.py from agent.markdown_utils import extract_section, parse_table_rows, parse_table_from_section, find_row_by_key SAMPLE_MD = """ ## 基本情報 | # | 項目 | 内容 | |---|------|------| | 1 | システム名 | 残業統計管理システム | | 4 | PGMパターン | マッチング(1:1) | | 5 | 機能概要 | 取消マッチング処理 | ## 使用ファイル一覧 | NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 媒体 | 備考 | |----|------------------|--------|------|-----|--------|------|------| | 1 | OVT-SORTED | R01 | ZAN04R01 | I | ZAN01REC | PS | | | 2 | ERROR-LOG | W01 | ZAN04W01 | O | ZAN05REC | PS | | ## 出力レコード定義 ### 出力ファイル1(W01/OVT-MATCHED) | No | 項目名 | 設定元 | 備考 | |----|--------|--------|------| | 1 | APPL-ID | R01.APPL-ID | | | 2 | EMP-ID | R01.EMP-ID | | """ def test_extract_section(): result = extract_section(SAMPLE_MD, "基本情報") assert "残業統計管理システム" in result assert "使用ファイル一覧" not in result def test_extract_section_not_found(): result = extract_section(SAMPLE_MD, "存在しないセクション") assert result == '' def test_parse_table_rows(): rows = parse_table_from_section(SAMPLE_MD, "基本情報") assert len(rows) >= 3 assert rows[0]['項目'] == 'システム名' def test_find_row_by_key(): rows = parse_table_from_section(SAMPLE_MD, "基本情報") row = find_row_by_key(rows, '項目', 'PGMパターン') assert row is not None assert row['内容'] == 'マッチング(1:1)' def test_parse_use_file_table(): rows = parse_table_from_section(SAMPLE_MD, "使用ファイル一覧") assert len(rows) == 2 assert rows[0]['識別子'] == 'R01' assert rows[0]['DD名'] == 'ZAN04R01' def test_extract_output_records_section(): result = extract_section(SAMPLE_MD, "出力レコード定義") assert "出力ファイル1" in result assert "W01/OVT-MATCHED" in result