66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
# 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
|