Merge pull request #200 feature-NEWDWH2021-1011-COM_MASTERS1 into develop

This commit is contained in:
野間亜希子 2023-05-15 15:21:24 +09:00
commit 682317ccae
52 changed files with 1188 additions and 30 deletions

View File

@ -68,11 +68,11 @@ class UltmarcBucket(S3Bucket):
return temporary_file_path
def backup_dat_file(self, dat_file_key: str, datetime_key: str):
# バックアップバケットにコピー
ultmarc_backup_bucket = UltmarcBackupBucket()
backup_key = f'{ultmarc_backup_bucket._folder}/{datetime_key}/{dat_file_key.replace(f"{self._folder}/", "")}'
self._s3_client.copy(self._bucket_name, dat_file_key, ultmarc_backup_bucket._bucket_name, backup_key)
def delete_dat_file(self, dat_file_key: str):
# コピー元のファイルを削除
self._s3_client.delete_file(self._bucket_name, dat_file_key)

View File

@ -45,17 +45,14 @@ def exec_import():
dat_file_name = dat_file_info['filename']
logger.info(f"{dat_file_name}を取り込みます")
# ファイルをバックアップ
# 現行は、jobctrl_dailyの先頭でやっている
ultmarc_bucket.backup_dat_file(dat_file_name, batch_context.syor_date)
# datファイルをダウンロード
local_file_path = ultmarc_bucket.download_dat_file(dat_file_name)
dat_file = DatFile.from_path(local_file_path)
# アルトマーク取り込み実行
_import_to_ultmarc_table(dat_file)
# 処理後、ファイルをS3から削除する
logger.info(f'取り込み処理が完了したため、datファイルを削除。ファイル名={dat_file_name}')
ultmarc_bucket.delete_dat_file(dat_file_name)
# 処理後ファイルをバックアップ
ultmarc_bucket.backup_dat_file(dat_file_name, batch_context.syor_date)
logger.info(f'取り込み処理が完了したため、datファイルをバックアップ。ファイル名={dat_file_name}')
# アルトマーク取込済をマーク
batch_context.is_ultmarc_imported = True
logger.info('アルトマーク取込処理: 終了')

View File

@ -0,0 +1,107 @@
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
UltmarcTableMapper
from src.batch.ultmarc.utmp_tables.tables.com_alma_depart_disc import ComAlmaDepartDisc
class ComAlmaDepartDiscMapper(UltmarcTableMapper):
"""レイアウト区分003: COM_出身校学部識別 登録処理"""
# レコード存在確認SQL
RECORD_EXISTS_QUERY = """\
SELECT
COUNT(*) AS count_num
FROM
src05.com_alma_depart_disc
WHERE
alma_cd = :alma_cd
AND
depart_disc_cd = :depart_disc_cd
"""
# データ登録用SQL
INSERT_QUERY = """\
INSERT INTO src05.com_alma_depart_disc
(
alma_cd,
depart_disc_cd,
estab_e,
estab_y,
alma_name,
regist_ymd,
sys_regist_date,
regist_prgm_id,
sys_update_date,
update_prgm_id
)
VALUES (
:alma_cd,
:depart_disc_cd,
:estab_e,
:estab_y,
:alma_name,
:execute_date_str_ymd,
:execute_datetime,
:program_name,
:execute_datetime,
:program_name
)
"""
# 更新用SQL
UPDATE_QUERY = """\
UPDATE
src05.com_alma_depart_disc
SET
estab_e = :estab_e,
estab_y = :estab_y,
alma_name = :alma_name,
update_ymd = :execute_date_str_ymd,
sys_update_date = :execute_datetime,
update_prgm_id = :program_name
WHERE
alma_cd = :alma_cd
AND
depart_disc_cd = :depart_disc_cd
"""
# 修正区分が「C(削除)」の場合の更新SQL
LOGICAL_DELETE_QUERY = """\
UPDATE
src05.com_alma_depart_disc
SET
delete_ymd = :execute_date_str_ymd,
sys_update_date = :execute_date_str_ymd,
update_prgm_id = :program_name
WHERE
alma_cd = :alma_cd
AND
depart_disc_cd = :depart_disc_cd
"""
record: ComAlmaDepartDisc
def __init__(self, record: list[str], db) -> None:
super().__init__(record, db, ComAlmaDepartDisc)
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

View File

@ -89,7 +89,4 @@ class ComAlmaMapper(UltmarcTableMapper):
return self.INSERT_QUERY
# 存在する場合ではUpdate
if self.record.alma == '':
return None
else:
return self.UPDATE_QUERY
return self.UPDATE_QUERY

View File

@ -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_hp_assrt import ComHpAssrt
class ComHpAssrtMapper(UltmarcTableMapper):
"""レイアウト区分002: COM_病院種別 登録処理"""
# レコード存在確認SQL
RECORD_EXISTS_QUERY = """\
SELECT
COUNT(*) AS count_num
FROM
src05.com_hp_assrt
WHERE
hp_assrt_cd = :hp_assrt_cd
"""
# データ登録用SQL
INSERT_QUERY = """\
INSERT INTO src05.com_hp_assrt
(
hp_assrt_cd,
hp_assrt_name,
regist_ymd,
sys_regist_date,
regist_prgm_id,
sys_update_date,
update_prgm_id
)
VALUES (
:hp_assrt_cd,
:hp_assrt_name,
:execute_date_str_ymd,
:execute_datetime,
:program_name,
:execute_datetime,
:program_name
)
"""
# 更新用SQL
UPDATE_QUERY = """\
UPDATE
src05.com_hp_assrt
SET
hp_assrt_name = :hp_assrt_name,
update_ymd = :execute_date_str_ymd,
sys_update_date = :execute_datetime,
update_prgm_id = :program_name
WHERE
hp_assrt_cd = :hp_assrt_cd
"""
# 修正区分が「C(削除)」の場合の更新SQL
LOGICAL_DELETE_QUERY = """\
UPDATE
src05.com_hp_assrt
SET
delete_ymd = :execute_date_str_ymd,
sys_update_date = :execute_date_str_ymd,
update_prgm_id = :program_name
WHERE
hp_assrt_cd = :hp_assrt_cd
"""
record: ComHpAssrt
def __init__(self, record: list[str], db) -> None:
super().__init__(record, db, ComHpAssrt)
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

View File

@ -1,10 +1,11 @@
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
UltmarcTableMapper
from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_dis_treat import ComPrefcMedDisTreat
from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_dis_treat import \
ComPrefcMedDisTreat
class ComPrefcMedDisTreatMapper(UltmarcTableMapper):
"""レイアウト区分133: COM_都道府県医療機能情報(疾患治療)"""
"""レイアウト区分134: COM_都道府県医療機能情報(疾患治療)"""
# レコード存在確認SQL
RECORD_EXISTS_QUERY = """\

View File

@ -1,10 +1,11 @@
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
UltmarcTableMapper
from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_equpment import ComPrefcMedEqupment
from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_equpment import \
ComPrefcMedEqupment
class ComPrefcMedEqupmentMapper(UltmarcTableMapper):
"""レイアウト区分132: COM_都道府県医療機能情報(施設設備)"""
"""レイアウト区分133: COM_都道府県医療機能情報(施設設備)"""
# レコード存在確認SQL
RECORD_EXISTS_QUERY = """\

View File

@ -0,0 +1,99 @@
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
UltmarcTableMapper
from src.batch.ultmarc.utmp_tables.tables.com_trt_course import ComTrtCourse
class ComTrtCourseMapper(UltmarcTableMapper):
"""レイアウト区分001: COM_診療科目 登録処理"""
# レコード存在確認SQL
RECORD_EXISTS_QUERY = """\
SELECT
COUNT(*) AS count_num
FROM
src05.com_trt_course
WHERE
trt_course_cd = :trt_course_cd
"""
# データ登録用SQL
INSERT_QUERY = """\
INSERT INTO src05.com_trt_course
(
trt_course_cd,
trt_course_name_kana,
trt_course_name_abb,
trt_course_name,
regist_ymd,
sys_regist_date,
regist_prgm_id,
sys_update_date,
update_prgm_id
)
VALUES (
:trt_course_cd,
:trt_course_name_kana,
:trt_course_name_abb,
:trt_course_name,
:execute_date_str_ymd,
:execute_datetime,
:program_name,
:execute_datetime,
:program_name
)
"""
# 更新用SQL
UPDATE_QUERY = """\
UPDATE
src05.com_trt_course
SET
trt_course_name_kana = :trt_course_name_kana,
trt_course_name_abb = :trt_course_name_abb,
trt_course_name = :trt_course_name,
update_ymd = :execute_date_str_ymd,
sys_update_date = :execute_datetime,
update_prgm_id = :program_name
WHERE
trt_course_cd = :trt_course_cd
"""
# 修正区分が「C(削除)」の場合の更新SQL
LOGICAL_DELETE_QUERY = """\
UPDATE
src05.com_trt_course
SET
delete_ymd = :execute_date_str_ymd,
sys_update_date = :execute_date_str_ymd,
update_prgm_id = :program_name
WHERE
trt_course_cd = :trt_course_cd
"""
record: ComTrtCourse
def __init__(self, record: list[str], db) -> None:
super().__init__(record, db, ComTrtCourse)
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

View File

@ -0,0 +1,20 @@
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
class ComAlmaDepartDisc(UltmarcTable):
"""レイアウト区分003: COM_出身校学部識別"""
alma_cd: str # 出身校コード
depart_disc_cd: str # 学部識別コード
estab_e: str # 創立元号
estab_y: str # 創立年
alma_name: str # 出身校名
maint_flag: str # 修正区分
def __init__(self, record: list[str]):
super().__init__(record)
self.alma_cd = record[1]
self.depart_disc_cd = record[2]
self.maint_flag = record[3]
self.alma_name = record[6]
self.estab_e = record[7]
self.estab_y = record[8]

View File

@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
class ComDrWrkplace(UltmarcTable):
"""レイアウト区分501-01:COM_医師勤務先"""
"""レイアウト区分502 :COM_医師勤務先"""
maint_flag: str # 修正区分
dcfdr_id: str # 個人コードID
dcfdr_code: str # 個人コード(個人コード)

View File

@ -0,0 +1,14 @@
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
class ComHpAssrt(UltmarcTable):
"""レイアウト区分002: 病院種別"""
hp_assrt_cd: str # 病院種別コード
hp_assrt_name: str # 病院種別名
maint_flag: str # 修正区分
def __init__(self, record: list[str]):
super().__init__(record)
self.hp_assrt_cd = record[1]
self.maint_flag = record[2]
self.hp_assrt_name = record[5]

View File

@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
class ComMedFuncValuation(UltmarcTable):
"""レイアウト区分023: COM_医療機器評価"""
"""レイアウト区分024: COM_医療機器評価"""
maint_flag: str # 修正区分
med_func_valuation_cd: str # 医療機器評価コード
med_func_valuation_name: str # 医療機器評価名称(漢字)

View File

@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
class ComNurseAssrt(UltmarcTable):
"""レイアウト区分022: COM_看護種別"""
"""レイアウト区分023: COM_看護種別"""
nurse_assrt_cd: str # 看護種別コード
nurse_assrt_name: str # 看護種別名
maint_flag: str # 修正区分

View File

@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
class ComPrefcMedDisTreat(UltmarcTable):
"""レイアウト区分133: COM_都道府県医療機能情報(疾患治療)"""
"""レイアウト区分134: COM_都道府県医療機能情報(疾患治療)"""
dcfhp_id: str # DCFコードレコードID
dcfhp_code: str # DCFコード施設コード
dcfhp_yobi: str # DCFコード予備

View File

@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
class ComPrefcMedEqupment(UltmarcTable):
"""レイアウト区分132: COM_都道府県医療機能情報(施設設備)"""
"""レイアウト区分133: COM_都道府県医療機能情報(施設設備)"""
dcfhp_id: str # DCFコードレコードID
dcfhp_code: str # DCFコード施設コード
dcfhp_yobi: str # DCFコード予備

View File

@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
class ComPrefcMedSojournOpe(UltmarcTable):
"""レイアウト区分132: COM_都道府県医療機能情報(短期滞在手術)"""
"""レイアウト区分135: COM_都道府県医療機能情報(短期滞在手術)"""
dcfhp_id: str # DCFコードレコードID
dcfhp_code: str # DCFコード施設コード
dcfhp_yobi: str # DCFコード予備

View File

@ -0,0 +1,18 @@
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
class ComTrtCourse(UltmarcTable):
"""レイアウト区分001: COM_診療科目"""
trt_course_cd: str # 診療科目コード
trt_course_name_kana: str # 診療科目名カナ
trt_course_name_abb: str # 診療科目名略称
trt_course_name: str # 診療科目名
maint_flag: str # 修正区分
def __init__(self, record: list[str]):
super().__init__(record)
self.trt_course_cd = record[1]
self.maint_flag = record[2]
self.trt_course_name_abb = record[5]
self.trt_course_name = record[6]
self.trt_course_name_kana = record[7]

View File

@ -44,6 +44,12 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_inst_att_mapper imp
ComInstAttMapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_cop_hp_mapper import \
ComCopHpMapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_trt_course_mapper import \
ComTrtCourseMapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_hp_assrt_mapper import \
ComHpAssrtMapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_alma_depart_disc_mapper import \
ComAlmaDepartDiscMapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_prefc_mapper import \
ComMedPrefcMapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_thrd_med_mapper import \
@ -85,11 +91,11 @@ COM_TABLE_LIST = {
# COM_都道府県医療機能情報(専門外来)
"136": ComPrefcMedSpOutpatMapper,
# COM_診療科目
"001": NullMapper,
"001": ComTrtCourseMapper,
# COM_病院種別
"002": NullMapper,
"002": ComHpAssrtMapper,
# COM_出身校学部識別
"003": NullMapper,
"003": ComAlmaDepartDiscMapper,
# COM_出身校
"004": ComAlmaMapper,
# COM_役職

View File

@ -2,7 +2,7 @@
"001","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper"
"002","札幌医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper"
"003","弘大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper"
"004","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","clsComAlma"
"004","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper"
"005","東北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper"
"006","福島医","20171020","20171020","20171020","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper"
"007","群馬大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:43:15","com_alma_mapper","2017/10/20 10:43:15","com_alma_mapper"

1 alma_cd alma 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
2 001 北大 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:43:15 com_alma_mapper
3 002 札幌医 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:43:15 com_alma_mapper
4 003 弘大 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:43:15 com_alma_mapper
5 004 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:43:15 clsComAlma com_alma_mapper
6 005 東北大 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:43:15 com_alma_mapper
7 006 福島医 20171020 20171020 20171020 NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:43:15 com_alma_mapper
8 007 群馬大 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 10:43:15 com_alma_mapper 2017/10/20 10:43:15 com_alma_mapper

View File

@ -2,7 +2,7 @@
"001","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper"
"002","札幌医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper"
"003","弘大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper"
"004","岩手医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:27:33","clsComAlma"
"004","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:27:33","com_alma_mapper"
"005","福島医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper"
"006","東北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper"
"007","神大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","com_alma_mapper","2017/10/20 10:35:27","com_alma_mapper"
1 alma_cd alma 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
2 001 北大 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:35:27 com_alma_mapper
3 002 札幌医 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:35:27 com_alma_mapper
4 003 弘大 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:35:27 com_alma_mapper
5 004 岩手医 20171020 NULL 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:27:33 clsComAlma com_alma_mapper
6 005 福島医 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:35:27 com_alma_mapper
7 006 東北大 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:27:33 clsComAlma 2017/10/20 10:35:27 com_alma_mapper
8 007 神大 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 10:27:33 com_alma_mapper 2017/10/20 10:35:27 com_alma_mapper

View File

@ -0,0 +1,7 @@
"003","001","1","A","20141113","20141114","北大","1","09"
"003","001","2","A","20141113","20141114","北大","3","40"
"003","001","3","A","20141113","20141114","北大","3","42"
"003","002","1","A","20141113","20141114","","8","21"
"003","003","1","A","20141113","20141114","岩手医","8","21"
"003","004","1","C","20141113","20141114","弘大","8","21"
"003","004","2","A","20141113","20141114","岩手医","4","19"
1 003 001 1 A 20141113 20141114 北大 1 09
2 003 001 2 A 20141113 20141114 北大 3 40
3 003 001 3 A 20141113 20141114 北大 3 42
4 003 002 1 A 20141113 20141114 8 21
5 003 003 1 A 20141113 20141114 岩手医 8 21
6 003 004 1 C 20141113 20141114 弘大 8 21
7 003 004 2 A 20141113 20141114 岩手医 4 19

View File

@ -0,0 +1,7 @@
"003","001","1","A","20141113","20141114","北大","1","09"
"003","001","2","A","20141113","20141114","北大","3","40"
"003","001","3","A","20141113","20141114","北大","3","42"
"003","002","1","A","20141113","20141114","札幌医","3","20"
"003","003","1","A","20141113","20141114","弘大","3","19"
"003","004","1","A","20141113","20141114","岩手医","3","03"
"003","999","9","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお","1","99"
1 003 001 1 A 20141113 20141114 北大 1 09
2 003 001 2 A 20141113 20141114 北大 3 40
3 003 001 3 A 20141113 20141114 北大 3 42
4 003 002 1 A 20141113 20141114 札幌医 3 20
5 003 003 1 A 20141113 20141114 弘大 3 19
6 003 004 1 A 20141113 20141114 岩手医 3 03
7 003 999 9 A あいうえおかきくけこあいうえおかきくけこあいうえお 1 99

View File

@ -0,0 +1,6 @@
"003","001","1","A","20141113","20141114","北大","1","09"
"003","001","2","A","20141113","20141114","北大","3","40"
"003","001","3","A","20141113","20141114","北大","3","42"
"003","002","1","A","20141113","20141114","","8","21"
"003","003","1","A","20141113","20141114","岩手医","8","21"
"003","004","1","A","20141113","20141114","弘大","8","21"
1 003 001 1 A 20141113 20141114 北大 1 09
2 003 001 2 A 20141113 20141114 北大 3 40
3 003 001 3 A 20141113 20141114 北大 3 42
4 003 002 1 A 20141113 20141114 8 21
5 003 003 1 A 20141113 20141114 岩手医 8 21
6 003 004 1 A 20141113 20141114 弘大 8 21

View File

@ -0,0 +1,7 @@
"alma_cd","depart_disc_cd","estab_e","estab_y","alma_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","1","1","09","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc"
"001","2","3","40","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc"
"001","3","3","42","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc"
"002","1","8","21","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc"
"003","1","8","21","岩手医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc"
"004","1","8","21","弘大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc"
1 alma_cd depart_disc_cd estab_e estab_y alma_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
2 001 1 1 09 北大 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 10:06:16 clsComAlmaDepartDisc
3 001 2 3 40 北大 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 10:06:16 clsComAlmaDepartDisc
4 001 3 3 42 北大 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 10:06:16 clsComAlmaDepartDisc
5 002 1 8 21 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 10:06:16 clsComAlmaDepartDisc
6 003 1 8 21 岩手医 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 10:06:16 clsComAlmaDepartDisc
7 004 1 8 21 弘大 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 10:06:16 clsComAlmaDepartDisc

View File

@ -0,0 +1,8 @@
"alma_cd","depart_disc_cd","estab_e","estab_y","alma_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","1","1","09","北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc"
"001","2","3","40","北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc"
"001","3","3","42","北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc"
"002","1","3","20","札幌医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc"
"003","1","3","19","弘大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc"
"004","1","3","03","岩手医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc"
"999","9","1","99","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","aaaa"
1 alma_cd depart_disc_cd estab_e estab_y alma_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
2 001 1 1 09 北大 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 9:54:51 clsComAlmaDepartDisc
3 001 2 3 40 北大 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 9:54:51 clsComAlmaDepartDisc
4 001 3 3 42 北大 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 9:54:51 clsComAlmaDepartDisc
5 002 1 3 20 札幌医 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 9:54:51 clsComAlmaDepartDisc
6 003 1 3 19 弘大 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 9:54:51 clsComAlmaDepartDisc
7 004 1 3 03 岩手医 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2017/10/20 9:54:51 clsComAlmaDepartDisc
8 999 9 1 99 あいうえおかきくけこあいうえおかきくけこあいうえお 20230515 NULL NULL NULL NULL NULL NULL 2023/05/14 9:54:51 com_alma_depart_disc_mapper 2023/05/14 9:54:51 aaaa

View File

@ -0,0 +1,8 @@
"alma_cd","depart_disc_cd","estab_e","estab_y","alma_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","1","1","09","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper"
"001","2","3","40","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper"
"001","3","3","42","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper"
"002","1","8","21","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper"
"003","1","8","21","岩手医","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper"
"004","1","8","21","弘大","20171020","20171020","20230514","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper"
"004","2","4","19","岩手医","20230514","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 10:22:05","com_alma_depart_disc_mapper","2023/05/14 10:22:05","com_alma_depart_disc_mapper"
1 alma_cd depart_disc_cd estab_e estab_y alma_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
2 001 1 1 09 北大 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:22:05 com_alma_depart_disc_mapper
3 001 2 3 40 北大 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:22:05 com_alma_depart_disc_mapper
4 001 3 3 42 北大 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:22:05 com_alma_depart_disc_mapper
5 002 1 8 21 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:22:05 com_alma_depart_disc_mapper
6 003 1 8 21 岩手医 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:22:05 com_alma_depart_disc_mapper
7 004 1 8 21 弘大 20171020 20171020 20230514 NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:22:05 com_alma_depart_disc_mapper
8 004 2 4 19 岩手医 20230514 NULL NULL NULL NULL NULL NULL 2023/05/14 10:22:05 com_alma_depart_disc_mapper 2023/05/14 10:22:05 com_alma_depart_disc_mapper

View File

@ -0,0 +1,8 @@
"alma_cd","depart_disc_cd","estab_e","estab_y","alma_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","1","1","09","北大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper"
"001","2","3","40","北大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper"
"001","3","3","42","北大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper"
"002","1","3","20","札幌医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper"
"003","1","3","19","弘大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper"
"004","1","3","03","岩手医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper"
"999","9","1","99","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper"
1 alma_cd depart_disc_cd estab_e estab_y alma_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
2 001 1 1 09 北大 20230515 NULL NULL NULL NULL NULL NULL 2023/05/14 9:54:51 com_alma_depart_disc_mapper 2023/05/14 9:54:51 com_alma_depart_disc_mapper
3 001 2 3 40 北大 20230515 NULL NULL NULL NULL NULL NULL 2023/05/14 9:54:51 com_alma_depart_disc_mapper 2023/05/14 9:54:51 com_alma_depart_disc_mapper
4 001 3 3 42 北大 20230515 NULL NULL NULL NULL NULL NULL 2023/05/14 9:54:51 com_alma_depart_disc_mapper 2023/05/14 9:54:51 com_alma_depart_disc_mapper
5 002 1 3 20 札幌医 20230515 NULL NULL NULL NULL NULL NULL 2023/05/14 9:54:51 com_alma_depart_disc_mapper 2023/05/14 9:54:51 com_alma_depart_disc_mapper
6 003 1 3 19 弘大 20230515 NULL NULL NULL NULL NULL NULL 2023/05/14 9:54:51 com_alma_depart_disc_mapper 2023/05/14 9:54:51 com_alma_depart_disc_mapper
7 004 1 3 03 岩手医 20230515 NULL NULL NULL NULL NULL NULL 2023/05/14 9:54:51 com_alma_depart_disc_mapper 2023/05/14 9:54:51 com_alma_depart_disc_mapper
8 999 9 1 99 あいうえおかきくけこあいうえおかきくけこあいうえお 20230515 NULL NULL NULL NULL NULL NULL 2023/05/14 9:54:51 com_alma_depart_disc_mapper 2023/05/14 9:54:51 com_alma_depart_disc_mapper

View File

@ -0,0 +1,8 @@
"alma_cd","depart_disc_cd","estab_e","estab_y","alma_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","1","1","09","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper"
"001","2","3","40","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper"
"001","3","3","42","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper"
"002","1","8","21","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper"
"003","1","8","21","岩手医","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper"
"004","1","8","21","弘大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper"
"999","9","1","99","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","aaaa"
1 alma_cd depart_disc_cd estab_e estab_y alma_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
2 001 1 1 09 北大 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:06:16 com_alma_depart_disc_mapper
3 001 2 3 40 北大 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:06:16 com_alma_depart_disc_mapper
4 001 3 3 42 北大 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:06:16 com_alma_depart_disc_mapper
5 002 1 8 21 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:06:16 com_alma_depart_disc_mapper
6 003 1 8 21 岩手医 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:06:16 com_alma_depart_disc_mapper
7 004 1 8 21 弘大 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 9:54:51 clsComAlmaDepartDisc 2023/05/14 10:06:16 com_alma_depart_disc_mapper
8 999 9 1 99 あいうえおかきくけこあいうえおかきくけこあいうえお 20230515 NULL NULL NULL NULL NULL NULL 2023/05/14 9:54:51 com_alma_depart_disc_mapper 2023/05/14 9:54:51 aaaa

View File

@ -0,0 +1,236 @@
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_alma_depart_disc_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 TestComAlmaDepartDiscMapper:
"""レイアウト区分003: 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_alma_depart_disc_insert.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma_depart_disc', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper, 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_alma_depart_disc_insert.csv'))
primary_keys_alma_cd = [{'alma_cd': columns['alma_cd']} for columns in expect_data_list]
primary_keys_depart_disc_cd = [{'depart_disc_cd': columns['depart_disc_cd']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_alma_depart_disc
WHERE
alma_cd = :alma_cd
AND depart_disc_cd = :depart_disc_cd\
"""
for param_alma_cd, param_depart_disc_cd in zip(primary_keys_alma_cd, primary_keys_depart_disc_cd):
sp_field_data = self.db.execute_select(
sp_field_select_sql,
{**param_alma_cd, **param_depart_disc_cd})
assert len(sp_field_data) == 1, '1件取得できていること'
actual_data_list.append(sp_field_data[0])
# 期待値検査
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 ['regist_ymd', 'sys_regist_date', 'sys_update_date']:
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_alma_depart_disc_update.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma_depart_disc', {'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_alma_depart_disc_before_update.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_alma_depart_disc',
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_alma_depart_disc_mapper.ComAlmaDepartDiscMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper, 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_alma_depart_disc_update.csv'))
primary_keys_alma_cd = [{'alma_cd': columns['alma_cd']} for columns in expect_data_list]
primary_keys_depart_disc_cd = [{'depart_disc_cd': columns['depart_disc_cd']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_alma_depart_disc
WHERE
alma_cd = :alma_cd
AND depart_disc_cd = :depart_disc_cd\
"""
for param_alma_cd, param_depart_disc_cd in zip(primary_keys_alma_cd, primary_keys_depart_disc_cd):
sp_field_data = self.db.execute_select(
sp_field_select_sql,
{**param_alma_cd, **param_depart_disc_cd})
assert len(sp_field_data) == 1, '1件取得できていること'
actual_data_list.append(sp_field_data[0])
# 期待値検査
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_alma_depart_disc_delete.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma_depart_disc', {'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_alma_depart_disc_before_delete.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_alma_depart_disc',
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_alma_depart_disc_mapper.ComAlmaDepartDiscMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper, 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_alma_depart_disc_delete.csv'))
primary_keys_alma_cd = [{'alma_cd': columns['alma_cd']} for columns in expect_data_list]
primary_keys_depart_disc_cd = [{'depart_disc_cd': columns['depart_disc_cd']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_alma_depart_disc
WHERE
alma_cd = :alma_cd
AND depart_disc_cd = :depart_disc_cd\
"""
for param_alma_cd, param_depart_disc_cd in zip(primary_keys_alma_cd, primary_keys_depart_disc_cd):
sp_field_data = self.db.execute_select(
sp_field_select_sql,
{**param_alma_cd, **param_depart_disc_cd})
assert len(sp_field_data) == 1, '1件取得できていること'
actual_data_list.append(sp_field_data[0])
# 期待値検査
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}が、期待値以降であること'

View File

@ -15,7 +15,7 @@ from tests.testing_utility import (assert_table_results,
class TestComDrWrkplaceMapper:
"""COM_DCF医師勤務先"""
"""レイアウト区分502: COM_DCF医師勤務先"""
db: Database
batch_context: BatchContext

View File

@ -0,0 +1,7 @@
"002","1","A","20141113","20141114",""
"002","2","A","20141113","20141114","精神"
"002","3","A","20141113","20141114","結核"
"002","4","A","20141113","20141114","ハンセン"
"002","5","C","20141113","20141114","歯科"
"002","6","A","20141113","20141114","伝染"
"002","7","A","20141113","20141114","診療所"
1 002 1 A 20141113 20141114
2 002 2 A 20141113 20141114 精神
3 002 3 A 20141113 20141114 結核
4 002 4 A 20141113 20141114 ハンセン
5 002 5 C 20141113 20141114 歯科
6 002 6 A 20141113 20141114 伝染
7 002 7 A 20141113 20141114 診療所

View File

@ -0,0 +1,7 @@
"002","1","A","20141113","20141114","一般"
"002","2","A","20141113","20141114","精神"
"002","3","A","20141113","20141114","結核"
"002","4","A","20141113","20141114","ハンセン"
"002","5","A","20141113","20141114","伝染"
"002","6","A","20141113","20141114","歯科"
"002","9","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお"
1 002 1 A 20141113 20141114 一般
2 002 2 A 20141113 20141114 精神
3 002 3 A 20141113 20141114 結核
4 002 4 A 20141113 20141114 ハンセン
5 002 5 A 20141113 20141114 伝染
6 002 6 A 20141113 20141114 歯科
7 002 9 A あいうえおかきくけこあいうえおかきくけこあいうえお

View File

@ -0,0 +1,6 @@
"002","1","A","20141113","20141114",""
"002","2","A","20141113","20141114","精神"
"002","3","A","20141113","20141114","結核"
"002","4","A","20141113","20141114","ハンセン"
"002","5","A","20141113","20141114","歯科"
"002","6","A","20141113","20141114","伝染"
1 002 1 A 20141113 20141114
2 002 2 A 20141113 20141114 精神
3 002 3 A 20141113 20141114 結核
4 002 4 A 20141113 20141114 ハンセン
5 002 5 A 20141113 20141114 歯科
6 002 6 A 20141113 20141114 伝染

View File

@ -0,0 +1,7 @@
"hp_assrt_cd","hp_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"
"1","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt"
"2","精神","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt"
"3","結核","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt"
"4","ハンセン","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt"
"5","歯科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt"
"6","伝染","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt"
1 hp_assrt_cd hp_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
2 1 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:46:18 clsComHpAssrt
3 2 精神 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:46:18 clsComHpAssrt
4 3 結核 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:46:18 clsComHpAssrt
5 4 ハンセン 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:46:18 clsComHpAssrt
6 5 歯科 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:46:18 clsComHpAssrt
7 6 伝染 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:46:18 clsComHpAssrt

View File

@ -0,0 +1,8 @@
"hp_assrt_cd","hp_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"
"1","一般","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt"
"2","精神","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt"
"3","結核","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt"
"4","ハンセン","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt"
"5","伝染","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt"
"6","歯科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt"
"9","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","aaaaa"
1 hp_assrt_cd hp_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
2 1 一般 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:39:05 clsComHpAssrt
3 2 精神 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:39:05 clsComHpAssrt
4 3 結核 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:39:05 clsComHpAssrt
5 4 ハンセン 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:39:05 clsComHpAssrt
6 5 伝染 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:39:05 clsComHpAssrt
7 6 歯科 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2017/10/20 9:39:05 clsComHpAssrt
8 9 あいうえおかきくけこあいうえおかきくけこあいうえお 20230515 NULL NULL NULL NULL NULL NULL 2023/05/15 7:39:05 com_hp_assrt_mapper 2023/05/15 7:39:05 aaaaa

View File

@ -0,0 +1,7 @@
"hp_assrt_cd","hp_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"
"1","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper"
"2","精神","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper"
"3","結核","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper"
"4","ハンセン","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper"
"5","歯科","20171020","20171020","20230515","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper"
"6","伝染","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper"
1 hp_assrt_cd hp_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
2 1 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/14 8:46:18 com_hp_assrt_mapper
3 2 精神 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/14 8:46:18 com_hp_assrt_mapper
4 3 結核 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/14 8:46:18 com_hp_assrt_mapper
5 4 ハンセン 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/14 8:46:18 com_hp_assrt_mapper
6 5 歯科 20171020 20171020 20230515 NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/14 8:46:18 com_hp_assrt_mapper
7 6 伝染 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/14 8:46:18 com_hp_assrt_mapper

View File

@ -0,0 +1,8 @@
"hp_assrt_cd","hp_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"
"1","一般","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper"
"2","精神","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper"
"3","結核","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper"
"4","ハンセン","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper"
"5","伝染","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper"
"6","歯科","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper"
"9","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper"
1 hp_assrt_cd hp_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
2 1 一般 20230515 NULL NULL NULL NULL NULL NULL 2023/05/15 7:39:05 com_hp_assrt_mapper 2023/05/15 7:39:05 com_hp_assrt_mapper
3 2 精神 20230515 NULL NULL NULL NULL NULL NULL 2023/05/15 7:39:05 com_hp_assrt_mapper 2023/05/15 7:39:05 com_hp_assrt_mapper
4 3 結核 20230515 NULL NULL NULL NULL NULL NULL 2023/05/15 7:39:05 com_hp_assrt_mapper 2023/05/15 7:39:05 com_hp_assrt_mapper
5 4 ハンセン 20230515 NULL NULL NULL NULL NULL NULL 2023/05/15 7:39:05 com_hp_assrt_mapper 2023/05/15 7:39:05 com_hp_assrt_mapper
6 5 伝染 20230515 NULL NULL NULL NULL NULL NULL 2023/05/15 7:39:05 com_hp_assrt_mapper 2023/05/15 7:39:05 com_hp_assrt_mapper
7 6 歯科 20230515 NULL NULL NULL NULL NULL NULL 2023/05/15 7:39:05 com_hp_assrt_mapper 2023/05/15 7:39:05 com_hp_assrt_mapper
8 9 あいうえおかきくけこあいうえおかきくけこあいうえお 20230515 NULL NULL NULL NULL NULL NULL 2023/05/15 7:39:05 com_hp_assrt_mapper 2023/05/15 7:39:05 com_hp_assrt_mapper

View File

@ -0,0 +1,8 @@
"hp_assrt_cd","hp_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"
"1","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper"
"2","精神","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper"
"3","結核","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper"
"4","ハンセン","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper"
"5","歯科","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper"
"6","伝染","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper"
"9","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","aaaaa"
1 hp_assrt_cd hp_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
2 1 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/15 8:46:18 com_hp_assrt_mapper
3 2 精神 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/15 8:46:18 com_hp_assrt_mapper
4 3 結核 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/15 8:46:18 com_hp_assrt_mapper
5 4 ハンセン 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/15 8:46:18 com_hp_assrt_mapper
6 5 歯科 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/15 8:46:18 com_hp_assrt_mapper
7 6 伝染 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 9:39:05 clsComHpAssrt 2023/05/15 8:46:18 com_hp_assrt_mapper
8 9 あいうえおかきくけこあいうえおかきくけこあいうえお 20230515 NULL NULL NULL NULL NULL NULL 2023/05/15 7:39:05 com_hp_assrt_mapper 2023/05/15 7:39:05 aaaaa

View File

@ -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_hp_assrt_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 TestComHpAssrtMapper:
"""レイアウト区分002: 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_hp_assrt_insert.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hp_assrt', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_hp_assrt_mapper.ComHpAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_hp_assrt_mapper.ComHpAssrtMapper, 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_hp_assrt_insert.csv'))
primary_keys = [f"'{primary_key['hp_assrt_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_hp_assrt WHERE hp_assrt_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 ['regist_ymd', 'sys_regist_date', 'sys_update_date']:
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_hp_assrt_update.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hp_assrt', {'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_hp_assrt_before_update.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_hp_assrt',
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_hp_assrt_mapper.ComHpAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_hp_assrt_mapper.ComHpAssrtMapper, 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_hp_assrt_update.csv'))
primary_keys = [f"'{primary_key['hp_assrt_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_hp_assrt WHERE hp_assrt_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_hp_assrt_delete.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hp_assrt', {'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_hp_assrt_before_delete.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_hp_assrt',
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_hp_assrt_mapper.ComHpAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_hp_assrt_mapper.ComHpAssrtMapper, 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_hp_assrt_delete.csv'))
primary_keys = [f"'{primary_key['hp_assrt_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_hp_assrt WHERE hp_assrt_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}が、期待値以降であること'

View File

@ -4,7 +4,8 @@ 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_nurse_assrt_mapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete import \
com_nurse_assrt_mapper
from src.db.database import Database
from tests.testing_utility import (assert_table_results,
create_db_data_from_csv,
@ -15,7 +16,7 @@ from tests.testing_utility import (assert_table_results,
class TestComNurseAssrtMapper:
"""レイアウト区分004: COM_出身校"""
"""レイアウト区分023: COM_看護種別"""
db: Database
batch_context: BatchContext

View File

@ -0,0 +1,7 @@
"001","A01","A","20141113","20141114","","",""
"001","A02","A","20141113","20141114","腫瘍","腫瘍科","シユヨウカ"
"001","A03","A","20141113","20141114","腫内","腫瘍内科","シユヨウナイカ"
"001","A04","C","20141113","20141114","腫疼","腫瘍内科(疼痛緩和)","シユヨウナイカ(トウツウカンワ)"
"001","A05","A","20141113","20141114","内循","内科(循環器)","ナイカ(ジユンカンキ)"
"001","A06","A","20141113","20141114","血腫","血液・腫瘍内科","ケツエキ.シユヨウナイカ"
"001","A07","A","20141113","20141114","内薬","内科(薬物療法)","ナイカ(ヤクブツリヨウホウ)"
1 001 A01 A 20141113 20141114
2 001 A02 A 20141113 20141114 腫瘍 腫瘍科 シユヨウカ
3 001 A03 A 20141113 20141114 腫内 腫瘍内科 シユヨウナイカ
4 001 A04 C 20141113 20141114 腫疼 腫瘍内科(疼痛緩和) シユヨウナイカ(トウツウカンワ)
5 001 A05 A 20141113 20141114 内循 内科(循環器) ナイカ(ジユンカンキ)
6 001 A06 A 20141113 20141114 血腫 血液・腫瘍内科 ケツエキ.シユヨウナイカ
7 001 A07 A 20141113 20141114 内薬 内科(薬物療法) ナイカ(ヤクブツリヨウホウ)

View File

@ -0,0 +1,7 @@
"001","A01","A","20141113","20141114","","一般内科","イツパンナイカ"
"001","A02","A","20141113","20141114","腫瘍","腫瘍科","シユヨウカ"
"001","A03","A","20141113","20141114","腫内","腫瘍内科","シユヨウナイカ"
"001","A04","A","20141113","20141114","腫疼","腫瘍内科(疼痛緩和)","シユヨウナイカ(トウツウカンワ)"
"001","A05","A","20141113","20141114","血腫","血液・腫瘍内科","ケツエキ.シユヨウナイカ"
"001","A06","A","20141113","20141114","内循","内科(循環器)","ナイカ(ジユンカンキ)"
"001","999","A","","","あいうえ","あいうえおかきくけこあいうえおかきくけこ","アイウエオカキクケコアイウエオカキクケコケコ"
1 001 A01 A 20141113 20141114 一般内科 イツパンナイカ
2 001 A02 A 20141113 20141114 腫瘍 腫瘍科 シユヨウカ
3 001 A03 A 20141113 20141114 腫内 腫瘍内科 シユヨウナイカ
4 001 A04 A 20141113 20141114 腫疼 腫瘍内科(疼痛緩和) シユヨウナイカ(トウツウカンワ)
5 001 A05 A 20141113 20141114 血腫 血液・腫瘍内科 ケツエキ.シユヨウナイカ
6 001 A06 A 20141113 20141114 内循 内科(循環器) ナイカ(ジユンカンキ)
7 001 999 A あいうえ あいうえおかきくけこあいうえおかきくけこ アイウエオカキクケコアイウエオカキクケコケコ

View File

@ -0,0 +1,6 @@
"001","A01","A","20141113","20141114","","",""
"001","A02","A","20141113","20141114","腫瘍","腫瘍科","シユヨウカ"
"001","A03","A","20141113","20141114","腫内","腫瘍内科","シユヨウナイカ"
"001","A04","A","20141113","20141114","腫疼","腫瘍内科(疼痛緩和)","シユヨウナイカ(トウツウカンワ)"
"001","A05","A","20141113","20141114","内循","内科(循環器)","ナイカ(ジユンカンキ)"
"001","A06","A","20141113","20141114","血腫","血液・腫瘍内科","ケツエキ.シユヨウナイカ"
1 001 A01 A 20141113 20141114
2 001 A02 A 20141113 20141114 腫瘍 腫瘍科 シユヨウカ
3 001 A03 A 20141113 20141114 腫内 腫瘍内科 シユヨウナイカ
4 001 A04 A 20141113 20141114 腫疼 腫瘍内科(疼痛緩和) シユヨウナイカ(トウツウカンワ)
5 001 A05 A 20141113 20141114 内循 内科(循環器) ナイカ(ジユンカンキ)
6 001 A06 A 20141113 20141114 血腫 血液・腫瘍内科 ケツエキ.シユヨウナイカ

View File

@ -0,0 +1,7 @@
"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_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"
"A01","","","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse"
"A02","シユヨウカ","腫瘍","腫瘍科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse"
"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse"
"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse"
"A05","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse"
"A06","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse"
1 trt_course_cd trt_course_name_kana trt_course_name_abb trt_course_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
2 A01 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:59:56 clsComTrtCourse
3 A02 シユヨウカ 腫瘍 腫瘍科 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:59:56 clsComTrtCourse
4 A03 シユヨウナイカ 腫内 腫瘍内科 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:59:56 clsComTrtCourse
5 A04 シユヨウナイカ(トウツウカンワ) 腫疼 腫瘍内科(疼痛緩和) 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:59:56 clsComTrtCourse
6 A05 ナイカ(ジユンカンキ) 内循 内科(循環器) 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:59:56 clsComTrtCourse
7 A06 ケツエキ.シユヨウナイカ 血腫 血液・腫瘍内科 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:59:56 clsComTrtCourse

View File

@ -0,0 +1,7 @@
"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_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"
"A01","イツパンナイカ","","一般内科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse"
"A02","シユヨウカ","腫瘍","腫瘍科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse"
"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse"
"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse"
"A05","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse"
"A06","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse"
1 trt_course_cd trt_course_name_kana trt_course_name_abb trt_course_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
2 A01 イツパンナイカ 一般内科 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:54:31 clsComTrtCourse
3 A02 シユヨウカ 腫瘍 腫瘍科 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:54:31 clsComTrtCourse
4 A03 シユヨウナイカ 腫内 腫瘍内科 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:54:31 clsComTrtCourse
5 A04 シユヨウナイカ(トウツウカンワ) 腫疼 腫瘍内科(疼痛緩和) 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:54:31 clsComTrtCourse
6 A05 ケツエキ.シユヨウナイカ 血腫 血液・腫瘍内科 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:54:31 clsComTrtCourse
7 A06 ナイカ(ジユンカンキ) 内循 内科(循環器) 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 8:54:31 clsComTrtCourse

View File

@ -0,0 +1,8 @@
"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_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"
"A01","","","","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper"
"A02","シユヨウカ","腫瘍","腫瘍科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper"
"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper"
"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","20171020","20230512","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/11 09:16:56","com_trt_course_mapper"
"A05","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper"
"A06","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper"
"A07","ナイカ(ヤクブツリヨウホウ)","内薬","内科(薬物療法)","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:16:56","com_trt_course_mapper","2017/10/20 9:16:56","com_trt_course_mapper"
1 trt_course_cd trt_course_name_kana trt_course_name_abb trt_course_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
2 A01 20171020 20230512 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 9:16:56 com_trt_course_mapper
3 A02 シユヨウカ 腫瘍 腫瘍科 20171020 20230512 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 9:16:56 com_trt_course_mapper
4 A03 シユヨウナイカ 腫内 腫瘍内科 20171020 20230512 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 9:16:56 com_trt_course_mapper
5 A04 シユヨウナイカ(トウツウカンワ) 腫疼 腫瘍内科(疼痛緩和) 20171020 20171020 20230512 NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2023/05/11 09:16:56 com_trt_course_mapper
6 A05 ナイカ(ジユンカンキ) 内循 内科(循環器) 20171020 20230512 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 9:16:56 com_trt_course_mapper
7 A06 ケツエキ.シユヨウナイカ 血腫 血液・腫瘍内科 20171020 20230512 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2017/10/20 9:16:56 com_trt_course_mapper
8 A07 ナイカ(ヤクブツリヨウホウ) 内薬 内科(薬物療法) 20230512 NULL NULL NULL NULL NULL NULL 2017/10/20 9:16:56 com_trt_course_mapper 2017/10/20 9:16:56 com_trt_course_mapper

View File

@ -0,0 +1,8 @@
"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_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"
"999","アイウエオカキクケコアイウエオカキクケコケコ","あいうえ","あいうえおかきくけこあいうえおかきくけこ","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper"
"A01","イツパンナイカ","","一般内科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper"
"A02","シユヨウカ","腫瘍","腫瘍科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper"
"A03","シユヨウナイカ","腫内","腫瘍内科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper"
"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper"
"A05","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper"
"A06","ナイカ(ジユンカンキ)","内循","内科(循環器)","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper"
1 trt_course_cd trt_course_name_kana trt_course_name_abb trt_course_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
2 999 アイウエオカキクケコアイウエオカキクケコケコ あいうえ あいうえおかきくけこあいうえおかきくけこ 20230512 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 com_trt_course_mapper 2017/10/20 8:54:31 com_trt_course_mapper
3 A01 イツパンナイカ 一般内科 20230512 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 com_trt_course_mapper 2017/10/20 8:54:31 com_trt_course_mapper
4 A02 シユヨウカ 腫瘍 腫瘍科 20230512 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 com_trt_course_mapper 2017/10/20 8:54:31 com_trt_course_mapper
5 A03 シユヨウナイカ 腫内 腫瘍内科 20230512 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 com_trt_course_mapper 2017/10/20 8:54:31 com_trt_course_mapper
6 A04 シユヨウナイカ(トウツウカンワ) 腫疼 腫瘍内科(疼痛緩和) 20230512 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 com_trt_course_mapper 2017/10/20 8:54:31 com_trt_course_mapper
7 A05 ケツエキ.シユヨウナイカ 血腫 血液・腫瘍内科 20230512 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 com_trt_course_mapper 2017/10/20 8:54:31 com_trt_course_mapper
8 A06 ナイカ(ジユンカンキ) 内循 内科(循環器) 20230512 NULL NULL NULL NULL NULL NULL 2017/10/20 8:54:31 com_trt_course_mapper 2017/10/20 8:54:31 com_trt_course_mapper

View File

@ -0,0 +1,7 @@
"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_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"
"A01","","","","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper"
"A02","シユヨウカ","腫瘍","腫瘍科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper"
"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper"
"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper"
"A05","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper"
"A06","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper"
1 trt_course_cd trt_course_name_kana trt_course_name_abb trt_course_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
2 A01 20171020 20230512 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2023/05/12 8:59:56 com_trt_course_mapper
3 A02 シユヨウカ 腫瘍 腫瘍科 20171020 20230512 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2023/05/12 8:59:56 com_trt_course_mapper
4 A03 シユヨウナイカ 腫内 腫瘍内科 20171020 20230512 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2023/05/12 8:59:56 com_trt_course_mapper
5 A04 シユヨウナイカ(トウツウカンワ) 腫疼 腫瘍内科(疼痛緩和) 20171020 20230512 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2023/05/12 8:59:56 com_trt_course_mapper
6 A05 ナイカ(ジユンカンキ) 内循 内科(循環器) 20171020 20230512 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2023/05/12 8:59:56 com_trt_course_mapper
7 A06 ケツエキ.シユヨウナイカ 血腫 血液・腫瘍内科 20171020 20230512 NULL NULL NULL NULL NULL 2017/10/20 8:54:31 clsComTrtCourse 2023/05/12 8:59:56 com_trt_course_mapper

View File

@ -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_trt_course_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 TestComTrtCourseMapper:
"""レイアウト区分001: 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_trt_course_insert.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_trt_course', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_trt_course_mapper.ComTrtCourseMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_trt_course_mapper.ComTrtCourseMapper, 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_trt_course_insert.csv'))
primary_keys = [f"'{primary_key['trt_course_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_trt_course WHERE trt_course_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 ['regist_ymd', 'sys_regist_date', 'sys_update_date']:
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_trt_course_update.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_trt_course', {'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_trt_course_before_update.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_trt_course',
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_trt_course_mapper.ComTrtCourseMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_trt_course_mapper.ComTrtCourseMapper, 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_trt_course_update.csv'))
primary_keys = [f"'{primary_key['trt_course_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_trt_course WHERE trt_course_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_trt_course_delete.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_trt_course', {'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_trt_course_before_delete.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_trt_course',
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_trt_course_mapper.ComTrtCourseMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_trt_course_mapper.ComTrtCourseMapper, 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_trt_course_delete.csv'))
primary_keys = [f"'{primary_key['trt_course_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_trt_course WHERE trt_course_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}が、期待値以降であること'