feat: COM_医師勤務先の更新テスト
This commit is contained in:
parent
38cef62739
commit
58e3b7a25f
@ -206,7 +206,7 @@ class ComDrWrkplaceMapper(UltmarcTableMapper):
|
||||
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"}')
|
||||
set_clause_without_historical.append(f'notdm_flg = :notdm_flg')
|
||||
# 何かしら更新がある場合、履歴作成クエリを作成
|
||||
if len(set_clauses_with_historical) != 0:
|
||||
make_history_query = self.TO_HISTORY_QUERY
|
||||
@ -242,12 +242,12 @@ class ComDrWrkplaceMapper(UltmarcTableMapper):
|
||||
# 所属部科(カナ)
|
||||
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"}')
|
||||
set_clauses.append(f'blng_sec_name_kana = :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"}')
|
||||
set_clauses.append(f'blng_sec_name = :sectname')
|
||||
|
||||
# 何かしら更新がある場合、適用開始日をセットする
|
||||
if len(set_clauses) != 0:
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
"502","01","997906","","B","00","5409446","","","20170906","20170910","","","","","","@"
|
||||
"502","01","995783","","B","00","5507600","","","20170907","20170910","@","802","@","","",""
|
||||
"502","01","997682","","B","00","5402984","","","20141113","20141114","165","@","","","",""
|
||||
"502","01","999613","","B","00","5504428","","2","20170328","20170401","501","","9999","内分泌・骨代謝外来","ナイブンピ.ホネタイシヤガイライ",""
|
||||
|
@ -0,0 +1,11 @@
|
||||
"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","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"005414992","01995783",,"501",,"2020-02-22",,,,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005507600","01995783","9112","133","144","2020-02-22","ハツセイ.セイシヨクブモン","発生・生殖部門","1","2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005402984","01997682","1512","165","144","2020-02-22","シヨウカキゲカ","消化器外科",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005408060","01997682","6802",,"144","2020-02-22","シヨウカキゲカガク1","消化器外科学Ⅰ",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005412977","01997682","6720",,"144","2020-02-22","シヨウカキゲカガク","消化器外科学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005409446","01997906","1118","501",,"2020-02-22","ケツエキナイカ","血液内科","1","2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005503358","01997906","1118","172","144","2020-02-22","ケツエキナイカ","血液内科",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005504428","01997906","7212",,"144","2020-02-22","ユケツ.サイボウチリヨウガク","輸血・細胞治療学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005507600","01997906","9114",,"144","2020-02-22","サイボウイシヨクブモン","細胞移植部門",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005504428","01999613","5140",,"144","2020-02-22","ヤクリガク","薬理学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
|
@ -0,0 +1,4 @@
|
||||
"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","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"1","005507600","01995783","9112","133","144","20200222","ハツセイ.セイシヨクブモン","発生・生殖部門","1","20200222","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper"
|
||||
"2","005402984","01997682","1512","165","144","20200222","シヨウカキゲカ","消化器外科",,"20200222","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper"
|
||||
"3","005504428","01999613","5140","999","144","20200222","ヤクリガク","薬理学",,"20200222","20220203","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:43:43","com_dr_wrkplace_mapper","2022-02-03 14:43:43","com_dr_wrkplace_mapper"
|
||||
|
@ -0,0 +1,11 @@
|
||||
"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","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"005414992","01995783",,"501",,"2020-02-22",,,,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005507600","01995783","9999",,"802","2020-02-23",,,"1","2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","com_dr_wrkplace_mapper"
|
||||
"005402984","01997682","1512","165",,"2020-02-23","シヨウカキゲカ","消化器外科",,"2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","com_dr_wrkplace_mapper"
|
||||
"005408060","01997682","6802",,"144","2020-02-22","シヨウカキゲカガク1","消化器外科学Ⅰ",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005412977","01997682","6720",,"144","2020-02-22","シヨウカキゲカガク","消化器外科学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005409446","01997906","1118","501",,"2020-02-22","ケツエキナイカ","血液内科","NULL","2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","com_dr_wrkplace_mapper"
|
||||
"005503358","01997906","1118","172","144","2020-02-22","ケツエキナイカ","血液内科",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005504428","01997906","7212",,"144","2020-02-22","ユケツ.サイボウチリヨウガク","輸血・細胞治療学",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005507600","01997906","9114",,"144","2020-02-22","サイボウイシヨクブモン","細胞移植部門",,"2022-02-03","NULL","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:23:39","clsComDrWrk"
|
||||
"005504428","01999613","9999","501","144","2020-02-23","ナイブンピ.ホネタイシヤガイライ","内分泌・骨代謝外来",,"2022-02-03","2022-02-03","NULL","NULL","NULL","NULL","2022-02-03 14:23:39","clsComDrWrk","2022-02-03 14:43:43","com_dr_wrkplace_mapper"
|
||||
|
@ -21,19 +21,6 @@ class TestComDrWrkplaceMapper:
|
||||
db: Database
|
||||
batch_config: BatchConfig
|
||||
test_file_path: str = path.dirname(__file__)
|
||||
# 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):
|
||||
@ -140,5 +127,118 @@ class TestComDrWrkplaceMapper:
|
||||
for actual_row, expect_row in zip(actual_dr_data_list, expect_data_list):
|
||||
line_number += 1
|
||||
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
|
||||
if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date', 'aply_start_ymd']:
|
||||
if actual_col_name in ignore_columns:
|
||||
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
|
||||
|
||||
def test_update_record(self):
|
||||
"""
|
||||
Cases:
|
||||
COM_DCF医師勤務先テーブルのレコードを更新する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 更新対象となるレコードを登録する
|
||||
Expects:
|
||||
- COM_医師勤務先の登録内容が期待値と一致すること
|
||||
- COM_医師勤務先履歴にデータが登録されないこと
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_config.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
|
||||
# テスト用のCSVを読み込む
|
||||
test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_wrkplace_update.csv'))
|
||||
# 一旦全データを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)
|
||||
# COM_所属部科
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_blng_sec', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
|
||||
# COM_医師勤務先を登録
|
||||
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_wrkplace_before_update.csv'))
|
||||
for test_data in test_sql_data_list:
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_dr_wrkplace',
|
||||
test_data.keys(),
|
||||
test_data.values()
|
||||
)
|
||||
self.db.execute(insert_sql, insert_parameter)
|
||||
|
||||
# Act
|
||||
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}行目:マッパークラスが期通りか'
|
||||
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_dr_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_wrkplace_update.csv'))
|
||||
expect_his_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_wrkplace_his_update.csv'))
|
||||
primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_dr_data_list]
|
||||
primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_dr_data_list]
|
||||
# 複合主キーのため、1件ずつ取得して期待値を作る
|
||||
actual_dr_data_list = []
|
||||
actual_his_data_list = []
|
||||
actual_dr_select_sql = """\
|
||||
SELECT * FROM src05.com_dr_wrkplace
|
||||
WHERE
|
||||
dcf_dsf_inst_cd = :dcf_dsf_inst_cd
|
||||
AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\
|
||||
"""
|
||||
actual_his_select_sql = """\
|
||||
SELECT * FROM src05.com_dr_wrkplace_his
|
||||
WHERE
|
||||
dcf_dsf_inst_cd = :dcf_dsf_inst_cd
|
||||
AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd
|
||||
"""
|
||||
for param_dcf_dsf_inst_cd, param_dcf_pcf_dr_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_dcf_pcf_dr_cd):
|
||||
# COM_医師勤務先の取得
|
||||
actual_dr_data = self.db.execute_select(
|
||||
actual_dr_select_sql,
|
||||
{**param_dcf_dsf_inst_cd, **param_dcf_pcf_dr_cd})
|
||||
assert len(actual_dr_data) == 1, '1件取得できていること'
|
||||
actual_dr_data_list.append(actual_dr_data[0])
|
||||
|
||||
# COM_医師勤務先履歴の取得
|
||||
# 取得できないこと
|
||||
actual_his_data = self.db.execute_select(
|
||||
actual_his_select_sql,
|
||||
{**param_dcf_dsf_inst_cd, **param_dcf_pcf_dr_cd})
|
||||
if len(actual_his_data) != 0:
|
||||
actual_his_data_list.append(actual_his_data[0])
|
||||
|
||||
assert len(actual_his_data_list) == len(expect_his_data_list), '履歴が期待値通りの件数作成されていること'
|
||||
# 期待値検査
|
||||
# COM_医師勤務先
|
||||
dr_ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_ymd', 'sys_update_date', 'sys_regist_date', 'aply_start_ymd']
|
||||
assert_table_results(actual_dr_data_list, expect_dr_data_list, ignore_col_name=dr_ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_dr_data_list, expect_dr_data_list):
|
||||
line_number += 1
|
||||
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
|
||||
if actual_col_name in dr_ignore_columns:
|
||||
if expect_row[expect_col_name] is None:
|
||||
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
|
||||
else:
|
||||
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
|
||||
|
||||
# COM_医師勤務先履歴
|
||||
his_ignore_columns = ['dr_wrkplace_his_key', 'regist_ymd', 'update_ymd', 'aply_end_ymd', 'sys_update_date', 'sys_regist_date', 'aply_start_ymd']
|
||||
assert_table_results(actual_his_data_list, expect_his_data_list, ignore_col_name=his_ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_dr_data_list, expect_dr_data_list):
|
||||
line_number += 1
|
||||
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
|
||||
if actual_col_name in his_ignore_columns:
|
||||
if expect_row[expect_col_name] is None:
|
||||
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
|
||||
else:
|
||||
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user