Merge branch 'develop' into feature-NEWDWH2021-1011-PHYSICAL_DELETE
This commit is contained in:
commit
a0bc3accee
@ -0,0 +1,166 @@
|
||||
from src.batch.batch_functions import logging_sql
|
||||
from src.batch.common.batch_context import BatchContext
|
||||
from src.db.database import Database
|
||||
from src.error.exceptions import BatchOperationException
|
||||
from src.logging.get_logger import get_logger
|
||||
from src.time.elapsed_time import ElapsedTime
|
||||
|
||||
batch_context = BatchContext.get_instance()
|
||||
logger = get_logger('DCF施設統合マスタ作成')
|
||||
|
||||
|
||||
def exec():
|
||||
"""DCF施設統合マスタ作成"""
|
||||
|
||||
# アルトマーク取込が行われていない場合は処理をスキップする
|
||||
if not batch_context.is_ultmarc_imported:
|
||||
logger.info('アルトマーク取込が行われていないため、DCF施設統合マスタ作成処理をスキップします。')
|
||||
return
|
||||
|
||||
db = Database.get_instance()
|
||||
try:
|
||||
db.connect()
|
||||
db.begin()
|
||||
logger.debug('DCF施設統合マスタ作成処理開始')
|
||||
# COM施設からDCF施設統合マスタに登録
|
||||
(is_add_dcf_inst_merge, duplication_inst_records) = _insert_dcf_inst_merge_from_com_inst(db)
|
||||
# DCF施設統合マスタ追加のログを出力する
|
||||
if is_add_dcf_inst_merge:
|
||||
logger.info('[NOTICE]DCF施設統合マスタが追加されました。')
|
||||
_output_add_dcf_inst_merge_log(duplication_inst_records)
|
||||
logger.debug('DCF施設統合マスタ作成処理終了')
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
raise BatchOperationException(e)
|
||||
finally:
|
||||
db.disconnect()
|
||||
|
||||
|
||||
def _insert_dcf_inst_merge_from_com_inst(db: Database) -> tuple[bool, list[dict]]:
|
||||
# com_instからdcf_inst_mergeにinsert
|
||||
# 重複コードがあるデータを取得する(処理日~システム日付を対象)
|
||||
try:
|
||||
sql = """
|
||||
SELECT
|
||||
ci.dcf_dsf_inst_cd AS dcf_dsf_inst_cd,
|
||||
ci.form_inst_name_kanji AS form_inst_name_kanji,
|
||||
ci.dup_opp_cd AS dup_opp_cd,
|
||||
(
|
||||
SELECT
|
||||
dupci.form_inst_name_kanji
|
||||
FROM
|
||||
src05.com_inst AS dupci
|
||||
WHERE
|
||||
dupci.dcf_dsf_inst_cd = ci.dup_opp_cd
|
||||
) AS dup_inst_name_kanji,
|
||||
DATE_FORMAT((src05.get_syor_date() + INTERVAL 1 MONTH), '%Y%m') AS sys_update_date
|
||||
FROM
|
||||
src05.com_inst AS ci
|
||||
WHERE
|
||||
CHAR_LENGTH(ci.dup_opp_cd) > 0
|
||||
AND ci.delete_sche_reason_cd = 'D'
|
||||
AND ci.abolish_ymd IS NULL
|
||||
AND ci.sys_update_date BETWEEN src05.get_syor_date() AND SYSDATE()
|
||||
AND NOT EXISTS (
|
||||
SELECT
|
||||
dim.dcf_inst_cd
|
||||
FROM
|
||||
src05.dcf_inst_merge AS dim
|
||||
WHERE
|
||||
dim.dcf_inst_cd = ci.dcf_dsf_inst_cd
|
||||
)
|
||||
AND (
|
||||
EXISTS (
|
||||
SELECT
|
||||
eci.inst_cd
|
||||
FROM
|
||||
src05.emp_chg_inst AS eci
|
||||
WHERE
|
||||
eci.inst_cd = ci.dcf_dsf_inst_cd
|
||||
)
|
||||
OR (
|
||||
SELECT
|
||||
sl.inst_cd
|
||||
FROM
|
||||
src05.sales_lau AS sl
|
||||
WHERE
|
||||
sl.inst_cd = ci.dcf_dsf_inst_cd
|
||||
)
|
||||
)
|
||||
"""
|
||||
duplication_inst_records = db.execute_select(sql)
|
||||
logging_sql(logger, sql)
|
||||
logger.info('施設統合対象データの取得に成功')
|
||||
except Exception as e:
|
||||
logger.debug('施設統合対象データの取得に失敗')
|
||||
raise e
|
||||
|
||||
if len(duplication_inst_records) == 0:
|
||||
logger.info('施設統合対象データはありません')
|
||||
return (False, None)
|
||||
|
||||
# DCF施設統合マスタ追加
|
||||
values_clauses = []
|
||||
params = {}
|
||||
for clauses_no, row in enumerate(duplication_inst_records, start=1):
|
||||
dcf_inst_cd_arr = f'dcf_inst_cd{clauses_no}'
|
||||
dup_opp_cd_arr = f'dup_opp_cd{clauses_no}'
|
||||
tekiyo_month_arr = f'tekiyo_month{clauses_no}'
|
||||
values_clause = f'(:{dcf_inst_cd_arr}, :{dup_opp_cd_arr}, :{tekiyo_month_arr}, "Y", CURRENT_USER(), SYSDATE(), CURRENT_USER(), SYSDATE())'
|
||||
values_clauses.append(values_clause)
|
||||
params[dcf_inst_cd_arr] = row['dcf_dsf_inst_cd']
|
||||
params[dup_opp_cd_arr] = row['dup_opp_cd']
|
||||
params[tekiyo_month_arr] = row['sys_update_date']
|
||||
|
||||
insert_sql = f"""
|
||||
INSERT INTO
|
||||
src05.dcf_inst_merge (
|
||||
dcf_inst_cd,
|
||||
dup_opp_cd,
|
||||
tekiyo_month,
|
||||
enabled_flg,
|
||||
creater,
|
||||
create_date,
|
||||
updater,
|
||||
update_date
|
||||
) VALUES
|
||||
{','.join(values_clauses)}
|
||||
"""
|
||||
|
||||
try:
|
||||
elapsed_time = ElapsedTime()
|
||||
res = db.execute(insert_sql, params)
|
||||
logging_sql(logger, insert_sql)
|
||||
db.commit()
|
||||
logger.info(f'COM施設からDCF施設統合マスタに登録成功, {res.rowcount} 行更新 ({elapsed_time.of})')
|
||||
except Exception as e:
|
||||
logger.debug('COM施設からDCF施設統合マスタの登録に失敗')
|
||||
raise e
|
||||
|
||||
return (True, duplication_inst_records)
|
||||
|
||||
|
||||
def _output_add_dcf_inst_merge_log(duplication_inst_records: list[dict]):
|
||||
sys_update_date = duplication_inst_records[0]['sys_update_date']
|
||||
set_year_month = '{set_year}年{set_month}月'.format(
|
||||
set_year=sys_update_date[0:4],
|
||||
set_month=sys_update_date[-2:]
|
||||
)
|
||||
|
||||
add_dct_inst_merge = 'DCF施設コード {dcf_dsf_inst_cd} {form_inst_name_kanji}, 重複時相手先コード {dup_opp_cd} {dup_inst_name_kanji}'
|
||||
add_dct_inst_merge_list = []
|
||||
for row in duplication_inst_records:
|
||||
add_dct_inst_merge_list.append(add_dct_inst_merge.format(**row))
|
||||
add_dct_inst_merge_list = '\n'.join(add_dct_inst_merge_list)
|
||||
|
||||
# 顧客報告用にログ出力
|
||||
logger.info(
|
||||
f"""DCF施設統合マスタが追加されました。
|
||||
**********************************************************
|
||||
適用月度 {set_year_month}
|
||||
**********************************************************
|
||||
{add_dct_inst_merge_list}
|
||||
**********************************************************
|
||||
合計 {len(duplication_inst_records)}件"""
|
||||
)
|
||||
return
|
||||
@ -1,15 +0,0 @@
|
||||
from src.batch.common.batch_context import BatchContext
|
||||
from src.logging.get_logger import get_logger
|
||||
|
||||
batch_context = BatchContext.get_instance()
|
||||
logger = get_logger('DCF施設統合マスタ作成')
|
||||
|
||||
|
||||
def exec():
|
||||
"""DCF施設統合マスタ作成"""
|
||||
|
||||
# アルトマーク取込が行われていない場合は処理をスキップする
|
||||
if not batch_context.is_ultmarc_imported:
|
||||
logger.info('アルトマーク取込が行われていないため、DCF施設統合マスタ作成処理をスキップします。')
|
||||
|
||||
pass
|
||||
@ -0,0 +1,105 @@
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
|
||||
UltmarcTableMapper
|
||||
from src.batch.ultmarc.utmp_tables.tables.com_blng_sec import ComBlngSec
|
||||
|
||||
|
||||
class ComBlngSecMapper(UltmarcTableMapper):
|
||||
"""レイアウト区分008: COM_所属部科 登録処理"""
|
||||
|
||||
# レコード存在確認SQL
|
||||
RECORD_EXISTS_QUERY = """\
|
||||
SELECT
|
||||
COUNT(*) AS count_num
|
||||
FROM
|
||||
src05.com_blng_sec
|
||||
WHERE
|
||||
blng_sec_cd = :blng_sec_cd
|
||||
"""
|
||||
# データ登録用SQL
|
||||
INSERT_QUERY = """\
|
||||
INSERT INTO src05.com_blng_sec
|
||||
(
|
||||
blng_sec_cd,
|
||||
blng_sec_kana,
|
||||
blng_sec_name,
|
||||
inst_category,
|
||||
trt_category,
|
||||
category_sort,
|
||||
regist_ymd,
|
||||
sys_regist_date,
|
||||
regist_prgm_id,
|
||||
sys_update_date,
|
||||
update_prgm_id
|
||||
)
|
||||
VALUES (
|
||||
:blng_sec_cd,
|
||||
:blng_sec_kana,
|
||||
:blng_sec_name,
|
||||
:inst_category,
|
||||
:trt_category,
|
||||
:category_sort,
|
||||
:execute_date_str_ymd,
|
||||
:execute_datetime,
|
||||
:program_name,
|
||||
:execute_datetime,
|
||||
:program_name
|
||||
)
|
||||
"""
|
||||
|
||||
# 変更用SQL
|
||||
UPDATE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_blng_sec
|
||||
SET
|
||||
blng_sec_kana = :blng_sec_kana,
|
||||
blng_sec_name = :blng_sec_name,
|
||||
inst_category = :inst_category,
|
||||
trt_category = :trt_category,
|
||||
category_sort = :category_sort,
|
||||
update_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_datetime,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
blng_sec_cd = :blng_sec_cd
|
||||
"""
|
||||
|
||||
# 修正区分が「C(削除)」の場合の更新SQL
|
||||
LOGICAL_DELETE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_blng_sec
|
||||
SET
|
||||
delete_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_date_str_ymd,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
blng_sec_cd = :blng_sec_cd
|
||||
"""
|
||||
record: ComBlngSec
|
||||
|
||||
def __init__(self, record: list[str], db) -> None:
|
||||
super().__init__(record, db, ComBlngSec)
|
||||
program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている)
|
||||
# モジュール名をクエリパラメータに設定
|
||||
self.query_parameter['program_name'] = program_name
|
||||
# 読み込んだレコード値もクエリパラメータに追加
|
||||
self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()}
|
||||
|
||||
def make_query(self):
|
||||
# 修正区分がC(削除)の場合、論理削除
|
||||
if self.record.maint_flag == 'C':
|
||||
self.queries.append(self.LOGICAL_DELETE_QUERY)
|
||||
return
|
||||
|
||||
# 追加、更新の場合
|
||||
self.queries.append(self.__make_upsert_query())
|
||||
return
|
||||
|
||||
def __make_upsert_query(self):
|
||||
# レコードの存在確認
|
||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||
# 存在しない場合はInsert
|
||||
if record_count[0]['count_num'] == 0:
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 存在する場合ではUpdate
|
||||
return self.UPDATE_QUERY
|
||||
@ -80,17 +80,16 @@ class ComForfrontMedEquipMapper(UltmarcTableMapper):
|
||||
self.queries.append(self.LOGICAL_DELETE_QUERY)
|
||||
return
|
||||
|
||||
# 追加、更新の場合
|
||||
self.queries.append(self.__make_upsert_query())
|
||||
return
|
||||
|
||||
def __make_upsert_query(self):
|
||||
# レコードの存在確認
|
||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||
# 存在しない場合はInsert
|
||||
if record_count[0]['count_num'] == 0:
|
||||
self.queries.append(self.INSERT_QUERY)
|
||||
return
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 更新の場合
|
||||
if self.record.hi_medicmach_name != '':
|
||||
self.queries.append(self.UPDATE_QUERY)
|
||||
return
|
||||
else:
|
||||
self.queries.append(None)
|
||||
return
|
||||
# 存在する場合はUpdate
|
||||
return self.UPDATE_QUERY
|
||||
|
||||
@ -40,6 +40,7 @@ class ComHamtecMapper(UltmarcTableMapper):
|
||||
)
|
||||
"""
|
||||
|
||||
# 更新用SQL
|
||||
UPDATE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_hamtec
|
||||
@ -92,8 +93,4 @@ class ComHamtecMapper(UltmarcTableMapper):
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 存在する場合はUpdate
|
||||
# 更新データがある場合のみ更新
|
||||
if self.record.hamtec_div != '' or self.record.hamtec_name != '':
|
||||
return self.UPDATE_QUERY
|
||||
else:
|
||||
return None
|
||||
return self.UPDATE_QUERY
|
||||
|
||||
@ -0,0 +1,93 @@
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
|
||||
UltmarcTableMapper
|
||||
from src.batch.ultmarc.utmp_tables.tables.com_inst_div import ComInstDiv
|
||||
|
||||
|
||||
class ComInstDivMapper(UltmarcTableMapper):
|
||||
"""レイアウト区分011: COM_施設区分 登録処理"""
|
||||
|
||||
# レコード存在確認SQL
|
||||
RECORD_EXISTS_QUERY = """\
|
||||
SELECT
|
||||
COUNT(*) AS count_num
|
||||
FROM
|
||||
src05.com_inst_div
|
||||
WHERE
|
||||
inst_div_cd = :inst_div_cd
|
||||
"""
|
||||
# データ登録用SQL
|
||||
INSERT_QUERY = """\
|
||||
INSERT INTO src05.com_inst_div
|
||||
(
|
||||
inst_div_cd,
|
||||
inst_div_name,
|
||||
regist_ymd,
|
||||
sys_regist_date,
|
||||
regist_prgm_id,
|
||||
sys_update_date,
|
||||
update_prgm_id
|
||||
)
|
||||
VALUES (
|
||||
:inst_div_cd,
|
||||
:inst_div_name,
|
||||
:execute_date_str_ymd,
|
||||
:execute_datetime,
|
||||
:program_name,
|
||||
:execute_datetime,
|
||||
:program_name
|
||||
)
|
||||
"""
|
||||
|
||||
# 変更用SQL
|
||||
UPDATE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_inst_div
|
||||
SET
|
||||
inst_div_name = :inst_div_name,
|
||||
update_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_datetime,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
inst_div_cd = :inst_div_cd
|
||||
"""
|
||||
|
||||
# 修正区分が「C(削除)」の場合の更新SQL
|
||||
LOGICAL_DELETE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_inst_div
|
||||
SET
|
||||
delete_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_date_str_ymd,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
inst_div_cd = :inst_div_cd
|
||||
"""
|
||||
record: ComInstDiv
|
||||
|
||||
def __init__(self, record: list[str], db) -> None:
|
||||
super().__init__(record, db, ComInstDiv)
|
||||
program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている)
|
||||
# モジュール名をクエリパラメータに設定
|
||||
self.query_parameter['program_name'] = program_name
|
||||
# 読み込んだレコード値もクエリパラメータに追加
|
||||
self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()}
|
||||
|
||||
def make_query(self):
|
||||
# 修正区分がC(削除)の場合、論理削除
|
||||
if self.record.maint_flag == 'C':
|
||||
self.queries.append(self.LOGICAL_DELETE_QUERY)
|
||||
return
|
||||
|
||||
# 追加、更新の場合
|
||||
self.queries.append(self.__make_upsert_query())
|
||||
return
|
||||
|
||||
def __make_upsert_query(self):
|
||||
# レコードの存在確認
|
||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||
# 存在しない場合はInsert
|
||||
if record_count[0]['count_num'] == 0:
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 存在する場合ではUpdate
|
||||
return self.UPDATE_QUERY
|
||||
@ -0,0 +1,94 @@
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
|
||||
UltmarcTableMapper
|
||||
from src.batch.ultmarc.utmp_tables.tables.com_manage import ComManage
|
||||
|
||||
|
||||
class ComManageMapper(UltmarcTableMapper):
|
||||
"""レイアウト区分007: COM_経営体 登録処理"""
|
||||
|
||||
# レコード存在確認SQL
|
||||
RECORD_EXISTS_QUERY = """\
|
||||
SELECT
|
||||
COUNT(*) AS count_num
|
||||
FROM
|
||||
src05.com_manage
|
||||
WHERE
|
||||
manage_cd = :manage_cd
|
||||
"""
|
||||
# データ登録用SQL
|
||||
INSERT_QUERY = """\
|
||||
INSERT INTO src05.com_manage
|
||||
(
|
||||
manage_cd,
|
||||
manage_name,
|
||||
regist_ymd,
|
||||
sys_regist_date,
|
||||
regist_prgm_id,
|
||||
sys_update_date,
|
||||
update_prgm_id
|
||||
)
|
||||
VALUES (
|
||||
:manage_cd,
|
||||
:manage_name,
|
||||
:execute_date_str_ymd,
|
||||
:execute_datetime,
|
||||
:program_name,
|
||||
:execute_datetime,
|
||||
:program_name
|
||||
)
|
||||
"""
|
||||
|
||||
# 更新用SQL
|
||||
UPDATE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_manage
|
||||
SET
|
||||
manage_name = :manage_name,
|
||||
update_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_datetime,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
manage_cd = :manage_cd
|
||||
"""
|
||||
|
||||
# 修正区分が「C(削除)」の場合の更新SQL
|
||||
LOGICAL_DELETE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_manage
|
||||
SET
|
||||
delete_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_date_str_ymd,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
manage_cd = :manage_cd
|
||||
"""
|
||||
|
||||
record: ComManage
|
||||
|
||||
def __init__(self, record: list[str], db) -> None:
|
||||
super().__init__(record, db, ComManage)
|
||||
program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている)
|
||||
# モジュール名をクエリパラメータに設定
|
||||
self.query_parameter['program_name'] = program_name
|
||||
# 読み込んだレコード値もクエリパラメータに追加
|
||||
self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()}
|
||||
|
||||
def make_query(self):
|
||||
# 修正区分がC(削除)の場合、論理削除
|
||||
if self.record.maint_flag == 'C':
|
||||
self.queries.append(self.LOGICAL_DELETE_QUERY)
|
||||
return
|
||||
|
||||
# 追加、更新の場合
|
||||
self.queries.append(self.__make_upsert_query())
|
||||
return
|
||||
|
||||
def __make_upsert_query(self):
|
||||
# レコードの存在確認
|
||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||
# 存在しない場合はInsert
|
||||
if record_count[0]['count_num'] == 0:
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 存在する場合ではUpdate
|
||||
return self.UPDATE_QUERY
|
||||
@ -93,8 +93,5 @@ class ComMedFuncValuationMapper(UltmarcTableMapper):
|
||||
if record_count[0]['count_num'] == 0:
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# med_func_valuation_nameが空で無い場合はUpdate
|
||||
if len(self.record.med_func_valuation_name) == 0:
|
||||
return None
|
||||
else:
|
||||
return self.UPDATE_QUERY
|
||||
# 存在する場合はUpdate
|
||||
return self.UPDATE_QUERY
|
||||
|
||||
@ -40,6 +40,7 @@ class ComNurseAssrtMapper(UltmarcTableMapper):
|
||||
)
|
||||
"""
|
||||
|
||||
# 更新用SQL
|
||||
UPDATE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_nurse_assrt
|
||||
@ -90,9 +91,5 @@ class ComNurseAssrtMapper(UltmarcTableMapper):
|
||||
if record_count[0]['count_num'] == 0:
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 更新する項目が無い場合
|
||||
if self.record.nurse_assrt_name == '':
|
||||
return None
|
||||
else:
|
||||
# 更新する項目がある場合はUpdate
|
||||
return self.UPDATE_QUERY
|
||||
# 存在する場合はupdate
|
||||
return self.UPDATE_QUERY
|
||||
|
||||
@ -138,27 +138,29 @@ class ComPharmMapper(UltmarcTableMapper):
|
||||
self.queries.append(self.LOGICAL_DELETE_QUERY)
|
||||
return
|
||||
|
||||
# 追加、更新の場合
|
||||
self.queries.append(self.__make_upsert_query())
|
||||
return
|
||||
|
||||
def __make_upsert_query(self):
|
||||
# レコードの存在確認
|
||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||
# 存在しない場合はInsert
|
||||
if record_count[0]['count_num'] == 0:
|
||||
self.queries.append(self.INSERT_QUERY)
|
||||
return
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 更新の場合
|
||||
update_columns = ','.join(self.__make_update_query())
|
||||
# 何も更新項目が無い場合はNoneとする(更新処理は行わない)
|
||||
if len(update_columns) == 0:
|
||||
self.queries.append(None)
|
||||
return
|
||||
return None
|
||||
else:
|
||||
# 末尾にカンマを付けてSET句を完成させる
|
||||
update_columns += ','
|
||||
update_query = self.UPDATE_QUERY.format(
|
||||
update_columns=update_columns
|
||||
)
|
||||
self.queries.append(update_query)
|
||||
return
|
||||
return update_query
|
||||
|
||||
def __make_update_query(self):
|
||||
set_clauses = [] # 設定項目
|
||||
|
||||
@ -81,17 +81,16 @@ class ComPolicyMedMapper(UltmarcTableMapper):
|
||||
self.queries.append(self.LOGICAL_DELETE_QUERY)
|
||||
return
|
||||
|
||||
# 追加、更新の場合
|
||||
self.queries.append(self.__make_upsert_query())
|
||||
return
|
||||
|
||||
def __make_upsert_query(self):
|
||||
# レコードの存在確認
|
||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||
# 存在しない場合はInsert
|
||||
if record_count[0]['count_num'] == 0:
|
||||
self.queries.append(self.INSERT_QUERY)
|
||||
return
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 更新の場合
|
||||
if self.record.field_name != '':
|
||||
self.queries.append(self.UPDATE_QUERY)
|
||||
return
|
||||
else:
|
||||
self.queries.append(None)
|
||||
return
|
||||
# 存在する場合はUpdate
|
||||
return self.UPDATE_QUERY
|
||||
|
||||
@ -0,0 +1,92 @@
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
|
||||
UltmarcTableMapper
|
||||
from src.batch.ultmarc.utmp_tables.tables.com_post import ComPost
|
||||
|
||||
|
||||
class ComPostMapper(UltmarcTableMapper):
|
||||
"""レイアウト区分005: COM_役職 登録処理"""
|
||||
|
||||
# レコード存在確認SQL
|
||||
RECORD_EXISTS_QUERY = """\
|
||||
SELECT
|
||||
COUNT(*) AS count_num
|
||||
FROM
|
||||
src05.com_post
|
||||
WHERE
|
||||
post_cd = :post_cd
|
||||
"""
|
||||
# データ登録用SQL
|
||||
INSERT_QUERY = """\
|
||||
INSERT INTO src05.com_post
|
||||
(
|
||||
post_cd,
|
||||
form_post_name,
|
||||
regist_ymd,
|
||||
sys_regist_date,
|
||||
regist_prgm_id,
|
||||
sys_update_date,
|
||||
update_prgm_id
|
||||
)
|
||||
VALUES (
|
||||
:post_cd,
|
||||
:form_post_name,
|
||||
:execute_date_str_ymd,
|
||||
:execute_datetime,
|
||||
:program_name,
|
||||
:execute_datetime,
|
||||
:program_name
|
||||
)
|
||||
"""
|
||||
|
||||
UPDATE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_post
|
||||
SET
|
||||
form_post_name = :form_post_name,
|
||||
update_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_datetime,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
post_cd = :post_cd
|
||||
"""
|
||||
|
||||
# 修正区分が「C(削除)」の場合の更新SQL
|
||||
LOGICAL_DELETE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_post
|
||||
SET
|
||||
delete_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_date_str_ymd,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
post_cd = :post_cd
|
||||
"""
|
||||
record: ComPost
|
||||
|
||||
def __init__(self, record: list[str], db) -> None:
|
||||
super().__init__(record, db, ComPost)
|
||||
program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている)
|
||||
# モジュール名をクエリパラメータに設定
|
||||
self.query_parameter['program_name'] = program_name
|
||||
# 読み込んだレコード値もクエリパラメータに追加
|
||||
self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()}
|
||||
|
||||
def make_query(self):
|
||||
# 修正区分がC(削除)の場合、論理削除
|
||||
if self.record.maint_flag == 'C':
|
||||
self.queries.append(self.LOGICAL_DELETE_QUERY)
|
||||
return
|
||||
|
||||
# 追加、更新の場合
|
||||
self.queries.append(self.__make_upsert_query())
|
||||
return
|
||||
|
||||
def __make_upsert_query(self):
|
||||
# レコードの存在確認
|
||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||
# 存在しない場合はInsert
|
||||
if record_count[0]['count_num'] == 0:
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 存在する場合ではUpdate
|
||||
return self.UPDATE_QUERY
|
||||
@ -40,6 +40,7 @@ class ComRegnCriticPassMapper(UltmarcTableMapper):
|
||||
)
|
||||
"""
|
||||
|
||||
# 更新用SQL
|
||||
UPDATE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_regn_critic_pass
|
||||
@ -91,7 +92,4 @@ class ComRegnCriticPassMapper(UltmarcTableMapper):
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 存在する場合はUpdate
|
||||
if len(self.record.disease_name_kanji) == 0:
|
||||
return None
|
||||
else:
|
||||
return self.UPDATE_QUERY
|
||||
return self.UPDATE_QUERY
|
||||
|
||||
@ -38,6 +38,7 @@ class ComRehabiliMapper(UltmarcTableMapper):
|
||||
)
|
||||
"""
|
||||
|
||||
# 更新用SQL
|
||||
UPDATE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_rehabili
|
||||
@ -89,8 +90,5 @@ class ComRehabiliMapper(UltmarcTableMapper):
|
||||
if record_count[0]['count_num'] == 0:
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 存在する場合ではUpdate
|
||||
if self.record.rehabili_name == '':
|
||||
return None
|
||||
else:
|
||||
return self.UPDATE_QUERY
|
||||
# 存在する場合はUpdate
|
||||
return self.UPDATE_QUERY
|
||||
|
||||
@ -0,0 +1,93 @@
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
|
||||
UltmarcTableMapper
|
||||
from src.batch.ultmarc.utmp_tables.tables.com_sosiety import ComSosiety
|
||||
|
||||
|
||||
class ComSosietyMapper(UltmarcTableMapper):
|
||||
"""レイアウト区分009: COM_学会 登録処理"""
|
||||
|
||||
# レコード存在確認SQL
|
||||
RECORD_EXISTS_QUERY = """\
|
||||
SELECT
|
||||
COUNT(*) AS count_num
|
||||
FROM
|
||||
src05.com_sosiety
|
||||
WHERE
|
||||
sosiety_cd = :sosiety_cd
|
||||
"""
|
||||
# データ登録用SQL
|
||||
INSERT_QUERY = """\
|
||||
INSERT INTO src05.com_sosiety
|
||||
(
|
||||
sosiety_cd,
|
||||
sosiety_name,
|
||||
regist_ymd,
|
||||
sys_regist_date,
|
||||
regist_prgm_id,
|
||||
sys_update_date,
|
||||
update_prgm_id
|
||||
)
|
||||
VALUES (
|
||||
:sosiety_cd,
|
||||
:sosiety_name,
|
||||
:execute_date_str_ymd,
|
||||
:execute_datetime,
|
||||
:program_name,
|
||||
:execute_datetime,
|
||||
:program_name
|
||||
)
|
||||
"""
|
||||
|
||||
# 変更用SQL
|
||||
UPDATE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_sosiety
|
||||
SET
|
||||
sosiety_name = :sosiety_name,
|
||||
update_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_datetime,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
sosiety_cd = :sosiety_cd
|
||||
"""
|
||||
|
||||
# 修正区分が「C(削除)」の場合の更新SQL
|
||||
LOGICAL_DELETE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_sosiety
|
||||
SET
|
||||
delete_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_date_str_ymd,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
sosiety_cd = :sosiety_cd
|
||||
"""
|
||||
record: ComSosiety
|
||||
|
||||
def __init__(self, record: list[str], db) -> None:
|
||||
super().__init__(record, db, ComSosiety)
|
||||
program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている)
|
||||
# モジュール名をクエリパラメータに設定
|
||||
self.query_parameter['program_name'] = program_name
|
||||
# 読み込んだレコード値もクエリパラメータに追加
|
||||
self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()}
|
||||
|
||||
def make_query(self):
|
||||
# 修正区分がC(削除)の場合、論理削除
|
||||
if self.record.maint_flag == 'C':
|
||||
self.queries.append(self.LOGICAL_DELETE_QUERY)
|
||||
return
|
||||
|
||||
# 追加、更新の場合
|
||||
self.queries.append(self.__make_upsert_query())
|
||||
return
|
||||
|
||||
def __make_upsert_query(self):
|
||||
# レコードの存在確認
|
||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||
# 存在しない場合はInsert
|
||||
if record_count[0]['count_num'] == 0:
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 存在する場合ではUpdate
|
||||
return self.UPDATE_QUERY
|
||||
@ -0,0 +1,93 @@
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
|
||||
UltmarcTableMapper
|
||||
from src.batch.ultmarc.utmp_tables.tables.com_specialst_license import ComSpecialstLicense
|
||||
|
||||
|
||||
class ComSpecialstLicenseMapper(UltmarcTableMapper):
|
||||
"""レイアウト区分010: COM_専門医資格 登録処理"""
|
||||
|
||||
# レコード存在確認SQL
|
||||
RECORD_EXISTS_QUERY = """\
|
||||
SELECT
|
||||
COUNT(*) AS count_num
|
||||
FROM
|
||||
src05.com_specialst_license
|
||||
WHERE
|
||||
specialst_cd = :specialst_cd
|
||||
"""
|
||||
# データ登録用SQL
|
||||
INSERT_QUERY = """\
|
||||
INSERT INTO src05.com_specialst_license
|
||||
(
|
||||
specialst_cd,
|
||||
specialst_licens_name,
|
||||
regist_ymd,
|
||||
sys_regist_date,
|
||||
regist_prgm_id,
|
||||
sys_update_date,
|
||||
update_prgm_id
|
||||
)
|
||||
VALUES (
|
||||
:specialst_cd,
|
||||
:specialst_licens_name,
|
||||
:execute_date_str_ymd,
|
||||
:execute_datetime,
|
||||
:program_name,
|
||||
:execute_datetime,
|
||||
:program_name
|
||||
)
|
||||
"""
|
||||
|
||||
# 変更用SQL
|
||||
UPDATE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_specialst_license
|
||||
SET
|
||||
specialst_licens_name = :specialst_licens_name,
|
||||
update_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_datetime,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
specialst_cd = :specialst_cd
|
||||
"""
|
||||
|
||||
# 修正区分が「C(削除)」の場合の更新SQL
|
||||
LOGICAL_DELETE_QUERY = """\
|
||||
UPDATE
|
||||
src05.com_specialst_license
|
||||
SET
|
||||
delete_ymd = :execute_date_str_ymd,
|
||||
sys_update_date = :execute_date_str_ymd,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
specialst_cd = :specialst_cd
|
||||
"""
|
||||
record: ComSpecialstLicense
|
||||
|
||||
def __init__(self, record: list[str], db) -> None:
|
||||
super().__init__(record, db, ComSpecialstLicense)
|
||||
program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている)
|
||||
# モジュール名をクエリパラメータに設定
|
||||
self.query_parameter['program_name'] = program_name
|
||||
# 読み込んだレコード値もクエリパラメータに追加
|
||||
self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()}
|
||||
|
||||
def make_query(self):
|
||||
# 修正区分がC(削除)の場合、論理削除
|
||||
if self.record.maint_flag == 'C':
|
||||
self.queries.append(self.LOGICAL_DELETE_QUERY)
|
||||
return
|
||||
|
||||
# 追加、更新の場合
|
||||
self.queries.append(self.__make_upsert_query())
|
||||
return
|
||||
|
||||
def __make_upsert_query(self):
|
||||
# レコードの存在確認
|
||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||
# 存在しない場合はInsert
|
||||
if record_count[0]['count_num'] == 0:
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 存在する場合ではUpdate
|
||||
return self.UPDATE_QUERY
|
||||
@ -0,0 +1,96 @@
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
|
||||
UltmarcTableMapper
|
||||
from src.batch.ultmarc.utmp_tables.tables.mst_prefc import MstPrefc
|
||||
|
||||
|
||||
class MstPrefcMapper(UltmarcTableMapper):
|
||||
"""レイアウト区分006: 都道府県マスタ 登録処理"""
|
||||
|
||||
# レコード存在確認SQL
|
||||
RECORD_EXISTS_QUERY = """\
|
||||
SELECT
|
||||
COUNT(*) AS count_num
|
||||
FROM
|
||||
src05.mst_prefc
|
||||
WHERE
|
||||
prefc_cd = :prefc_cd
|
||||
"""
|
||||
|
||||
# データ登録用SQL
|
||||
INSERT_QUERY = """\
|
||||
INSERT INTO src05.mst_prefc
|
||||
(
|
||||
prefc_cd,
|
||||
prefc_name,
|
||||
prefc_name_kana,
|
||||
delete_flg,
|
||||
sys_regist_date,
|
||||
regist_prgm_id,
|
||||
sys_update_date,
|
||||
update_prgm_id
|
||||
)
|
||||
VALUES (
|
||||
:prefc_cd,
|
||||
:prefc_name,
|
||||
'',
|
||||
'0',
|
||||
:execute_datetime,
|
||||
:program_name,
|
||||
:execute_datetime,
|
||||
:program_name
|
||||
)
|
||||
"""
|
||||
|
||||
# 更新用SQL
|
||||
UPDATE_QUERY = """\
|
||||
UPDATE
|
||||
src05.mst_prefc
|
||||
SET
|
||||
prefc_name = :prefc_name,
|
||||
delete_flg = '0',
|
||||
sys_update_date = :execute_datetime,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
prefc_cd = :prefc_cd
|
||||
"""
|
||||
|
||||
# 修正区分が「C(削除)」の場合の更新SQL
|
||||
LOGICAL_DELETE_QUERY = """\
|
||||
UPDATE
|
||||
src05.mst_prefc
|
||||
SET
|
||||
delete_flg = '1',
|
||||
sys_update_date = :execute_date_str_ymd,
|
||||
update_prgm_id = :program_name
|
||||
WHERE
|
||||
prefc_cd = :prefc_cd
|
||||
"""
|
||||
record: MstPrefc
|
||||
|
||||
def __init__(self, record: list[str], db) -> None:
|
||||
super().__init__(record, db, MstPrefc)
|
||||
program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている)
|
||||
# モジュール名をクエリパラメータに設定
|
||||
self.query_parameter['program_name'] = program_name
|
||||
# 読み込んだレコード値もクエリパラメータに追加
|
||||
self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()}
|
||||
|
||||
def make_query(self):
|
||||
# 修正区分がC(削除)の場合、論理削除
|
||||
if self.record.maint_flag == 'C':
|
||||
self.queries.append(self.LOGICAL_DELETE_QUERY)
|
||||
return
|
||||
|
||||
# 追加、更新の場合
|
||||
self.queries.append(self.__make_upsert_query())
|
||||
return
|
||||
|
||||
def __make_upsert_query(self):
|
||||
# レコードの存在確認
|
||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||
# 存在しない場合はInsert
|
||||
if record_count[0]['count_num'] == 0:
|
||||
return self.INSERT_QUERY
|
||||
|
||||
# 存在する場合ではUpdate
|
||||
return self.UPDATE_QUERY
|
||||
@ -0,0 +1,22 @@
|
||||
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
|
||||
|
||||
|
||||
class ComBlngSec(UltmarcTable):
|
||||
"""レイアウト区分008: COM_所属部科"""
|
||||
blng_sec_cd: str # 所属部科コード
|
||||
blng_sec_kana: str # 所属部科カナ
|
||||
blng_sec_name: str # 所属部科名
|
||||
inst_category: str # 分類補助コード(施設分類)
|
||||
trt_category: str # 分類補助コード(診療分野分類)
|
||||
category_sort: str # 分類補助コード(ソートコード)
|
||||
maint_flag: str # 修正区分
|
||||
|
||||
def __init__(self, record: list[str]):
|
||||
super().__init__(record)
|
||||
self.blng_sec_cd = record[1]
|
||||
self.maint_flag = record[2]
|
||||
self.blng_sec_name = record[5]
|
||||
self.blng_sec_kana = record[6]
|
||||
self.inst_category = record[7]
|
||||
self.trt_category = record[8]
|
||||
self.category_sort = record[9]
|
||||
@ -0,0 +1,14 @@
|
||||
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
|
||||
|
||||
|
||||
class ComInstDiv(UltmarcTable):
|
||||
"""レイアウト区分011: COM_施設区分"""
|
||||
inst_div_cd: str # 施設区分コード
|
||||
inst_div_name: str # 施設区分名称
|
||||
maint_flag: str # 修正区分
|
||||
|
||||
def __init__(self, record: list[str]):
|
||||
super().__init__(record)
|
||||
self.inst_div_cd = record[1]
|
||||
self.maint_flag = record[2]
|
||||
self.inst_div_name = record[5]
|
||||
@ -0,0 +1,14 @@
|
||||
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
|
||||
|
||||
|
||||
class ComManage(UltmarcTable):
|
||||
"""レイアウト区分007: COM_経営体"""
|
||||
manage_cd: str # 経営体コード
|
||||
manage_name: str # 経営体名
|
||||
maint_flag: str # 修正区分
|
||||
|
||||
def __init__(self, record: list[str]):
|
||||
super().__init__(record)
|
||||
self.manage_cd = record[1]
|
||||
self.maint_flag = record[2]
|
||||
self.manage_name = record[5]
|
||||
@ -0,0 +1,14 @@
|
||||
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
|
||||
|
||||
|
||||
class ComPost(UltmarcTable):
|
||||
"""レイアウト区分005: COM_役職"""
|
||||
post_cd: str # 役職コード
|
||||
form_post_name: str # 正式役職名
|
||||
maint_flag: str # 修正区分
|
||||
|
||||
def __init__(self, record: list[str]):
|
||||
super().__init__(record)
|
||||
self.post_cd = record[1]
|
||||
self.maint_flag = record[2]
|
||||
self.form_post_name = record[5]
|
||||
@ -0,0 +1,14 @@
|
||||
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
|
||||
|
||||
|
||||
class ComSosiety(UltmarcTable):
|
||||
"""レイアウト区分009: COM_学会"""
|
||||
sosiety_cd: str # 学会コード
|
||||
sosiety_name: str # 学会名
|
||||
maint_flag: str # 修正区分
|
||||
|
||||
def __init__(self, record: list[str]):
|
||||
super().__init__(record)
|
||||
self.sosiety_cd = record[1]
|
||||
self.maint_flag = record[2]
|
||||
self.sosiety_name = record[5]
|
||||
@ -0,0 +1,14 @@
|
||||
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
|
||||
|
||||
|
||||
class ComSpecialstLicense(UltmarcTable):
|
||||
"""レイアウト区分010: COM_専門医資格"""
|
||||
specialst_cd: str # 専門医コード
|
||||
specialst_licens_name: str # 専門医資格名
|
||||
maint_flag: str # 修正区分
|
||||
|
||||
def __init__(self, record: list[str]):
|
||||
super().__init__(record)
|
||||
self.specialst_cd = record[1]
|
||||
self.maint_flag = record[2]
|
||||
self.specialst_licens_name = record[5]
|
||||
@ -0,0 +1,14 @@
|
||||
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
|
||||
|
||||
|
||||
class MstPrefc(UltmarcTable):
|
||||
"""レイアウト区分006: 都道府県マスタ"""
|
||||
prefc_cd: str # 都道府県コード
|
||||
prefc_name: str # 都道府県名称
|
||||
maint_flag: str # 修正区分
|
||||
|
||||
def __init__(self, record: list[str]):
|
||||
super().__init__(record)
|
||||
self.maint_flag = record[2]
|
||||
self.prefc_name = record[5]
|
||||
self.prefc_cd = record[6]
|
||||
@ -58,8 +58,20 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_snd_med_sphe_mapper
|
||||
ComSndMedSpheMapper
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_area_city_mapper import \
|
||||
ComMedAreaCityMapper
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \
|
||||
NullMapper
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_post_mapper import \
|
||||
ComPostMapper
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_manage_mapper import \
|
||||
ComManageMapper
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.mst_prefc_mapper import \
|
||||
MstPrefcMapper
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_blng_sec_mapper import \
|
||||
ComBlngSecMapper
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_sosiety_mapper import \
|
||||
ComSosietyMapper
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_specialst_license_mapper import \
|
||||
ComSpecialstLicenseMapper
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_inst_div_mapper import \
|
||||
ComInstDivMapper
|
||||
|
||||
# テーブルとのマッピング
|
||||
COM_TABLE_LIST = {
|
||||
@ -99,19 +111,19 @@ COM_TABLE_LIST = {
|
||||
# COM_出身校
|
||||
"004": ComAlmaMapper,
|
||||
# COM_役職
|
||||
"005": NullMapper,
|
||||
"005": ComPostMapper,
|
||||
# 都道府県マスタ
|
||||
"006": NullMapper,
|
||||
"006": MstPrefcMapper,
|
||||
# COM_経営体
|
||||
"007": NullMapper,
|
||||
"007": ComManageMapper,
|
||||
# COM_所属部科
|
||||
"008": NullMapper,
|
||||
"008": ComBlngSecMapper,
|
||||
# COM_学会
|
||||
"009": NullMapper,
|
||||
"009": ComSosietyMapper,
|
||||
# COM_専門医資格
|
||||
"010": NullMapper,
|
||||
"010": ComSpecialstLicenseMapper,
|
||||
# COM_施設区分
|
||||
"011": NullMapper,
|
||||
"011": ComInstDivMapper,
|
||||
# COM_高度先進医療
|
||||
"021": ComHamtecMapper,
|
||||
# COM_先端医療機器
|
||||
|
||||
@ -7,7 +7,8 @@ from src.batch.batch_functions import (
|
||||
update_batch_processing_flag_in_processing)
|
||||
from src.batch.common.batch_context import BatchContext
|
||||
from src.batch.common.calendar_file import CalendarFile
|
||||
from src.batch.laundering import create_dcf_inst_merge, mst_inst_laundering
|
||||
from src.batch.dcf_inst_merge import create_dcf_inst_merge
|
||||
from src.batch.laundering import mst_inst_laundering
|
||||
from src.batch.ultmarc import ultmarc_process
|
||||
from src.error.exceptions import BatchOperationException
|
||||
from src.logging.get_logger import get_logger
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
"008","0067","A","20141113","20141114","","シヨウカキナイカ.ケツエキナイカ","1","A02","117"
|
||||
"008","0068","A","20141113","20141114","緩和内科","カンワ","1","A79","030"
|
||||
"008","0069","A","20141113","20141114","小児外科、成育外科、小腸移植外科","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","2","L81","010"
|
||||
"008","0070","C","20141113","20141114","腎臓・血液透析科","ジンゾウ.ケツエキトウセキカ","1","A08","052"
|
||||
"008","0071","A","20141113","20141114","糖尿病内分泌・甲状腺科","トウニヨウビヨウナイブンピ.コウジヨウセンカ","1","A06","020"
|
||||
"008","0072","A","20141113","20141114","血液・膠原病科","ケツエキ.コウゲンビヨウカ","1","A05","137"
|
||||
"008","0073","A","20141113","20141114","内科(内分泌・代謝)","ナイカ(ナイブンピ.タイシヤ)","1","A05","144"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"008","0067","A","20141113","20141114","消化器内科・血液内科","シヨウカキナイカ.ケツエキナイカ","1","A02","117"
|
||||
"008","0068","A","20141113","20141114","緩和内科","カンワナイカ","1","A79","030"
|
||||
"008","0069","A","20141113","20141114","小児外科、成育外科、小腸移植外科","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","1","L81","010"
|
||||
"008","0070","A","20141113","20141114","腎臓・血液透析科","ジンゾウ.ケツエキトウセキカ","1","A07","052"
|
||||
"008","0071","A","20141113","20141114","糖尿病内分泌・甲状腺科","トウニヨウビヨウナイブンピ.コウジヨウセンカ","1","A06","019"
|
||||
"008","0072","A","20141113","20141114","血液・膠原病科","ケツエキ.コウゲンビヨウカ","1","A05","137"
|
||||
"008","9999","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオアイウエオアイウエオアイウエオアイウ","9","999","999"
|
||||
|
@ -0,0 +1,6 @@
|
||||
"008","0067","A","20141113","20141114","","シヨウカキナイカ.ケツエキナイカ","1","A02","117"
|
||||
"008","0068","A","20141113","20141114","緩和内科","カンワ","1","A79","030"
|
||||
"008","0069","A","20141113","20141114","小児外科、成育外科、小腸移植外科","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","2","L81","010"
|
||||
"008","0070","A","20141113","20141114","腎臓・血液透析科","ジンゾウ.ケツエキトウセキカ","1","A08","052"
|
||||
"008","0071","A","20141113","20141114","糖尿病内分泌・甲状腺科","トウニヨウビヨウナイブンピ.コウジヨウセンカ","1","A06","020"
|
||||
"008","0072","A","20141113","20141114","血液・膠原病科","ケツエキ.コウゲンビヨウカ","1","A05","137"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"0067","シヨウカキナイカ.ケツエキナイカ","","20171024","20171024","NULL","1","A02","117","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec"
|
||||
"0068","カンワ","緩和内科","20171024","20171024","NULL","1","A79","030","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec"
|
||||
"0069","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","小児外科、成育外科、小腸移植外科","20171024","20171024","NULL","2","L81","010","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec"
|
||||
"0070","ジンゾウ.ケツエキトウセキカ","腎臓・血液透析科","20171024","20171024","NULL","1","A08","052","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec"
|
||||
"0071","トウニヨウビヨウナイブンピ.コウジヨウセンカ","糖尿病内分泌・甲状腺科","20171024","20171024","NULL","1","A06","020","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec"
|
||||
"0072","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","20171024","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:59:43","clsComBlngSec"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"0067","シヨウカキナイカ.ケツエキナイカ","消化器内科・血液内科","20171024","NULL","NULL","1","A02","117","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec"
|
||||
"0068","カンワナイカ","緩和内科","20171024","NULL","NULL","1","A79","030","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec"
|
||||
"0069","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","小児外科、成育外科、小腸移植外科","20171024","NULL","NULL","1","L81","010","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec"
|
||||
"0070","ジンゾウ.ケツエキトウセキカ","腎臓・血液透析科","20171024","NULL","NULL","1","A07","052","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec"
|
||||
"0071","トウニヨウビヨウナイブンピ.コウジヨウセンカ","糖尿病内分泌・甲状腺科","20171024","NULL","NULL","1","A06","019","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec"
|
||||
"0072","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","NULL","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec"
|
||||
"9999","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","NULL","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"0067","シヨウカキナイカ.ケツエキナイカ","","20171024","20230515","NULL","1","A02","117","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper"
|
||||
"0068","カンワ","緩和内科","20171024","20230515","NULL","1","A79","030","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper"
|
||||
"0069","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","小児外科、成育外科、小腸移植外科","20171024","20230515","NULL","2","L81","010","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper"
|
||||
"0070","ジンゾウ.ケツエキトウセキカ","腎臓・血液透析科","20171024","20171024","20230515","1","A08","052","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper"
|
||||
"0071","トウニヨウビヨウナイブンピ.コウジヨウセンカ","糖尿病内分泌・甲状腺科","20171024","20230515","NULL","1","A06","020","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper"
|
||||
"0072","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","20230515","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 11:10:31","com_blng_sec_mapper"
|
||||
"0073","ナイカ(ナイブンピ.タイシヤ)","内科(内分泌・代謝)","20230515","NULL","NULL","1","A05","144","NULL","NULL","NULL","NULL","2023/05/15 11:10:31","com_blng_sec_mapper","2023/05/15 11:10:31","com_blng_sec_mapper"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"0067","シヨウカキナイカ.ケツエキナイカ","消化器内科・血液内科","20230515","NULL","NULL","1","A02","117","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper"
|
||||
"0068","カンワナイカ","緩和内科","20230515","NULL","NULL","1","A79","030","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper"
|
||||
"0069","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","小児外科、成育外科、小腸移植外科","20230515","NULL","NULL","1","L81","010","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper"
|
||||
"0070","ジンゾウ.ケツエキトウセキカ","腎臓・血液透析科","20230515","NULL","NULL","1","A07","052","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper"
|
||||
"0071","トウニヨウビヨウナイブンピ.コウジヨウセンカ","糖尿病内分泌・甲状腺科","20230515","NULL","NULL","1","A06","019","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper"
|
||||
"0072","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20230515","NULL","NULL","1","A05","137","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper"
|
||||
"9999","アイウエオアイウエオアイウエオアイウエオアイウ","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","9","999","999","NULL","NULL","NULL","NULL","2023/05/15 10:49:50","com_blng_sec_mapper","2023/05/15 10:49:50","com_blng_sec_mapper"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"blng_sec_cd","blng_sec_kana","blng_sec_name","regist_ymd","update_ymd","delete_ymd","inst_category","trt_category","category_sort","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"0067","シヨウカキナイカ.ケツエキナイカ","","20171024","20230515","NULL","1","A02","117","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper"
|
||||
"0068","カンワ","緩和内科","20171024","20230515","NULL","1","A79","030","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper"
|
||||
"0069","シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ","小児外科、成育外科、小腸移植外科","20171024","20230515","NULL","2","L81","010","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper"
|
||||
"0070","ジンゾウ.ケツエキトウセキカ","腎臓・血液透析科","20171024","20230515","NULL","1","A08","052","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper"
|
||||
"0071","トウニヨウビヨウナイブンピ.コウジヨウセンカ","糖尿病内分泌・甲状腺科","20171024","20230515","NULL","1","A06","020","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper"
|
||||
"0072","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","20230515","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2023/05/15 10:59:43","com_blng_sec_mapper"
|
||||
"9999","ケツエキ.コウゲンビヨウカ","血液・膠原病科","20171024","NULL","NULL","1","A05","137","NULL","NULL","NULL","NULL","2017/10/24 10:49:50","clsComBlngSec","2017/10/24 10:49:50","clsComBlngSec"
|
||||
|
@ -0,0 +1,197 @@
|
||||
import os.path as path
|
||||
from datetime import datetime
|
||||
|
||||
import pytest
|
||||
|
||||
from src.batch.common.batch_context import BatchContext
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_blng_sec_mapper
|
||||
from src.db.database import Database
|
||||
from tests.testing_utility import (assert_table_results,
|
||||
create_db_data_from_csv,
|
||||
create_delete_sql_with_parameter,
|
||||
create_insert_sql_with_parameter,
|
||||
create_ultmarc_table_mapper_sut,
|
||||
create_ultmarc_test_data_from_csv)
|
||||
|
||||
|
||||
class TestComBlngSecMapper:
|
||||
"""レイアウト区分008: COM_所属部科"""
|
||||
|
||||
db: Database
|
||||
batch_context: BatchContext
|
||||
test_file_path: str = path.dirname(__file__)
|
||||
|
||||
@pytest.fixture(autouse=True, scope='function')
|
||||
def pre_test(self, database: Database):
|
||||
"""テスト実行前後処理"""
|
||||
self.batch_context = BatchContext.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):
|
||||
"""
|
||||
Cases:
|
||||
COM_所属部科テーブルにレコードを登録する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 追加対象となるレコードを削除する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_blng_sec_insert.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_blng_sec', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
|
||||
# Act
|
||||
for line_number, line in enumerate(test_dat_file, start=1):
|
||||
sut: com_blng_sec_mapper.ComBlngSecMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_blng_sec_mapper.ComBlngSecMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_blng_sec_insert.csv'))
|
||||
primary_keys = [f"'{primary_key['blng_sec_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_blng_sec WHERE blng_sec_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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_所属部科テーブルのレコードを更新する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 更新対象となるレコードを登録する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_blng_sec_update.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_blng_sec', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# テストデータをDBに登録
|
||||
# DBデータを読み込む
|
||||
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_blng_sec_before_update.csv'))
|
||||
for test_data in test_sql_data_list:
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_blng_sec',
|
||||
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_blng_sec_mapper.ComBlngSecMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_blng_sec_mapper.ComBlngSecMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_blng_sec_update.csv'))
|
||||
primary_keys = [f"'{primary_key['blng_sec_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_blng_sec WHERE blng_sec_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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}が、期待値以降であること'
|
||||
|
||||
def test_logical_delete(self):
|
||||
"""
|
||||
Cases:
|
||||
COM_所属部科テーブルのレコードを1件論理削除する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 削除対象となるレコードを登録する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_blng_sec_delete.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_blng_sec', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# テストデータをDBに登録
|
||||
# DBデータを読み込む
|
||||
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_blng_sec_before_delete.csv'))
|
||||
for test_data in test_sql_data_list:
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_blng_sec',
|
||||
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_blng_sec_mapper.ComBlngSecMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_blng_sec_mapper.ComBlngSecMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_blng_sec_delete.csv'))
|
||||
primary_keys = [f"'{primary_key['blng_sec_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_blng_sec WHERE blng_sec_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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}が、期待値以降であること'
|
||||
@ -1,5 +1,5 @@
|
||||
"forfront_med_equip_cd","forfront_med_equip_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"11","MRI","20171023","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:07:41","clsComForfrontMedEqu"
|
||||
"11","","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:07:41","com_forfront_med_equip_mapper"
|
||||
"12","X線CT","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper"
|
||||
"13","CR","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper"
|
||||
"14","血管造影システム","20171023","20171023","20230421","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:14:25","com_forfront_med_equip_mapper"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
"forfront_med_equip_cd","forfront_med_equip_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"11","MRI","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/21 10:01:26","clsComForfrontMedEqu","2017/10/23 10:07:41","com_forfront_med_equip_mapper"
|
||||
"11","","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2023/04/21 10:01:26","clsComForfrontMedEqu","2017/10/23 10:07:41","com_forfront_med_equip_mapper"
|
||||
"12","X線CT","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper"
|
||||
"13","CR","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper"
|
||||
"14","血管造影システム","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
"021","001",,"A","20141113","20141114",
|
||||
"021","001","","A","20141113","20141114",""
|
||||
"021","002","1","A","20141113","20141114","電磁波温熱療法(放射線療法と併用しないもの)"
|
||||
"021","003","2","A","20141113","20141114","微小銅線による脳血管性病変に対しての電気的凝固治療"
|
||||
"021","004","1","C","20141113","20141114","顔面骨、頭蓋骨の観血的移動術"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
"021","001",,"B","20141113","20141114",
|
||||
"021","001","","B","20141113","20141114",""
|
||||
"021","002","1","B","20141113","20141114","電磁波温熱療法(放射線療法と併用しないもの)"
|
||||
"021","003","2","B","20141113","20141114","微小銅線による脳血管性病変に対しての電気的凝固治療"
|
||||
"021","004","1","B","20141113","20141114","顔面骨、頭蓋骨の観血的移動術"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
"hamtec_cd","hamtec_div","hamtec_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"001","2","直流電流による骨電気治療法","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:03:10","clsComHamtec"
|
||||
"001",,,"20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:03:10","com_hamtec_mapper"
|
||||
"002","1","電磁波温熱療法(放射線療法と併用しないもの)","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:21:01","com_hamtec_mapper"
|
||||
"003","2","微小銅線による脳血管性病変に対しての電気的凝固治療","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:21:01","com_hamtec_mapper"
|
||||
"004","1","顔面骨、頭蓋骨の観血的移動術","20171018","20171018","20171018","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:21:01","com_hamtec_mapper"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
"hamtec_cd","hamtec_div","hamtec_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"001","2","直流電流による骨電気治療法","20171018","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:03:10","clsComHamtec"
|
||||
"001","","","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:03:10","com_hamtec_mapper"
|
||||
"002","1","電磁波温熱療法(放射線療法と併用しないもの)","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","com_hamtec_mapper"
|
||||
"003","2","微小銅線による脳血管性病変に対しての電気的凝固治療","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","com_hamtec_mapper"
|
||||
"004","1","顔面骨、頭蓋骨の観血的移動術","20171018","20171018","NULL","NULL","NULL","NULL","NULL","2017/10/18 17:03:10","clsComHamtec","2017/10/18 17:08:06","com_hamtec_mapper"
|
||||
|
||||
|
@ -0,0 +1,7 @@
|
||||
"011","01","A","20141113","20141114",""
|
||||
"011","02","A","20141113","20141114","大学附属病院"
|
||||
"011","03","A","20141113","20141114","大学附属病院分院"
|
||||
"011","04","A","20141113","20141114","歯科病院(歯学部附属病院)"
|
||||
"011","05","C","20141113","20141114","国立療養所"
|
||||
"011","06","A","20141113","20141114","高次救急医療機関"
|
||||
"011","07","A","20141113","20141114","社会福祉施設附属病院"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"011","01","A","20141113","20141114","病院(大学HP以外)"
|
||||
"011","02","A","20141113","20141114","大学附属病院"
|
||||
"011","03","A","20141113","20141114","大学附属病院分院"
|
||||
"011","04","A","20141113","20141114","歯科病院(歯学部附属病院)"
|
||||
"011","05","A","20141113","20141114","高次救急医療機関"
|
||||
"011","06","A","","","国立療養所"
|
||||
"011","99","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお"
|
||||
|
@ -0,0 +1,6 @@
|
||||
"011","01","A","20141113","20141114",""
|
||||
"011","02","A","20141113","20141114","大学附属病院"
|
||||
"011","03","A","20141113","20141114","大学附属病院分院"
|
||||
"011","04","A","20141113","20141114","歯科病院(歯学部附属病院)"
|
||||
"011","05","A","20141113","20141114","国立療養所"
|
||||
"011","06","A","20141113","20141114","高次救急医療機関"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"inst_div_cd","inst_div_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv"
|
||||
"02","大学附属病院","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv"
|
||||
"03","大学附属病院分院","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv"
|
||||
"04","歯科病院(歯学部附属病院)","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv"
|
||||
"05","国立療養所","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv"
|
||||
"06","高次救急医療機関","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:26:40","clsComInstDiv"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"inst_div_cd","inst_div_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","病院(大学HP以外)","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv"
|
||||
"02","大学附属病院","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv"
|
||||
"03","大学附属病院分院","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv"
|
||||
"04","歯科病院(歯学部附属病院)","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv"
|
||||
"05","高次救急医療機関","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv"
|
||||
"06","国立療養所","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv"
|
||||
"99","ああああ","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"inst_div_cd","inst_div_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:30:16","com_inst_div_mapper"
|
||||
"02","大学附属病院","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:30:16","com_inst_div_mapper"
|
||||
"03","大学附属病院分院","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:30:16","com_inst_div_mapper"
|
||||
"04","歯科病院(歯学部附属病院)","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:30:16","com_inst_div_mapper"
|
||||
"05","国立療養所","20171020","20171020","20230515","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:30:16","com_inst_div_mapper"
|
||||
"06","高次救急医療機関","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:30:16","com_inst_div_mapper"
|
||||
"07","社会福祉施設附属病院","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:30:16","com_inst_div_mapper","2023/05/15 17:30:16","com_inst_div_mapper"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"inst_div_cd","inst_div_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","病院(大学HP以外)","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper"
|
||||
"02","大学附属病院","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper"
|
||||
"03","大学附属病院分院","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper"
|
||||
"04","歯科病院(歯学部附属病院)","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper"
|
||||
"05","高次救急医療機関","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper"
|
||||
"06","国立療養所","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper"
|
||||
"99","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 17:17:48","com_inst_div_mapper","2023/05/15 17:17:48","com_inst_div_mapper"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"inst_div_cd","inst_div_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper"
|
||||
"02","大学附属病院","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper"
|
||||
"03","大学附属病院分院","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper"
|
||||
"04","歯科病院(歯学部附属病院)","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper"
|
||||
"05","国立療養所","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper"
|
||||
"06","高次救急医療機関","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2023/05/15 17:26:40","com_inst_div_mapper"
|
||||
"99","ああああ","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 17:17:48","clsComInstDiv","2017/10/20 17:17:48","clsComInstDiv"
|
||||
|
@ -0,0 +1,197 @@
|
||||
import os.path as path
|
||||
from datetime import datetime
|
||||
|
||||
import pytest
|
||||
|
||||
from src.batch.common.batch_context import BatchContext
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_inst_div_mapper
|
||||
from src.db.database import Database
|
||||
from tests.testing_utility import (assert_table_results,
|
||||
create_db_data_from_csv,
|
||||
create_delete_sql_with_parameter,
|
||||
create_insert_sql_with_parameter,
|
||||
create_ultmarc_table_mapper_sut,
|
||||
create_ultmarc_test_data_from_csv)
|
||||
|
||||
|
||||
class TestComInstDivMapper:
|
||||
"""レイアウト区分011: COM_施設区分"""
|
||||
|
||||
db: Database
|
||||
batch_context: BatchContext
|
||||
test_file_path: str = path.dirname(__file__)
|
||||
|
||||
@pytest.fixture(autouse=True, scope='function')
|
||||
def pre_test(self, database: Database):
|
||||
"""テスト実行前後処理"""
|
||||
self.batch_context = BatchContext.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):
|
||||
"""
|
||||
Cases:
|
||||
COM_施設区分テーブルにレコードを登録する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 追加対象となるレコードを削除する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_inst_div_insert.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_div', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
|
||||
# Act
|
||||
for line_number, line in enumerate(test_dat_file, start=1):
|
||||
sut: com_inst_div_mapper.ComInstDivMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_inst_div_mapper.ComInstDivMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_div_insert.csv'))
|
||||
primary_keys = [f"'{primary_key['inst_div_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_inst_div WHERE inst_div_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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_施設区分テーブルのレコードを更新する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 更新対象となるレコードを登録する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_inst_div_update.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_div', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# テストデータをDBに登録
|
||||
# DBデータを読み込む
|
||||
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_inst_div_before_update.csv'))
|
||||
for test_data in test_sql_data_list:
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_inst_div',
|
||||
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_inst_div_mapper.ComInstDivMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_inst_div_mapper.ComInstDivMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_div_update.csv'))
|
||||
primary_keys = [f"'{primary_key['inst_div_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_inst_div WHERE inst_div_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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}が、期待値以降であること'
|
||||
|
||||
def test_logical_delete(self):
|
||||
"""
|
||||
Cases:
|
||||
COM_施設区分テーブルのレコードを1件論理削除する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 削除対象となるレコードを登録する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_inst_div_delete.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_div', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# テストデータをDBに登録
|
||||
# DBデータを読み込む
|
||||
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_inst_div_before_delete.csv'))
|
||||
for test_data in test_sql_data_list:
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_inst_div',
|
||||
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_inst_div_mapper.ComInstDivMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_inst_div_mapper.ComInstDivMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_div_delete.csv'))
|
||||
primary_keys = [f"'{primary_key['inst_div_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_inst_div WHERE inst_div_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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}が、期待値以降であること'
|
||||
@ -0,0 +1,7 @@
|
||||
"007","101","A","20141113","20141114",""
|
||||
"007","102","C","20141113","20141114","文部"
|
||||
"007","103","A","20141113","20141114","財務"
|
||||
"007","104","A","20141113","20141114","警察"
|
||||
"007","105","A","20141113","20141114","総務"
|
||||
"007","106","A","20141113","20141114","防衛"
|
||||
"007","107","A","20141113","20141114","独法国"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"007","101","A","20141113","20141114","厚生"
|
||||
"007","102","A","20141113","20141114","文部"
|
||||
"007","103","A","20141113","20141114","財務"
|
||||
"007","104","A","20141113","20141114","総務"
|
||||
"007","105","A","20141113","20141114","警察"
|
||||
"007","106","A","20141113","20141114","防衛"
|
||||
"007","999","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお"
|
||||
|
@ -0,0 +1,6 @@
|
||||
"007","101","A","20141113","20141114",""
|
||||
"007","102","A","20141113","20141114","文部"
|
||||
"007","103","A","20141113","20141114","財務"
|
||||
"007","104","A","20141113","20141114","警察"
|
||||
"007","105","A","20141113","20141114","総務"
|
||||
"007","106","A","20141113","20141114","防衛"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"manage_cd","manage_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"101","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage"
|
||||
"102","文部","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage"
|
||||
"103","財務","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage"
|
||||
"104","警察","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage"
|
||||
"105","総務","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage"
|
||||
"106","防衛","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:43:41","clsComManage"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"manage_cd","manage_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"101","厚生","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage"
|
||||
"102","文部","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage"
|
||||
"103","財務","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage"
|
||||
"104","総務","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage"
|
||||
"105","警察","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage"
|
||||
"106","防衛","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage"
|
||||
"999","あいうえおかきくけこ","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"manage_cd","manage_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"101","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper"
|
||||
"102","文部","20171020","20171020","20230514","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper"
|
||||
"103","財務","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper"
|
||||
"104","警察","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper"
|
||||
"105","総務","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper"
|
||||
"106","防衛","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:51:00","com_manage_mapper"
|
||||
"107","独法国","20230514","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:51:00","com_manage_mapper","2023/05/14 15:51:00","com_manage_mapper"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"manage_cd","manage_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"101","厚生","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper"
|
||||
"102","文部","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper"
|
||||
"103","財務","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper"
|
||||
"104","総務","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper"
|
||||
"105","警察","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper"
|
||||
"106","防衛","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper"
|
||||
"999","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:39:03","com_manage_mapper","2023/05/14 15:39:03","com_manage_mapper"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"manage_cd","manage_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"101","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper"
|
||||
"102","文部","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper"
|
||||
"103","財務","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper"
|
||||
"104","警察","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper"
|
||||
"105","総務","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper"
|
||||
"106","防衛","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2023/05/14 15:43:41","com_manage_mapper"
|
||||
"999","あいうえおかきくけこ","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 15:39:03","clsComManage","2017/10/20 15:39:03","clsComManage"
|
||||
|
@ -0,0 +1,197 @@
|
||||
import os.path as path
|
||||
from datetime import datetime
|
||||
|
||||
import pytest
|
||||
|
||||
from src.batch.common.batch_context import BatchContext
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_manage_mapper
|
||||
from src.db.database import Database
|
||||
from tests.testing_utility import (assert_table_results,
|
||||
create_db_data_from_csv,
|
||||
create_delete_sql_with_parameter,
|
||||
create_insert_sql_with_parameter,
|
||||
create_ultmarc_table_mapper_sut,
|
||||
create_ultmarc_test_data_from_csv)
|
||||
|
||||
|
||||
class TestComManageMapper:
|
||||
"""レイアウト区分007: COM_経営体"""
|
||||
|
||||
db: Database
|
||||
batch_context: BatchContext
|
||||
test_file_path: str = path.dirname(__file__)
|
||||
|
||||
@pytest.fixture(autouse=True, scope='function')
|
||||
def pre_test(self, database: Database):
|
||||
"""テスト実行前後処理"""
|
||||
self.batch_context = BatchContext.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):
|
||||
"""
|
||||
Cases:
|
||||
COM_経営体テーブルにレコードを登録する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 追加対象となるレコードを削除する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_manage_insert.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_manage', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
|
||||
# Act
|
||||
for line_number, line in enumerate(test_dat_file, start=1):
|
||||
sut: com_manage_mapper.ComManageMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_manage_mapper.ComManageMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_manage_insert.csv'))
|
||||
primary_keys = [f"'{primary_key['manage_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_manage WHERE manage_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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_経営体テーブルのレコードを更新する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 更新対象となるレコードを登録する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_manage_update.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_manage', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# テストデータをDBに登録
|
||||
# DBデータを読み込む
|
||||
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_manage_before_update.csv'))
|
||||
for test_data in test_sql_data_list:
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_manage',
|
||||
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_manage_mapper.ComManageMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_manage_mapper.ComManageMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_manage_update.csv'))
|
||||
primary_keys = [f"'{primary_key['manage_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_manage WHERE manage_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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}が、期待値以降であること'
|
||||
|
||||
def test_logical_delete(self):
|
||||
"""
|
||||
Cases:
|
||||
COM_経営体テーブルのレコードを1件論理削除する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 削除対象となるレコードを登録する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_manage_delete.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_manage', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# テストデータをDBに登録
|
||||
# DBデータを読み込む
|
||||
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_manage_before_delete.csv'))
|
||||
for test_data in test_sql_data_list:
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_manage',
|
||||
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_manage_mapper.ComManageMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_manage_mapper.ComManageMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_manage_delete.csv'))
|
||||
primary_keys = [f"'{primary_key['manage_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_manage WHERE manage_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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}が、期待値以降であること'
|
||||
@ -1,5 +1,5 @@
|
||||
"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","一般病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati"
|
||||
"01","","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","com_med_func_valuation_mapper"
|
||||
"02","一般病院B","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:22:50","com_med_func_valuation_mapper"
|
||||
"03","精神病院A","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:22:50","com_med_func_valuation_mapper"
|
||||
"04","精神病院B","20171024","20171024","20230424","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2023/04/23 10:22:50","com_med_func_valuation_mapper"
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 1 and column 143.
|
@ -1,5 +1,5 @@
|
||||
"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","一般病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati"
|
||||
"01","","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","com_med_func_valuation_mapper"
|
||||
"02","一般病院B","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper"
|
||||
"03","精神病院A","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper"
|
||||
"04","精神病院B","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper"
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 1 and column 143.
|
@ -1,5 +1,5 @@
|
||||
"nurse_assrt_cd","nurse_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"3991","診療所療養型種別不明","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","clsComNurseAssrt"
|
||||
"3991","","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","com_nurse_assrt_mapper"
|
||||
"4101","療養型介護療養施設サービス費(Ⅰ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper"
|
||||
"4102","療養型介護療養施設サービス費(Ⅱ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper"
|
||||
"4103","療養型介護療養施設サービス費(Ⅲ)","20171019","20171019","20230421","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
"nurse_assrt_cd","nurse_assrt_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"3991","診療所療養型種別不明","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","clsComNurseAssrt"
|
||||
"3991","","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","com_nurse_assrt_mapper"
|
||||
"4101","療養型介護療養施設サービス費(Ⅰ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper"
|
||||
"4102","療養型介護療養施設サービス費(Ⅱ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper"
|
||||
"4103","療養型介護療養施設サービス費(Ⅲ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
"policy_med_cd","field_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","がん","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:06:43","clsComPolicyMed"
|
||||
"01","","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 15:06:43","com_policy_med_mapper"
|
||||
"02","循環器病","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper"
|
||||
"03","精神疾患","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper"
|
||||
"04","神経・筋疾患(筋ジスを含む)","20171019","20171019","20230425","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
"policy_med_cd","field_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","がん","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:06:43","clsComPolicyMed"
|
||||
"01","","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:06:43","com_policy_med_mapper"
|
||||
"02","循環器病","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper"
|
||||
"03","精神疾患","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper"
|
||||
"04","神経・筋疾患(筋ジスを含む)","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper"
|
||||
|
||||
|
@ -0,0 +1,7 @@
|
||||
"005","011","A","20141113","20141114","理事長"
|
||||
"005","012","A","20141113","20141114","理事"
|
||||
"005","013","A","20141113","20141114","副理事"
|
||||
"005","014","A","20141113","20141114",""
|
||||
"005","015","A","20141113","20141114","常任理"
|
||||
"005","016","C","20141113","20141114","誉理事"
|
||||
"005","021","A","20141113","20141114","誉会長"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"005","011","A","20141113","20141114","理事長"
|
||||
"005","012","A","20141113","20141114","理事"
|
||||
"005","013","A","20141113","20141114","副理事"
|
||||
"005","014","A","20141113","20141114","常務理"
|
||||
"005","015","A","20141113","20141114","常任理"
|
||||
"005","016","A","20141113","20141114","誉理事"
|
||||
"005","999","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお"
|
||||
|
@ -0,0 +1,6 @@
|
||||
"005","011","A","20141113","20141114","理事"
|
||||
"005","012","A","20141113","20141114","理事長"
|
||||
"005","013","A","20141113","20141114","副理事"
|
||||
"005","014","A","20141113","20141114",""
|
||||
"005","015","A","20141113","20141114","常任理"
|
||||
"005","016","A","20141113","20141114","誉理事"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"post_cd","form_post_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"011","理事","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost"
|
||||
"012","理事長","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost"
|
||||
"013","副理事","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost"
|
||||
"014","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost"
|
||||
"015","常任理","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost"
|
||||
"016","誉理事","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:55:50","clsComPost"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"post_cd","form_post_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"011","理事長","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost"
|
||||
"012","理事","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost"
|
||||
"013","副理事","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost"
|
||||
"014","常務理","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost"
|
||||
"015","常任理","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost"
|
||||
"016","誉理事","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2017/10/20 10:51:28","clsComPost"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"post_cd","form_post_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"011","理事長","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper"
|
||||
"012","理事","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper"
|
||||
"013","副理事","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper"
|
||||
"014","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper"
|
||||
"015","常任理","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper"
|
||||
"016","誉理事","20171020","20171020","20230514","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 11:00:25","com_post_mapper"
|
||||
"021","誉会長","20230514","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 11:00:25","com_post_mapper","2023/05/14 11:00:25","com_post_mapper"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"post_cd","form_post_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"011","理事長","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper"
|
||||
"012","理事","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper"
|
||||
"013","副理事","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper"
|
||||
"014","常務理","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper"
|
||||
"015","常任理","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper"
|
||||
"016","誉理事","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper"
|
||||
"999","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 10:51:28","com_post_mapper","2023/05/15 10:51:28","com_post_mapper"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"post_cd","form_post_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"011","理事","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper"
|
||||
"012","理事長","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper"
|
||||
"013","副理事","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper"
|
||||
"014","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper"
|
||||
"015","常任理","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper"
|
||||
"016","誉理事","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:51:28","clsComPost","2023/05/14 10:55:50","com_post_mapper"
|
||||
|
@ -0,0 +1,197 @@
|
||||
import os.path as path
|
||||
from datetime import datetime
|
||||
|
||||
import pytest
|
||||
|
||||
from src.batch.common.batch_context import BatchContext
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_post_mapper
|
||||
from src.db.database import Database
|
||||
from tests.testing_utility import (assert_table_results,
|
||||
create_db_data_from_csv,
|
||||
create_delete_sql_with_parameter,
|
||||
create_insert_sql_with_parameter,
|
||||
create_ultmarc_table_mapper_sut,
|
||||
create_ultmarc_test_data_from_csv)
|
||||
|
||||
|
||||
class TestComPostMapper:
|
||||
"""レイアウト区分005: COM_役職"""
|
||||
|
||||
db: Database
|
||||
batch_context: BatchContext
|
||||
test_file_path: str = path.dirname(__file__)
|
||||
|
||||
@pytest.fixture(autouse=True, scope='function')
|
||||
def pre_test(self, database: Database):
|
||||
"""テスト実行前後処理"""
|
||||
self.batch_context = BatchContext.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):
|
||||
"""
|
||||
Cases:
|
||||
COM_役職テーブルにレコードを登録する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 追加対象となるレコードを削除する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_post_insert.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_post', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
|
||||
# Act
|
||||
for line_number, line in enumerate(test_dat_file, start=1):
|
||||
sut: com_post_mapper.ComPostMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_post_mapper.ComPostMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_post_insert.csv'))
|
||||
primary_keys = [f"'{primary_key['post_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_post WHERE post_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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_役職テーブルのレコードを更新する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 更新対象となるレコードを登録する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_post_update.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_post', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# テストデータをDBに登録
|
||||
# DBデータを読み込む
|
||||
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_post_before_update.csv'))
|
||||
for test_data in test_sql_data_list:
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_post',
|
||||
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_post_mapper.ComPostMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_post_mapper.ComPostMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_post_update.csv'))
|
||||
primary_keys = [f"'{primary_key['post_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_post WHERE post_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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}が、期待値以降であること'
|
||||
|
||||
def test_logical_delete(self):
|
||||
"""
|
||||
Cases:
|
||||
COM_役職テーブルのレコードを1件論理削除する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 削除対象となるレコードを登録する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_post_delete.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_post', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# テストデータをDBに登録
|
||||
# DBデータを読み込む
|
||||
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_post_before_delete.csv'))
|
||||
for test_data in test_sql_data_list:
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_post',
|
||||
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_post_mapper.ComPostMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_post_mapper.ComPostMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_post_delete.csv'))
|
||||
primary_keys = [f"'{primary_key['post_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_post WHERE post_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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}が、期待値以降であること'
|
||||
@ -1,4 +1,4 @@
|
||||
"regn_co_critic_pass_cd","disease_name_kanji","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","頸部骨折","20230423","20230423","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper"
|
||||
"55","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこくけこあいうえおかきくけこあいうえおかき","20230423","20230423","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper"
|
||||
"99","不明","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","clsComRegnCriticPass","2023/03/24 10:04:58","clsComRegnCriticPass"
|
||||
"99","","20171024","20230423","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","clsComRegnCriticPass","2023/03/24 10:04:58","com_regn_critic_pass_mapper"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
"rehabili_cd","rehabili_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","脳血管疾患等リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili"
|
||||
"01","","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","com_rehabili_mapper"
|
||||
"02","運動器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 15:01:11","com_rehabili_mapper"
|
||||
"03","呼吸器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 15:01:11","com_rehabili_mapper"
|
||||
"04","廃用症候群リハビリテーション","20171019","20171019","20230423","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 15:01:11","com_rehabili_mapper"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
"rehabili_cd","rehabili_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"01","脳血管疾患等リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili"
|
||||
"01","","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","com_rehabili_mapper"
|
||||
"02","運動器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 14:51:32","com_rehabili_mapper"
|
||||
"03","呼吸器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 14:51:32","com_rehabili_mapper"
|
||||
"04","廃用症候群リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 14:51:32","com_rehabili_mapper"
|
||||
|
||||
|
@ -0,0 +1,7 @@
|
||||
"009","001","A","20141113","20141114",""
|
||||
"009","002","A","20141113","20141114","解剖"
|
||||
"009","003","A","20141113","20141114","生理"
|
||||
"009","004","C","20141113","20141114","生化"
|
||||
"009","005","A","20141113","20141114","病理"
|
||||
"009","006","A","20141113","20141114","薬理"
|
||||
"009","007","A","20141113","20141114","癌"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"009","001","A","20141113","20141114","医史"
|
||||
"009","002","A","20141113","20141114","解剖"
|
||||
"009","003","A","20141113","20141114","生理"
|
||||
"009","004","A","20141113","20141114","生化"
|
||||
"009","005","A","20141113","20141114","薬理"
|
||||
"009","006","A","20141113","20141114","病理"
|
||||
"009","999","A","","","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ"
|
||||
|
@ -0,0 +1,6 @@
|
||||
"009","001","A","20141113","20141114",""
|
||||
"009","002","A","20141113","20141114","解剖"
|
||||
"009","003","A","20141113","20141114","生理"
|
||||
"009","004","A","20141113","20141114","生化"
|
||||
"009","005","A","20141113","20141114","病理"
|
||||
"009","006","A","20141113","20141114","薬理"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"sosiety_cd","sosiety_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"001","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety"
|
||||
"002","解剖","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety"
|
||||
"003","生理","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety"
|
||||
"004","生化","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety"
|
||||
"005","病理","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety"
|
||||
"006","薬理","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:39:30","clsComSosiety"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"sosiety_cd","sosiety_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"001","医史","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety"
|
||||
"002","解剖","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety"
|
||||
"003","生理","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety"
|
||||
"004","生化","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety"
|
||||
"005","薬理","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety"
|
||||
"006","病理","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety"
|
||||
"999","あいう","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"sosiety_cd","sosiety_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"001","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper"
|
||||
"002","解剖","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper"
|
||||
"003","生理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper"
|
||||
"004","生化","20171020","20171020","20230515","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper"
|
||||
"005","病理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper"
|
||||
"006","薬理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:50:50","com_sosiety_mapper"
|
||||
"007","癌","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:50:50","com_sosiety_mapper","2023/05/15 16:50:50","com_sosiety_mapper"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"sosiety_cd","sosiety_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"001","医史","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper"
|
||||
"002","解剖","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper"
|
||||
"003","生理","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper"
|
||||
"004","生化","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper"
|
||||
"005","薬理","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper"
|
||||
"006","病理","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper"
|
||||
"999","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 16:30:39","com_sosiety_mapper","2023/05/15 16:30:39","com_sosiety_mapper"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"sosiety_cd","sosiety_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"001","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper"
|
||||
"002","解剖","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper"
|
||||
"003","生理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper"
|
||||
"004","生化","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper"
|
||||
"005","病理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper"
|
||||
"006","薬理","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2023/05/15 16:39:30","com_sosiety_mapper"
|
||||
"999","あいう","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 16:30:39","clsComSosiety","2017/10/20 16:30:39","clsComSosiety"
|
||||
|
@ -0,0 +1,197 @@
|
||||
import os.path as path
|
||||
from datetime import datetime
|
||||
|
||||
import pytest
|
||||
|
||||
from src.batch.common.batch_context import BatchContext
|
||||
from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_sosiety_mapper
|
||||
from src.db.database import Database
|
||||
from tests.testing_utility import (assert_table_results,
|
||||
create_db_data_from_csv,
|
||||
create_delete_sql_with_parameter,
|
||||
create_insert_sql_with_parameter,
|
||||
create_ultmarc_table_mapper_sut,
|
||||
create_ultmarc_test_data_from_csv)
|
||||
|
||||
|
||||
class TestComSosietyMapper:
|
||||
"""レイアウト区分009: COM_学会"""
|
||||
|
||||
db: Database
|
||||
batch_context: BatchContext
|
||||
test_file_path: str = path.dirname(__file__)
|
||||
|
||||
@pytest.fixture(autouse=True, scope='function')
|
||||
def pre_test(self, database: Database):
|
||||
"""テスト実行前後処理"""
|
||||
self.batch_context = BatchContext.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):
|
||||
"""
|
||||
Cases:
|
||||
COM_学会テーブルにレコードを登録する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 追加対象となるレコードを削除する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_sosiety_insert.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sosiety', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
|
||||
# Act
|
||||
for line_number, line in enumerate(test_dat_file, start=1):
|
||||
sut: com_sosiety_mapper.ComSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_sosiety_mapper.ComSosietyMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sosiety_insert.csv'))
|
||||
primary_keys = [f"'{primary_key['sosiety_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_sosiety WHERE sosiety_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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_学会テーブルのレコードを更新する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 更新対象となるレコードを登録する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_sosiety_update.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sosiety', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# テストデータをDBに登録
|
||||
# DBデータを読み込む
|
||||
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_sosiety_before_update.csv'))
|
||||
for test_data in test_sql_data_list:
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_sosiety',
|
||||
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_sosiety_mapper.ComSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_sosiety_mapper.ComSosietyMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sosiety_update.csv'))
|
||||
primary_keys = [f"'{primary_key['sosiety_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_sosiety WHERE sosiety_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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}が、期待値以降であること'
|
||||
|
||||
def test_logical_delete(self):
|
||||
"""
|
||||
Cases:
|
||||
COM_学会テーブルのレコードを1件論理削除する
|
||||
Arranges:
|
||||
- CSVデータを用意し、読み込む
|
||||
- 削除対象となるレコードを登録する
|
||||
Expects:
|
||||
- 登録内容が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arrange
|
||||
# 処理日設定
|
||||
self.batch_context.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_sosiety_delete.csv'))
|
||||
# 一旦全データをDBから削除
|
||||
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sosiety', {'1': '1'})
|
||||
self.db.execute(delete_sql, delete_parameter)
|
||||
# テストデータをDBに登録
|
||||
# DBデータを読み込む
|
||||
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_sosiety_before_delete.csv'))
|
||||
for test_data in test_sql_data_list:
|
||||
insert_sql, insert_parameter = create_insert_sql_with_parameter(
|
||||
'src05.com_sosiety',
|
||||
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_sosiety_mapper.ComSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db)
|
||||
assert type(sut) is com_sosiety_mapper.ComSosietyMapper, f'{line_number}行目:マッパークラスが期通りか'
|
||||
sut.make_query()
|
||||
sut.execute_queries()
|
||||
|
||||
# Assert
|
||||
# 期待値ファイルを読み込む
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sosiety_delete.csv'))
|
||||
primary_keys = [f"'{primary_key['sosiety_cd']}'" for primary_key in expect_data_list]
|
||||
actual_select_sql = f"SELECT * FROM src05.com_sosiety WHERE sosiety_cd IN ({','.join(primary_keys)})"
|
||||
actual_data_list = self.db.execute_select(actual_select_sql)
|
||||
# 期待値検査
|
||||
ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date']
|
||||
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
|
||||
# 動的日付項目の個別確認
|
||||
line_number = 0
|
||||
for actual_row, expect_row in zip(actual_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 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}が、期待値以降であること'
|
||||
@ -0,0 +1,7 @@
|
||||
"010","0001","A","20141113","20141114",""
|
||||
"010","0002","A","20141113","20141114","整形外科専門医"
|
||||
"010","0003","A","20141113","20141114","麻酔科専門医"
|
||||
"010","0004","A","20141113","20141114","産婦人科専門医"
|
||||
"010","0005","C","20141113","20141114","放射線科専門医"
|
||||
"010","0006","A","20141113","20141114","眼科専門医"
|
||||
"010","0007","A","20141113","20141114","耳鼻咽喉科専門医"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"010","0001","A","20141113","20141114","皮膚科専門医"
|
||||
"010","0002","A","20141113","20141114","整形外科専門医"
|
||||
"010","0003","A","20141113","20141114","麻酔科専門医"
|
||||
"010","0004","A","20141113","20141114","産婦人科専門医"
|
||||
"010","0005","A","20141113","20141114","眼科専門医"
|
||||
"010","0006","A","20141113","20141114","放射線科専門医"
|
||||
"010","9999","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお"
|
||||
|
@ -0,0 +1,6 @@
|
||||
"010","0001","A","20141113","20141114",""
|
||||
"010","0002","A","20141113","20141114","整形外科専門医"
|
||||
"010","0003","A","20141113","20141114","麻酔科専門医"
|
||||
"010","0004","A","20141113","20141114","産婦人科専門医"
|
||||
"010","0005","A","20141113","20141114","放射線科専門医"
|
||||
"010","0006","A","20141113","20141114","眼科専門医"
|
||||
|
@ -0,0 +1,7 @@
|
||||
"specialst_cd","specialst_licens_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"0001","","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens"
|
||||
"0002","整形外科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens"
|
||||
"0003","麻酔科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens"
|
||||
"0004","産婦人科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens"
|
||||
"0005","放射線科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens"
|
||||
"0006","眼科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:46:19","clsComSpLicens"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"specialst_cd","specialst_licens_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"0001","皮膚科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens"
|
||||
"0002","整形外科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens"
|
||||
"0003","麻酔科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens"
|
||||
"0004","産婦人科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens"
|
||||
"0005","眼科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens"
|
||||
"0006","放射線科専門医","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens"
|
||||
"9999","ああああ","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"specialst_cd","specialst_licens_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"0001","","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialst_license_mapper"
|
||||
"0002","整形外科専門医","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialst_license_mapper"
|
||||
"0003","麻酔科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialst_license_mapper"
|
||||
"0004","産婦人科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialst_license_mapper"
|
||||
"0005","放射線科専門医","20171024","20171024","20230515","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialst_license_mapper"
|
||||
"0006","眼科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:47:40","com_specialst_license_mapper"
|
||||
"0007","耳鼻咽喉科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:47:40","com_specialst_license_mapper","2023/05/15 12:47:40","com_specialst_license_mapper"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"specialst_cd","specialst_licens_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"0001","皮膚科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialst_license_mapper","2023/05/15 12:03:03","com_specialst_license_mapper"
|
||||
"0002","整形外科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialst_license_mapper","2023/05/15 12:03:03","com_specialst_license_mapper"
|
||||
"0003","麻酔科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialst_license_mapper","2023/05/15 12:03:03","com_specialst_license_mapper"
|
||||
"0004","産婦人科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialst_license_mapper","2023/05/15 12:03:03","com_specialst_license_mapper"
|
||||
"0005","眼科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialst_license_mapper","2023/05/15 12:03:03","com_specialst_license_mapper"
|
||||
"0006","放射線科専門医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialst_license_mapper","2023/05/15 12:03:03","com_specialst_license_mapper"
|
||||
"9999","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 12:03:03","com_specialst_license_mapper","2023/05/15 12:03:03","com_specialst_license_mapper"
|
||||
|
@ -0,0 +1,8 @@
|
||||
"specialst_cd","specialst_licens_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
|
||||
"0001","","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialst_license_mapper"
|
||||
"0002","整形外科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialst_license_mapper"
|
||||
"0003","麻酔科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialst_license_mapper"
|
||||
"0004","産婦人科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialst_license_mapper"
|
||||
"0005","放射線科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialst_license_mapper"
|
||||
"0006","眼科専門医","20171024","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2023/05/15 12:46:19","com_specialst_license_mapper"
|
||||
"9999","ああああ","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 12:03:03","clsComSpLicens","2017/10/24 12:03:03","clsComSpLicens"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user