feat: バグ修正。テスト修正。もっとコンパクトにできるはず。
This commit is contained in:
parent
47e4801f46
commit
1a42020176
@ -196,18 +196,20 @@ class ComDrWrkplaceMapper(UltmarcTableMapper):
|
||||
def __make_update_query(self):
|
||||
make_history_query = None
|
||||
# 履歴レコード作成判断となる、UPDATE SET句を作成
|
||||
set_clauses = self.__make_update_columns_with_historical()
|
||||
set_clauses_with_historical = self.__make_update_columns_with_historical()
|
||||
# 履歴レコード作成判断とならない、UPDATE SET句
|
||||
set_clause_without_historical = []
|
||||
# DM不可フラグの値をセット
|
||||
# 履歴レコード作成判断とならないため、後から設定
|
||||
if self.record.notdm_flg != '':
|
||||
notdm_flg = None if self.record.notdm_flg == '@' else self.record.notdm_flg
|
||||
self.query_parameter['notdm_flg'] = notdm_flg
|
||||
set_clause_without_historical.append(f'notdm_flg = {"NULL" if notdm_flg is None else ":notdm_flg"}')
|
||||
# 何かしら更新がある場合、履歴作成クエリを作成
|
||||
if len(set_clauses) != 0:
|
||||
# DM不可フラグの値をセット
|
||||
# 履歴レコード作成判断とならないため、後から設定
|
||||
if self.record.notdm_flg != '':
|
||||
set_clauses.append('notdm_flg = :notdm_flg')
|
||||
self.query_parameter['notdm_flg'] = self.record.sectname if self.record.sectcode != '@' else 'NULL'
|
||||
|
||||
if len(set_clauses_with_historical) != 0:
|
||||
make_history_query = self.TO_HISTORY_QUERY
|
||||
|
||||
update_columns = ','.join(set_clauses)
|
||||
update_columns = ','.join(set_clauses_with_historical + set_clause_without_historical)
|
||||
if len(update_columns) > 0:
|
||||
# 何かしら更新がある場合、末尾にカンマを付けてSET句を完成させる
|
||||
update_columns += ','
|
||||
@ -225,20 +227,25 @@ class ComDrWrkplaceMapper(UltmarcTableMapper):
|
||||
# 役職コード
|
||||
if self.record.postcode != '':
|
||||
set_clauses.append('post_cd = :postcode')
|
||||
self.query_parameter['postcode'] = self.record.postcode if self.record.postcode != '@' else ''
|
||||
self.query_parameter['postcode'] = '' if self.record.postcode == '@' else self.record.postcode
|
||||
# 大学順位
|
||||
if self.record.identitycode != '':
|
||||
set_clauses.append('identity_cd = :identitycode')
|
||||
self.query_parameter['identitycode'] = self.record.identitycode if self.record.identitycode != '@' else ''
|
||||
self.query_parameter['identitycode'] = '' if self.record.identitycode == '@' else self.record.identitycode
|
||||
# 所属部科(集合項目)
|
||||
if self.record.sectcode != '':
|
||||
# 所属部科コード
|
||||
self.query_parameter['sectcode'] = '9999' if self.record.sectcode == '@' else self.record.sectcode
|
||||
set_clauses.append('blng_sec_cd = :sectcode')
|
||||
set_clauses.append('blng_sec_name_kana = :sectname_kana')
|
||||
set_clauses.append('blng_sec_name = :sectname')
|
||||
self.query_parameter['sectcode'] = self.record.sectcode if self.record.sectcode != '@' else '9999'
|
||||
self.query_parameter['sectname_kana'] = self.record.sectname_kana if self.record.sectcode != '@' else 'NULL'
|
||||
# 全角文字なので、全角@が連携されるパターンがある
|
||||
self.query_parameter['sectname'] = self.record.sectname if self.record.sectcode != '@' else 'NULL'
|
||||
# 所属部科(カナ)
|
||||
sectname_kana = None if self.record.sectname_kana == '@' else self.record.sectname_kana
|
||||
self.query_parameter['sectname_kana'] = sectname_kana
|
||||
set_clauses.append(f'blng_sec_name_kana = {"NULL" if sectname_kana is None else ":sectname_kana"}')
|
||||
# 所属部科(漢字)
|
||||
# 全角文字なので、修正項目として全角@が連携されるパターンがある
|
||||
sectname = None if self.record.sectname == '@' else self.record.sectname
|
||||
self.query_parameter['sectname'] = sectname
|
||||
set_clauses.append(f'blng_sec_name = {"NULL" if sectname is None else ":sectname"}')
|
||||
|
||||
# 何かしら更新がある場合、適用開始日をセットする
|
||||
if len(set_clauses) != 0:
|
||||
|
||||
@ -0,0 +1,341 @@
|
||||
from datetime import date, datetime
|
||||
|
||||
import pytest
|
||||
|
||||
from src.batch.common.batch_config import BatchConfig
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete import \
|
||||
com_dr_wrkplace_mapper
|
||||
from src.db.database import Database
|
||||
from tests.testing_utility import (assert_table_results,
|
||||
create_delete_sql_with_parameter,
|
||||
create_insert_sql_with_parameter,
|
||||
create_ultmarc_common_column_names,
|
||||
create_ultmarc_common_column_values,
|
||||
create_ultmarc_table_mapper_sut,
|
||||
create_ultmarc_test_csv, get_module_name)
|
||||
|
||||
|
||||
class TestComDrWrkplaceMapper:
|
||||
"""COM_DCF医師勤務先"""
|
||||
|
||||
db: Database
|
||||
batch_config: BatchConfig
|
||||
dr_wrkplace_table_columns = [
|
||||
"dcf_dsf_inst_cd", "dcf_pcf_dr_cd", "blng_sec_cd", "post_cd", "identity_cd",
|
||||
"aply_start_ymd", "blng_sec_name_kana", "blng_sec_name", "notdm_flg"] \
|
||||
+ create_ultmarc_common_column_names()
|
||||
# 削除日カラムはないので消す
|
||||
dr_wrkplace_table_columns.remove('delete_ymd')
|
||||
|
||||
dr_wrkplace_his_table_columns = [
|
||||
"dr_wrkplace_his_key", "dcf_dsf_inst_cd", "dcf_pcf_dr_cd", "blng_sec_cd", "post_cd", "identity_cd",
|
||||
"aply_start_ymd", "blng_sec_name_kana", "blng_sec_name", "notdm_flg", "aply_end_ymd"] \
|
||||
+ create_ultmarc_common_column_names()
|
||||
# 削除日カラムはないので消す
|
||||
dr_wrkplace_his_table_columns.remove('delete_ymd')
|
||||
|
||||
@pytest.fixture(autouse=True, scope='function')
|
||||
def pre_test(self, database: Database):
|
||||
"""テスト実行前後処理"""
|
||||
self.batch_config = BatchConfig.get_instance()
|
||||
# setup
|
||||
self.db = database
|
||||
self.db.connect()
|
||||
self.db.begin()
|
||||
|
||||
# testing
|
||||
yield
|
||||
|
||||
# teardown
|
||||
self.db.rollback()
|
||||
self.db.disconnect()
|
||||
|
||||
def test_insert_record(self, expect_datetime: datetime, expect_date_str: str):
|
||||
"""
|
||||
Cases:
|
||||
COM_DCF医師勤務先テーブルにレコードを登録する
|
||||
Arranges:
|
||||
- CSVデータを用意する
|
||||
- 追加対象となるレコードを削除する
|
||||
Expects:
|
||||
- COM_医師勤務先の登録内容が期待値と一致すること
|
||||
- COM_医師勤務先履歴にデータが登録されないこと
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_config.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
|
||||
# テストデータ作成
|
||||
csv_floating_data_lst = [
|
||||
['01', '995783', '00', '5414992', '2', '501', '', '', '', '', '1', 'A'],
|
||||
['01', '995783', '00', '5507600', '2', '133', '144', '9112', '', '', '', 'A'],
|
||||
['01', '997682', '00', '5402984', '2', '165', '144', '1512', '', '', '', 'A'],
|
||||
['01', '997682', '00', '5408060', '2', '', '144', '6802', '', '', '', 'A'],
|
||||
['01', '997682', '00', '5412977', '2', '', '144', '6720', '', '', '', 'A'],
|
||||
['01', '997906', '00', '5409446', '2', '501', '', '1118', '', '', '', 'A'],
|
||||
['01', '997906', '00', '5503358', '2', '172', '144', '1118', '', '', '', 'A'],
|
||||
['01', '997906', '00', '5504428', '2', '', '144', '7212', '', '', '', 'A'],
|
||||
['01', '997906', '00', '5507600', '2', '', '144', '9114', '内分泌・骨代謝外来', 'ナイブンピ.ホネタイシヤガイライ', '', 'A'],
|
||||
['01', '999613', '00', '5504428', '2', '', '144', '5140', '内分泌・骨代謝外来', 'ナイブンピ.ホネタイシヤガイライ', '', 'A'],
|
||||
]
|
||||
test_data_list = [
|
||||
f'"502","{data[0]}","{data[1]}",,"{data[11]}","{data[2]}","{data[3]}",,"{data[4]}","20141113","20141114","{data[5]}","{data[6]}","{data[7]}","{data[8]}","{data[9]}","{data[10]}"'
|
||||
for data in csv_floating_data_lst
|
||||
]
|
||||
test_dat_file = create_ultmarc_test_csv(test_data_list)
|
||||
# 一旦全データをDBから削除
|
||||
# COM_医師勤務先
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_wrkplace', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# COM_医師勤務先履歴
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_wrkplace_his', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
|
||||
# sut(system under test)作成
|
||||
for i, line in enumerate(test_dat_file, start=1):
|
||||
sut: com_dr_wrkplace_mapper.ComDrWrkplaceMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_dr_wrkplace_mapper.ComDrWrkplaceMapper, f'{i}行目:マッパークラスが期通りか'
|
||||
|
||||
# Act
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値作成
|
||||
# 期待値となるモジュール名
|
||||
module_name = get_module_name(com_dr_wrkplace_mapper)
|
||||
expect_data = csv_floating_data_lst[i - 1]
|
||||
|
||||
expect_row = [
|
||||
f'{expect_data[2]}{expect_data[3]}',
|
||||
f'{expect_data[0]}{expect_data[1]}',
|
||||
expect_data[7],
|
||||
expect_data[5],
|
||||
expect_data[6],
|
||||
datetime.date(expect_datetime),
|
||||
expect_data[9],
|
||||
expect_data[8],
|
||||
expect_data[10]
|
||||
]
|
||||
ultmarc_common_column_values = create_ultmarc_common_column_values(
|
||||
regist_ymd=datetime.date(expect_datetime),
|
||||
sys_regist_date=expect_datetime,
|
||||
regist_prgm_id=module_name,
|
||||
sys_update_date=expect_datetime,
|
||||
update_prgm_id=module_name
|
||||
)
|
||||
# 削除日カラムが存在しないので消す
|
||||
ultmarc_common_column_values.pop(2)
|
||||
expect_row += ultmarc_common_column_values
|
||||
|
||||
expect_rows = [{c: r for c, r in zip(self.dr_wrkplace_table_columns, expect_row)}]
|
||||
dcf_pcf_dr_cd = f'{expect_data[0]}{expect_data[1]}'
|
||||
dcf_dcf_inst_cd = f'{expect_data[2]}{expect_data[3]}'
|
||||
actual_rows = self.db.execute_select(f"SELECT * FROM src05.com_dr_wrkplace WHERE dcf_dsf_inst_cd = '{dcf_dcf_inst_cd}' AND dcf_pcf_dr_cd = '{dcf_pcf_dr_cd}'")
|
||||
|
||||
# 期待値検査
|
||||
assert_table_results(actual_rows, expect_rows, line_number=i, ignore_col_name=['sys_update_date', 'sys_regist_date'])
|
||||
|
||||
# 動的日付項目の個別確認
|
||||
for actual_row, expect_row in zip(actual_rows, expect_rows):
|
||||
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
|
||||
if actual_col_name in ['sys_regist_date', 'sys_update_date']:
|
||||
assert actual_row[actual_col_name] <= expect_row[expect_col_name], f'{i}行目:{actual_col_name}が、期待値の日時以前であること'
|
||||
|
||||
# 履歴テーブルの存在チェック
|
||||
history_table = self.db.execute_select(f"SELECT * FROM src05.com_dr_wrkplace_his WHERE dcf_dsf_inst_cd = '{dcf_dcf_inst_cd}' AND dcf_pcf_dr_cd = '{dcf_pcf_dr_cd}'")
|
||||
assert len(history_table) == 0, '履歴テーブルが作成されていないこと'
|
||||
|
||||
def test_update_record(self, expect_datetime: datetime, expect_date_str: str):
|
||||
"""
|
||||
Cases:
|
||||
COM_DCF医師勤務先テーブルのレコードを更新する
|
||||
Arranges:
|
||||
- CSVデータを用意する
|
||||
- 追加対象となるレコードを削除する
|
||||
Expects:
|
||||
- COM_医師勤務先の登録内容が期待値と一致すること
|
||||
- COM_医師勤務先履歴の登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_config.syor_date = '2020/02/23'
|
||||
# テストデータ作成
|
||||
csv_floating_data_lst = [
|
||||
['01', '997906', '00', '5409446', '2', '', '', '', '', '', '@', 'B'],
|
||||
['01', '995783', '00', '5507600', '2', '@', '802', '@', '', '', '', 'B'],
|
||||
['01', '997682', '00', '5402984', '2', '165', '@', '', '', '', '', 'B'],
|
||||
['01', '999613', '00', '5504428', '2', '501', '', '9999', '内分泌・骨代謝外来', 'ナイブンピ.ホネタイシヤガイライ', '', 'B'],
|
||||
]
|
||||
test_data_list = [
|
||||
f'"502","{data[0]}","{data[1]}",,"{data[11]}","{data[2]}","{data[3]}",,"{data[4]}","20141113","20141114","{data[5]}","{data[6]}","{data[7]}","{data[8]}","{data[9]}","{data[10]}"'
|
||||
for data in csv_floating_data_lst
|
||||
]
|
||||
test_dat_file = create_ultmarc_test_csv(test_data_list)
|
||||
# 一旦全データをDBから削除
|
||||
# COM_医師勤務先
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_wrkplace', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# COM_医師勤務先履歴
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_wrkplace_his', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
|
||||
db_floating_data_list = [
|
||||
['005414992', '01995783', '', '501', '', '2020-02-22', '', '', ''],
|
||||
['005507600', '01995783', '9112', '133', '144', '2020-02-22', 'ハツセイ.セイシヨクブモン', '発生・生殖部門', '1'],
|
||||
['005402984', '01997682', '1512', '165', '144', '2020-02-22', 'シヨウカキゲカ', '消化器外科', ''],
|
||||
['005408060', '01997682', '6802', '', '144', '2020-02-22', 'シヨウカキゲカガク1', '消化器外科学Ⅰ', ''],
|
||||
['005412977', '01997682', '6720', '', '144', '2020-02-22', 'シヨウカキゲカガク', '消化器外科学', ''],
|
||||
['005409446', '01997906', '1118', '501', '', '2020-02-22', 'ケツエキナイカ', '血液内科', '1'],
|
||||
['005503358', '01997906', '1118', '172', '144', '2020-02-22', 'ケツエキナイカ', '血液内科', ''],
|
||||
['005504428', '01997906', '7212', '', '144', '2020-02-22', 'ユケツ.サイボウチリヨウガク', '輸血・細胞治療学', ''],
|
||||
['005507600', '01997906', '9114', '', '144', '2020-02-22', 'サイボウイシヨクブモン', '細胞移植部門', ''],
|
||||
['005504428', '01999613', '5140', '', '144', '2020-02-22', 'ヤクリガク', '薬理学', '']
|
||||
]
|
||||
# モジュール名
|
||||
module_name = get_module_name(com_dr_wrkplace_mapper)
|
||||
# テスト対象のデータをDBに登録
|
||||
for row in db_floating_data_list:
|
||||
(dcf_dsf_inst_cd, dcf_pcf_dr_cd, blng_sec_cd, post_cd, identity_cd,
|
||||
aply_start_ymd, blng_sec_name_kana, blng_sec_name, not_db_flg) = row
|
||||
# DBに登録するテストデータ
|
||||
test_sql_data = [
|
||||
dcf_dsf_inst_cd, dcf_pcf_dr_cd, blng_sec_cd, post_cd, identity_cd,
|
||||
aply_start_ymd, blng_sec_name_kana, blng_sec_name, not_db_flg
|
||||
]
|
||||
common_ultmarc_values = create_ultmarc_common_column_values(
|
||||
regist_ymd=expect_date_str,
|
||||
sys_regist_date=expect_datetime,
|
||||
regist_prgm_id=module_name,
|
||||
sys_update_date=expect_datetime,
|
||||
update_prgm_id=module_name
|
||||
)
|
||||
# 削除日カラムが存在しないので消す
|
||||
common_ultmarc_values.pop(2)
|
||||
test_sql_data += common_ultmarc_values
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_dr_wrkplace',
|
||||
self.dr_wrkplace_table_columns,
|
||||
test_sql_data
|
||||
)
|
||||
self.db.execute(insert_sql, insert_parameter)
|
||||
|
||||
# 期待値データを先に作る
|
||||
# 医師勤務先
|
||||
expect_dr_wrkplace_rows = [
|
||||
['005414992', '01995783', '', '501', '', date(2020, 2, 22), '', '', ''],
|
||||
['005507600', '01995783', '9999', '', '802', date(2020, 2, 23), '', '', '1'],
|
||||
['005402984', '01997682', '1512', '165', '', date(2020, 2, 23), 'シヨウカキゲカ', '消化器外科', ''],
|
||||
['005408060', '01997682', '6802', '', '144', date(2020, 2, 22), 'シヨウカキゲカガク1', '消化器外科学Ⅰ', ''],
|
||||
['005412977', '01997682', '6720', '', '144', date(2020, 2, 22), 'シヨウカキゲカガク', '消化器外科学', ''],
|
||||
['005409446', '01997906', '1118', '501', '', date(2020, 2, 22), 'ケツエキナイカ', '血液内科', ''],
|
||||
['005503358', '01997906', '1118', '172', '144', date(2020, 2, 22), 'ケツエキナイカ', '血液内科', ''],
|
||||
['005504428', '01997906', '7212', '', '144', date(2020, 2, 22), 'ユケツ.サイボウチリヨウガク', '輸血・細胞治療学', ''],
|
||||
['005507600', '01997906', '9114', '', '144', date(2020, 2, 22), 'サイボウイシヨクブモン', '細胞移植部門', ''],
|
||||
['005504428', '01999613', '9999', '501', '144', date(2020, 2, 23), 'ナイブンピ.ホネタイシヤガイライ', '内分泌・骨代謝外来', '']
|
||||
]
|
||||
# 医師勤務先履歴
|
||||
# 更新されない行はNoneで埋める
|
||||
expect_dr_wrkplace_his_rows = [
|
||||
None,
|
||||
[1, '005507600', '01995783', '9112', '133', '144', '20200222', 'ハツセイ.セイシヨクブモン', '発生・生殖部門', '1', '20200222'],
|
||||
[1, '005402984', '01997682', '1512', '165', '144', '20200222', 'シヨウカキゲカ', '消化器外科', '', '20200222'],
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
[1, '005504428', '01999613', '5140', '999', '144', '20200222', 'ヤクリガク', '薬理学', '', '20200222']
|
||||
]
|
||||
# 更新された行を示す(1=True, 0=False)
|
||||
is_update_rows = [bool(flag) for flag in [0, 1, 1, 0, 0, 1, 0, 0, 0, 1]]
|
||||
# 履歴が登録される行を示す(1=True, 0=False)
|
||||
is_historical_rows = [bool(flag) for flag in [0, 1, 1, 0, 0, 0, 0, 0, 0, 1]]
|
||||
# sut(system under test)作成
|
||||
for line_number, line in enumerate(test_dat_file, start=1):
|
||||
sut: com_dr_wrkplace_mapper.ComDrWrkplaceMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_dr_wrkplace_mapper.ComDrWrkplaceMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
# Act
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値作成
|
||||
# 期待値となるモジュール名
|
||||
module_name = get_module_name(com_dr_wrkplace_mapper)
|
||||
for i, expect_dr_wrkplace_row in enumerate(expect_dr_wrkplace_rows, start=1):
|
||||
ultmarc_common_column_values = create_ultmarc_common_column_values(
|
||||
regist_ymd=datetime.date(expect_datetime),
|
||||
update_ymd=datetime.date(expect_datetime) if is_update_rows[i - 1] else None,
|
||||
sys_regist_date=expect_datetime,
|
||||
regist_prgm_id=module_name,
|
||||
sys_update_date=expect_datetime,
|
||||
update_prgm_id=module_name
|
||||
)
|
||||
# 削除日カラムが存在しないので消す
|
||||
ultmarc_common_column_values.pop(2)
|
||||
expect_dr_wrkplace_row += ultmarc_common_column_values
|
||||
|
||||
expect_rows = [{c: r for c, r in zip(self.dr_wrkplace_table_columns, expect_dr_wrkplace_row)}]
|
||||
dcf_dcf_inst_cd = expect_dr_wrkplace_row[0]
|
||||
dcf_pcf_dr_cd = expect_dr_wrkplace_row[1]
|
||||
actual_rows = self.db.execute_select(f"SELECT * FROM src05.com_dr_wrkplace WHERE dcf_dsf_inst_cd = '{dcf_dcf_inst_cd}' AND dcf_pcf_dr_cd = '{dcf_pcf_dr_cd}'")
|
||||
|
||||
# 期待値検査
|
||||
assert_table_results(actual_rows, expect_rows, line_number=i, ignore_col_name=['sys_update_date', 'sys_regist_date'])
|
||||
|
||||
# 動的日付項目の個別確認
|
||||
for actual_row, expect_row in zip(actual_rows, expect_rows):
|
||||
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
|
||||
actual_value = actual_row[actual_col_name]
|
||||
expect_value = expect_row[expect_col_name]
|
||||
if actual_col_name == 'sys_regist_date':
|
||||
assert actual_row[actual_col_name] == expect_row[expect_col_name], f'{i}行目:{actual_col_name}が、期待値の日時と一致すること'
|
||||
if actual_col_name == 'sys_update_date':
|
||||
# 更新されている場合
|
||||
if is_update_rows[i - 1] is True:
|
||||
assert actual_value <= expect_value, f'{i}行目:{actual_col_name}が、期待値の日時以前であること'
|
||||
else:
|
||||
assert actual_value == expect_value, f'{i}行目:{actual_col_name}が、期待値の日時と一致すること'
|
||||
|
||||
# 履歴テーブルの存在チェック
|
||||
actual_history_rows = self.db.execute_select(f"SELECT * FROM src05.com_dr_wrkplace_his WHERE dcf_dsf_inst_cd = '{dcf_dcf_inst_cd}' AND dcf_pcf_dr_cd = '{dcf_pcf_dr_cd}'")
|
||||
# 履歴作成対象かどうか
|
||||
if is_historical_rows[i - 1] is False:
|
||||
assert len(actual_history_rows) == 0, '履歴テーブルが作成されていないこと'
|
||||
else:
|
||||
# 件数確認
|
||||
assert len(actual_history_rows) == 1, '履歴テーブルが作成されていること'
|
||||
|
||||
# 期待値作成
|
||||
expect_history_row = expect_dr_wrkplace_his_rows[i - 1]
|
||||
# アルトマーク共通カラムを追加
|
||||
ultmarc_common_column_values = create_ultmarc_common_column_values(
|
||||
regist_ymd=expect_date_str,
|
||||
sys_regist_date=expect_datetime,
|
||||
regist_prgm_id=module_name,
|
||||
sys_update_date=expect_datetime,
|
||||
update_prgm_id=module_name
|
||||
)
|
||||
# 削除日カラムが存在しないので消す
|
||||
ultmarc_common_column_values.pop(2)
|
||||
# アルトマーク共通カラムを追加(事前に宣言されているものを流用する)
|
||||
expect_history_row += ultmarc_common_column_values
|
||||
# ヘッダーを追加
|
||||
expect_history_rows_with_column = [{c: r for c, r in zip(self.dr_wrkplace_his_table_columns, expect_history_row)}]
|
||||
|
||||
assert_table_results(actual_history_rows, expect_history_rows_with_column, line_number=i, ignore_col_name=['sys_update_date', 'sys_regist_date', 'dr_wrkplace_his_key'])
|
||||
|
||||
# 動的日付項目の個別確認
|
||||
for actual_row, expect_row in zip(actual_history_rows, expect_history_rows_with_column):
|
||||
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
|
||||
actual_value = actual_row[actual_col_name]
|
||||
expect_value = expect_row[expect_col_name]
|
||||
if actual_col_name == 'dr_wrkplace_his_key':
|
||||
assert actual_value >= expect_value, f'{i}行目:{actual_col_name}が、期待値の連番以上以前であること'
|
||||
if actual_col_name == 'sys_regist_date':
|
||||
assert actual_row[actual_col_name] == expect_row[expect_col_name], f'{i}行目:{actual_col_name}が、期待値の日時と一致すること'
|
||||
if actual_col_name == 'sys_update_date':
|
||||
assert actual_value <= expect_value, f'{i}行目:{actual_col_name}が、期待値の日時以前であること'
|
||||
@ -173,4 +173,6 @@ def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], line_
|
||||
if ignore_col_name is not None and actual_col_name in ignore_col_name:
|
||||
continue
|
||||
else:
|
||||
assert actual_row[actual_col_name] == expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値と一致すること'
|
||||
actual_value = actual_row[actual_col_name]
|
||||
expect_value = expect_row[expect_col_name]
|
||||
assert actual_value == expect_value, f'{line_number}行目:{actual_col_name}が、期待値と一致すること'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user