97 lines
3.2 KiB
Python
97 lines
3.2 KiB
Python
from agent.prompt_builder import PromptBuilder
|
|
from agent.models import ProgramMeta, FileInfo, CopyField
|
|
|
|
|
|
def test_build_basic_prompt():
|
|
meta = ProgramMeta(
|
|
program_id='ZAN04MAT', program_name='取消マッチング処理',
|
|
system_name='残業統計管理システム',
|
|
pgm_type='メイン', pgm_pattern='マッチング(1:1)',
|
|
summary_lines=['取消申請のマッチング'], prerequisites=[],
|
|
files=[], keys=[], modules=[],
|
|
process_detail='1.初期処理...\n2.主処理...',
|
|
output_records='### 出力ファイル1...',
|
|
input_type='file', copy_fields={}, db_tables={}
|
|
)
|
|
|
|
builder = PromptBuilder()
|
|
prompt = builder.build(
|
|
meta=meta,
|
|
rules_text='# マッチング(1:1) データ生成規則\n...',
|
|
group_descriptions=['两端不一致', '逆方向两端不一致', '中间不一致'],
|
|
group_count=3
|
|
)
|
|
|
|
assert 'ZAN04MAT' in prompt
|
|
assert 'マッチング(1:1)' in prompt
|
|
assert '1.初期処理' in prompt
|
|
assert '生成するグループ数: 3' in prompt
|
|
assert 'g1: 两端不一致' in prompt
|
|
assert 'g2: 逆方向两端不一致' in prompt
|
|
assert 'g3: 中间不一致' in prompt
|
|
assert 'JSON形式' in prompt
|
|
|
|
|
|
def test_build_with_copy_fields():
|
|
fields = {
|
|
'R01': [
|
|
CopyField(level=3, name='R01-APPL-ID', raw_name='(A)APPL-ID',
|
|
pic_type='X(008)', pic_bytes=8),
|
|
CopyField(level=3, name='R01-EMP-ID', raw_name='(A)EMP-ID',
|
|
pic_type='9(008)', pic_bytes=8),
|
|
]
|
|
}
|
|
|
|
meta = ProgramMeta(
|
|
program_id='TEST', program_name='', system_name='',
|
|
pgm_type='メイン', pgm_pattern='マッチング(1:1)',
|
|
summary_lines=[], prerequisites=[],
|
|
files=[
|
|
FileInfo(no=1, file_db_name='INPUT-FILE', identifier='R01',
|
|
dd_name='TESTR01', io='I', copy_group='TESTREC',
|
|
format='FB', record_len=80, medium='PS', remarks='')
|
|
],
|
|
keys=[], modules=[],
|
|
process_detail='', output_records='',
|
|
input_type='file', copy_fields=fields, db_tables={}
|
|
)
|
|
|
|
builder = PromptBuilder()
|
|
prompt = builder.build(
|
|
meta=meta,
|
|
rules_text='# 規則',
|
|
group_descriptions=['テスト'],
|
|
group_count=1
|
|
)
|
|
|
|
assert 'R01-APPL-ID' in prompt
|
|
assert 'X(008)' in prompt
|
|
assert 'R01-EMP-ID' in prompt
|
|
|
|
|
|
def test_build_db_prompt():
|
|
meta = ProgramMeta(
|
|
program_id='TESTDB', program_name='DB更新', system_name='',
|
|
pgm_type='メイン', pgm_pattern='DB更新',
|
|
summary_lines=[], prerequisites=[],
|
|
files=[
|
|
FileInfo(no=1, file_db_name='DB-TABLE', identifier='DB',
|
|
dd_name='', io='I', copy_group='',
|
|
format='', record_len=0, medium='DB', remarks='')
|
|
],
|
|
keys=[], modules=[],
|
|
process_detail='', output_records='',
|
|
input_type='db', copy_fields={}, db_tables={}
|
|
)
|
|
|
|
builder = PromptBuilder()
|
|
prompt = builder.build(
|
|
meta=meta,
|
|
rules_text='# DB更新規則',
|
|
group_descriptions=['テスト'],
|
|
group_count=1
|
|
)
|
|
|
|
assert 'DB' in prompt or 'SQL' in prompt
|
|
assert 'INSERT' in prompt
|