Merge pull request #201 feature-NEWDWH2021-1011-COM_MASTERS2 into develop

This commit is contained in:
野間亜希子 2023-05-17 11:46:00 +09:00
commit d0884e30c9
85 changed files with 2581 additions and 9 deletions

View File

@ -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

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_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

View File

@ -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

View File

@ -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

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_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

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_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

View File

@ -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

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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_先端医療機器

View File

@ -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"
1 008 0067 A 20141113 20141114 シヨウカキナイカ.ケツエキナイカ 1 A02 117
2 008 0068 A 20141113 20141114 緩和内科 カンワ 1 A79 030
3 008 0069 A 20141113 20141114 小児外科、成育外科、小腸移植外科 シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ 2 L81 010
4 008 0070 C 20141113 20141114 腎臓・血液透析科 ジンゾウ.ケツエキトウセキカ 1 A08 052
5 008 0071 A 20141113 20141114 糖尿病内分泌・甲状腺科 トウニヨウビヨウナイブンピ.コウジヨウセンカ 1 A06 020
6 008 0072 A 20141113 20141114 血液・膠原病科 ケツエキ.コウゲンビヨウカ 1 A05 137
7 008 0073 A 20141113 20141114 内科(内分泌・代謝) ナイカ(ナイブンピ.タイシヤ) 1 A05 144

View File

@ -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"
1 008 0067 A 20141113 20141114 消化器内科・血液内科 シヨウカキナイカ.ケツエキナイカ 1 A02 117
2 008 0068 A 20141113 20141114 緩和内科 カンワナイカ 1 A79 030
3 008 0069 A 20141113 20141114 小児外科、成育外科、小腸移植外科 シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ 1 L81 010
4 008 0070 A 20141113 20141114 腎臓・血液透析科 ジンゾウ.ケツエキトウセキカ 1 A07 052
5 008 0071 A 20141113 20141114 糖尿病内分泌・甲状腺科 トウニヨウビヨウナイブンピ.コウジヨウセンカ 1 A06 019
6 008 0072 A 20141113 20141114 血液・膠原病科 ケツエキ.コウゲンビヨウカ 1 A05 137
7 008 9999 A あいうえおかきくけこあいうえおかきくけこあいうえお アイウエオアイウエオアイウエオアイウエオアイウ 9 999 999

View File

@ -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"
1 008 0067 A 20141113 20141114 シヨウカキナイカ.ケツエキナイカ 1 A02 117
2 008 0068 A 20141113 20141114 緩和内科 カンワ 1 A79 030
3 008 0069 A 20141113 20141114 小児外科、成育外科、小腸移植外科 シヨウニゲカ.セイイクゲカ.シヨウチヨウイシヨクゲカ 2 L81 010
4 008 0070 A 20141113 20141114 腎臓・血液透析科 ジンゾウ.ケツエキトウセキカ 1 A08 052
5 008 0071 A 20141113 20141114 糖尿病内分泌・甲状腺科 トウニヨウビヨウナイブンピ.コウジヨウセンカ 1 A06 020
6 008 0072 A 20141113 20141114 血液・膠原病科 ケツエキ.コウゲンビヨウカ 1 A05 137

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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

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_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}が、期待値以降であること'

View File

@ -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","社会福祉施設附属病院"
1 011 01 A 20141113 20141114
2 011 02 A 20141113 20141114 大学附属病院
3 011 03 A 20141113 20141114 大学附属病院分院
4 011 04 A 20141113 20141114 歯科病院(歯学部附属病院)
5 011 05 C 20141113 20141114 国立療養所
6 011 06 A 20141113 20141114 高次救急医療機関
7 011 07 A 20141113 20141114 社会福祉施設附属病院

View File

@ -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","","","あいうえおかきくけこあいうえおかきくけこあいうえお"
1 011 01 A 20141113 20141114 病院(大学HP以外)
2 011 02 A 20141113 20141114 大学附属病院
3 011 03 A 20141113 20141114 大学附属病院分院
4 011 04 A 20141113 20141114 歯科病院(歯学部附属病院)
5 011 05 A 20141113 20141114 高次救急医療機関
6 011 06 A 国立療養所
7 011 99 A あいうえおかきくけこあいうえおかきくけこあいうえお

View File

@ -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","高次救急医療機関"
1 011 01 A 20141113 20141114
2 011 02 A 20141113 20141114 大学附属病院
3 011 03 A 20141113 20141114 大学附属病院分院
4 011 04 A 20141113 20141114 歯科病院(歯学部附属病院)
5 011 05 A 20141113 20141114 国立療養所
6 011 06 A 20141113 20141114 高次救急医療機関

View File

@ -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"
1 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
2 01 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:26:40 clsComInstDiv
3 02 大学附属病院 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:26:40 clsComInstDiv
4 03 大学附属病院分院 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:26:40 clsComInstDiv
5 04 歯科病院(歯学部附属病院) 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:26:40 clsComInstDiv
6 05 国立療養所 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:26:40 clsComInstDiv
7 06 高次救急医療機関 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:26:40 clsComInstDiv

View File

@ -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"
1 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
2 01 病院(大学HP以外) 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:17:48 clsComInstDiv
3 02 大学附属病院 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:17:48 clsComInstDiv
4 03 大学附属病院分院 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:17:48 clsComInstDiv
5 04 歯科病院(歯学部附属病院) 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:17:48 clsComInstDiv
6 05 高次救急医療機関 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:17:48 clsComInstDiv
7 06 国立療養所 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:17:48 clsComInstDiv
8 99 ああああ 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:17:48 clsComInstDiv

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 99 ああああ 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 17:17:48 clsComInstDiv 2017/10/20 17:17:48 clsComInstDiv

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_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}が、期待値以降であること'

View File

@ -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","独法国"
1 007 101 A 20141113 20141114
2 007 102 C 20141113 20141114 文部
3 007 103 A 20141113 20141114 財務
4 007 104 A 20141113 20141114 警察
5 007 105 A 20141113 20141114 総務
6 007 106 A 20141113 20141114 防衛
7 007 107 A 20141113 20141114 独法国

View File

@ -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","","","あいうえおかきくけこあいうえおかきくけこあいうえお"
1 007 101 A 20141113 20141114 厚生
2 007 102 A 20141113 20141114 文部
3 007 103 A 20141113 20141114 財務
4 007 104 A 20141113 20141114 総務
5 007 105 A 20141113 20141114 警察
6 007 106 A 20141113 20141114 防衛
7 007 999 A あいうえおかきくけこあいうえおかきくけこあいうえお

View File

@ -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","防衛"
1 007 101 A 20141113 20141114
2 007 102 A 20141113 20141114 文部
3 007 103 A 20141113 20141114 財務
4 007 104 A 20141113 20141114 警察
5 007 105 A 20141113 20141114 総務
6 007 106 A 20141113 20141114 防衛

View File

@ -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"
1 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
2 101 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:43:41 clsComManage
3 102 文部 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:43:41 clsComManage
4 103 財務 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:43:41 clsComManage
5 104 警察 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:43:41 clsComManage
6 105 総務 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:43:41 clsComManage
7 106 防衛 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:43:41 clsComManage

View File

@ -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"
1 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
2 101 厚生 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:39:03 clsComManage
3 102 文部 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:39:03 clsComManage
4 103 財務 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:39:03 clsComManage
5 104 総務 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:39:03 clsComManage
6 105 警察 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:39:03 clsComManage
7 106 防衛 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:39:03 clsComManage
8 999 あいうえおかきくけこ 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:39:03 clsComManage

View File

@ -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"
1 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
2 101 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:51:00 com_manage_mapper
3 102 文部 20171020 20171020 20230514 NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:51:00 com_manage_mapper
4 103 財務 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:51:00 com_manage_mapper
5 104 警察 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:51:00 com_manage_mapper
6 105 総務 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:51:00 com_manage_mapper
7 106 防衛 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:51:00 com_manage_mapper
8 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

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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

View File

@ -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"
1 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
2 101 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:43:41 com_manage_mapper
3 102 文部 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:43:41 com_manage_mapper
4 103 財務 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:43:41 com_manage_mapper
5 104 警察 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:43:41 com_manage_mapper
6 105 総務 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:43:41 com_manage_mapper
7 106 防衛 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2023/05/14 15:43:41 com_manage_mapper
8 999 あいうえおかきくけこ 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 15:39:03 clsComManage 2017/10/20 15:39:03 clsComManage

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_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}が、期待値以降であること'

View File

@ -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","誉会長"
1 005 011 A 20141113 20141114 理事長
2 005 012 A 20141113 20141114 理事
3 005 013 A 20141113 20141114 副理事
4 005 014 A 20141113 20141114
5 005 015 A 20141113 20141114 常任理
6 005 016 C 20141113 20141114 誉理事
7 005 021 A 20141113 20141114 誉会長

View File

@ -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","","","あいうえおかきくけこあいうえおかきくけこあいうえお"
1 005 011 A 20141113 20141114 理事長
2 005 012 A 20141113 20141114 理事
3 005 013 A 20141113 20141114 副理事
4 005 014 A 20141113 20141114 常務理
5 005 015 A 20141113 20141114 常任理
6 005 016 A 20141113 20141114 誉理事
7 005 999 A あいうえおかきくけこあいうえおかきくけこあいうえお

View File

@ -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","誉理事"
1 005 011 A 20141113 20141114 理事
2 005 012 A 20141113 20141114 理事長
3 005 013 A 20141113 20141114 副理事
4 005 014 A 20141113 20141114
5 005 015 A 20141113 20141114 常任理
6 005 016 A 20141113 20141114 誉理事

View File

@ -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"
1 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
2 011 理事 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:55:50 clsComPost
3 012 理事長 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:55:50 clsComPost
4 013 副理事 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:55:50 clsComPost
5 014 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:55:50 clsComPost
6 015 常任理 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:55:50 clsComPost
7 016 誉理事 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:55:50 clsComPost

View File

@ -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"
1 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
2 011 理事長 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:51:28 clsComPost
3 012 理事 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:51:28 clsComPost
4 013 副理事 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:51:28 clsComPost
5 014 常務理 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:51:28 clsComPost
6 015 常任理 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:51:28 clsComPost
7 016 誉理事 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2017/10/20 10:51:28 clsComPost

View File

@ -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"
1 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
2 011 理事長 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 11:00:25 com_post_mapper
3 012 理事 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 11:00:25 com_post_mapper
4 013 副理事 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 11:00:25 com_post_mapper
5 014 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 11:00:25 com_post_mapper
6 015 常任理 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 11:00:25 com_post_mapper
7 016 誉理事 20171020 20171020 20230514 NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 11:00:25 com_post_mapper
8 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

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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

View File

@ -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"
1 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
2 011 理事 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 10:55:50 com_post_mapper
3 012 理事長 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 10:55:50 com_post_mapper
4 013 副理事 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 10:55:50 com_post_mapper
5 014 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 10:55:50 com_post_mapper
6 015 常任理 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 10:55:50 com_post_mapper
7 016 誉理事 20171020 20230514 NULL NULL NULL NULL NULL 2017/10/20 10:51:28 clsComPost 2023/05/14 10:55:50 com_post_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_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}が、期待値以降であること'

View File

@ -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",""
1 009 001 A 20141113 20141114
2 009 002 A 20141113 20141114 解剖
3 009 003 A 20141113 20141114 生理
4 009 004 C 20141113 20141114 生化
5 009 005 A 20141113 20141114 病理
6 009 006 A 20141113 20141114 薬理
7 009 007 A 20141113 20141114

View File

@ -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","","","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ"
1 009 001 A 20141113 20141114 医史
2 009 002 A 20141113 20141114 解剖
3 009 003 A 20141113 20141114 生理
4 009 004 A 20141113 20141114 生化
5 009 005 A 20141113 20141114 薬理
6 009 006 A 20141113 20141114 病理
7 009 999 A あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ

View File

@ -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","薬理"
1 009 001 A 20141113 20141114
2 009 002 A 20141113 20141114 解剖
3 009 003 A 20141113 20141114 生理
4 009 004 A 20141113 20141114 生化
5 009 005 A 20141113 20141114 病理
6 009 006 A 20141113 20141114 薬理

View File

@ -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"
1 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
2 001 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:39:30 clsComSosiety
3 002 解剖 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:39:30 clsComSosiety
4 003 生理 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:39:30 clsComSosiety
5 004 生化 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:39:30 clsComSosiety
6 005 病理 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:39:30 clsComSosiety
7 006 薬理 20171020 20171020 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:39:30 clsComSosiety

View File

@ -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"
1 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
2 001 医史 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:30:39 clsComSosiety
3 002 解剖 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:30:39 clsComSosiety
4 003 生理 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:30:39 clsComSosiety
5 004 生化 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:30:39 clsComSosiety
6 005 薬理 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:30:39 clsComSosiety
7 006 病理 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:30:39 clsComSosiety
8 999 あいう 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:30:39 clsComSosiety

View File

@ -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"
1 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
2 001 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:50:50 com_sosiety_mapper
3 002 解剖 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:50:50 com_sosiety_mapper
4 003 生理 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:50:50 com_sosiety_mapper
5 004 生化 20171020 20171020 20230515 NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:50:50 com_sosiety_mapper
6 005 病理 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:50:50 com_sosiety_mapper
7 006 薬理 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:50:50 com_sosiety_mapper
8 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

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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

View File

@ -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"
1 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
2 001 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:39:30 com_sosiety_mapper
3 002 解剖 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:39:30 com_sosiety_mapper
4 003 生理 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:39:30 com_sosiety_mapper
5 004 生化 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:39:30 com_sosiety_mapper
6 005 病理 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:39:30 com_sosiety_mapper
7 006 薬理 20171020 20230515 NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2023/05/15 16:39:30 com_sosiety_mapper
8 999 あいう 20171020 NULL NULL NULL NULL NULL NULL 2017/10/20 16:30:39 clsComSosiety 2017/10/20 16:30:39 clsComSosiety

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_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}が、期待値以降であること'

View File

@ -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","耳鼻咽喉科専門医"
1 010 0001 A 20141113 20141114
2 010 0002 A 20141113 20141114 整形外科専門医
3 010 0003 A 20141113 20141114 麻酔科専門医
4 010 0004 A 20141113 20141114 産婦人科専門医
5 010 0005 C 20141113 20141114 放射線科専門医
6 010 0006 A 20141113 20141114 眼科専門医
7 010 0007 A 20141113 20141114 耳鼻咽喉科専門医

View File

@ -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","","","あいうえおかきくけこあいうえおかきくけこあいうえお"
1 010 0001 A 20141113 20141114 皮膚科専門医
2 010 0002 A 20141113 20141114 整形外科専門医
3 010 0003 A 20141113 20141114 麻酔科専門医
4 010 0004 A 20141113 20141114 産婦人科専門医
5 010 0005 A 20141113 20141114 眼科専門医
6 010 0006 A 20141113 20141114 放射線科専門医
7 010 9999 A あいうえおかきくけこあいうえおかきくけこあいうえお

View File

@ -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","眼科専門医"
1 010 0001 A 20141113 20141114
2 010 0002 A 20141113 20141114 整形外科専門医
3 010 0003 A 20141113 20141114 麻酔科専門医
4 010 0004 A 20141113 20141114 産婦人科専門医
5 010 0005 A 20141113 20141114 放射線科専門医
6 010 0006 A 20141113 20141114 眼科専門医

View File

@ -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"
1 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
2 0001 20171024 20171024 NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:46:19 clsComSpLicens
3 0002 整形外科専門医 20171024 20171024 NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:46:19 clsComSpLicens
4 0003 麻酔科専門医 20171024 20171024 NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:46:19 clsComSpLicens
5 0004 産婦人科専門医 20171024 20171024 NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:46:19 clsComSpLicens
6 0005 放射線科専門医 20171024 20171024 NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:46:19 clsComSpLicens
7 0006 眼科専門医 20171024 20171024 NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:46:19 clsComSpLicens

View File

@ -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"
1 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
2 0001 皮膚科専門医 20171024 NULL NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:03:03 clsComSpLicens
3 0002 整形外科専門医 20171024 NULL NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:03:03 clsComSpLicens
4 0003 麻酔科専門医 20171024 NULL NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:03:03 clsComSpLicens
5 0004 産婦人科専門医 20171024 NULL NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:03:03 clsComSpLicens
6 0005 眼科専門医 20171024 NULL NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:03:03 clsComSpLicens
7 0006 放射線科専門医 20171024 NULL NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:03:03 clsComSpLicens
8 9999 ああああ 20171024 NULL NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:03:03 clsComSpLicens

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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

View File

@ -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"
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 9999 ああああ 20171024 NULL NULL NULL NULL NULL NULL 2017/10/24 12:03:03 clsComSpLicens 2017/10/24 12:03:03 clsComSpLicens

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_specialst_license_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 TestComSpecialstLicenseMapper:
"""レイアウト区分010: 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_specialst_license_insert.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_specialst_license', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_specialst_license_mapper.ComSpecialstLicenseMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_specialst_license_mapper.ComSpecialstLicenseMapper, 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_specialst_license_insert.csv'))
primary_keys = [f"'{primary_key['specialst_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_specialst_license WHERE specialst_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_specialst_license_update.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_specialst_license', {'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_specialst_license_before_update.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_specialst_license',
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_specialst_license_mapper.ComSpecialstLicenseMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_specialst_license_mapper.ComSpecialstLicenseMapper, 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_specialst_license_update.csv'))
primary_keys = [f"'{primary_key['specialst_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_specialst_license WHERE specialst_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_specialst_license_delete.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_specialst_license', {'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_specialst_license_before_delete.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_specialst_license',
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_specialst_license_mapper.ComSpecialstLicenseMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_specialst_license_mapper.ComSpecialstLicenseMapper, 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_specialst_license_delete.csv'))
primary_keys = [f"'{primary_key['specialst_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_specialst_license WHERE specialst_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

@ -0,0 +1,7 @@
"prefc_cd","prefc_name","prefc_name_kana","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"01","北海道","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc"
"02","","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc"
"03","岩手県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc"
"04","秋田県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc"
"05","宮城県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc"
"06","山形県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 15:15:17","clsMstPrefc"
1 prefc_cd prefc_name prefc_name_kana delete_flg filler_1 filler_2 filler_3 filler_4 filler_5 regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 01 北海道 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 15:15:17 clsMstPrefc
3 02 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 15:15:17 clsMstPrefc
4 03 岩手県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 15:15:17 clsMstPrefc
5 04 秋田県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 15:15:17 clsMstPrefc
6 05 宮城県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 15:15:17 clsMstPrefc
7 06 山形県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 15:15:17 clsMstPrefc

View File

@ -0,0 +1,7 @@
"prefc_cd","prefc_name","prefc_name_kana","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"01","北海道","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc"
"02","青森県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc"
"03","岩手県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc"
"04","宮城県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc"
"05","秋田県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc"
"06","山形県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2017/10/20 14:57:57","clsMstPrefc"
1 prefc_cd prefc_name prefc_name_kana delete_flg filler_1 filler_2 filler_3 filler_4 filler_5 regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 01 北海道 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 14:57:57 clsMstPrefc
3 02 青森県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 14:57:57 clsMstPrefc
4 03 岩手県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 14:57:57 clsMstPrefc
5 04 宮城県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 14:57:57 clsMstPrefc
6 05 秋田県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 14:57:57 clsMstPrefc
7 06 山形県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2017/10/20 14:57:57 clsMstPrefc

View File

@ -0,0 +1,8 @@
"prefc_cd","prefc_name","prefc_name_kana","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"01","北海道","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper"
"02","","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper"
"03","岩手県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper"
"04","秋田県","","1","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper"
"05","宮城県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper"
"06","山形県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:22:55","mst_prefc_mapper"
"07","福島県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 15:22:55","mst_prefc_mapper","2023/05/14 15:22:55","mst_prefc_mapper"
1 prefc_cd prefc_name prefc_name_kana delete_flg filler_1 filler_2 filler_3 filler_4 filler_5 regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 01 北海道 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:22:55 mst_prefc_mapper
3 02 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:22:55 mst_prefc_mapper
4 03 岩手県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:22:55 mst_prefc_mapper
5 04 秋田県 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:22:55 mst_prefc_mapper
6 05 宮城県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:22:55 mst_prefc_mapper
7 06 山形県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:22:55 mst_prefc_mapper
8 07 福島県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2023/05/14 15:22:55 mst_prefc_mapper 2023/05/14 15:22:55 mst_prefc_mapper

View File

@ -0,0 +1,8 @@
"prefc_cd","prefc_name","prefc_name_kana","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"01","北海道","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper"
"02","青森県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper"
"03","岩手県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper"
"04","宮城県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper"
"05","秋田県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper"
"06","山形県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper"
"99","あいうえお","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 14:57:57","mst_prefc_mapper","2023/05/14 14:57:57","mst_prefc_mapper"
1 prefc_cd prefc_name prefc_name_kana delete_flg filler_1 filler_2 filler_3 filler_4 filler_5 regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 01 北海道 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2023/05/14 14:57:57 mst_prefc_mapper 2023/05/14 14:57:57 mst_prefc_mapper
3 02 青森県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2023/05/14 14:57:57 mst_prefc_mapper 2023/05/14 14:57:57 mst_prefc_mapper
4 03 岩手県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2023/05/14 14:57:57 mst_prefc_mapper 2023/05/14 14:57:57 mst_prefc_mapper
5 04 宮城県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2023/05/14 14:57:57 mst_prefc_mapper 2023/05/14 14:57:57 mst_prefc_mapper
6 05 秋田県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2023/05/14 14:57:57 mst_prefc_mapper 2023/05/14 14:57:57 mst_prefc_mapper
7 06 山形県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2023/05/14 14:57:57 mst_prefc_mapper 2023/05/14 14:57:57 mst_prefc_mapper
8 99 あいうえお 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2023/05/14 14:57:57 mst_prefc_mapper 2023/05/14 14:57:57 mst_prefc_mapper

View File

@ -0,0 +1,7 @@
"prefc_cd","prefc_name","prefc_name_kana","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"01","北海道","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper"
"02","","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper"
"03","岩手県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper"
"04","秋田県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper"
"05","宮城県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper"
"06","山形県","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 14:57:57","clsMstPrefc","2023/05/14 15:15:17","mst_prefc_mapper"
1 prefc_cd prefc_name prefc_name_kana delete_flg filler_1 filler_2 filler_3 filler_4 filler_5 regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 01 北海道 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:15:17 mst_prefc_mapper
3 02 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:15:17 mst_prefc_mapper
4 03 岩手県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:15:17 mst_prefc_mapper
5 04 秋田県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:15:17 mst_prefc_mapper
6 05 宮城県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:15:17 mst_prefc_mapper
7 06 山形県 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2017/10/20 14:57:57 clsMstPrefc 2023/05/14 15:15:17 mst_prefc_mapper

View File

@ -0,0 +1,7 @@
"006","11","A","20141113","20141114","北海道","01"
"006","21","A","20141113","20141114","","02"
"006","22","A","20141113","20141114","岩手県","03"
"006","23","C","20141113","20141114","秋田県","04"
"006","24","A","20141113","20141114","宮城県","05"
"006","25","A","20141113","20141114","山形県","06"
"006","26","A","20141113","20141114","福島県","07"
1 006 11 A 20141113 20141114 北海道 01
2 006 21 A 20141113 20141114 02
3 006 22 A 20141113 20141114 岩手県 03
4 006 23 C 20141113 20141114 秋田県 04
5 006 24 A 20141113 20141114 宮城県 05
6 006 25 A 20141113 20141114 山形県 06
7 006 26 A 20141113 20141114 福島県 07

View File

@ -0,0 +1,7 @@
"006","11","A","20141113","20141114","北海道","01"
"006","21","A","20141113","20141114","青森県","02"
"006","22","A","20141113","20141114","岩手県","03"
"006","23","A","20141113","20141114","宮城県","04"
"006","24","A","20141113","20141114","秋田県","05"
"006","25","A","20141113","20141114","山形県","06"
"006","","A","","","あいうえお","99"
1 006 11 A 20141113 20141114 北海道 01
2 006 21 A 20141113 20141114 青森県 02
3 006 22 A 20141113 20141114 岩手県 03
4 006 23 A 20141113 20141114 宮城県 04
5 006 24 A 20141113 20141114 秋田県 05
6 006 25 A 20141113 20141114 山形県 06
7 006 A あいうえお 99

View File

@ -0,0 +1,6 @@
"006","11","A","20141113","20141114","北海道","01"
"006","21","A","20141113","20141114","","02"
"006","22","A","20141113","20141114","岩手県","03"
"006","23","A","20141113","20141114","秋田県","04"
"006","24","A","20141113","20141114","宮城県","05"
"006","25","A","20141113","20141114","山形県","06"
1 006 11 A 20141113 20141114 北海道 01
2 006 21 A 20141113 20141114 02
3 006 22 A 20141113 20141114 岩手県 03
4 006 23 A 20141113 20141114 秋田県 04
5 006 24 A 20141113 20141114 宮城県 05
6 006 25 A 20141113 20141114 山形県 06

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 mst_prefc_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 TestMstPrefcMapper:
"""レイアウト区分006: 都道府県マスタ"""
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:
都道府県マスタテーブルにレコードを登録する
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, 'mst_prefc_insert.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.mst_prefc', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: mst_prefc_mapper.MstPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is mst_prefc_mapper.MstPrefcMapper, 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_mst_prefc_insert.csv'))
primary_keys = [f"'{primary_key['prefc_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.mst_prefc WHERE prefc_cd IN ({','.join(primary_keys)})"
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['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:
都道府県マスタテーブルのレコードを更新する
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, 'mst_prefc_update.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.mst_prefc', {'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_mst_prefc_before_update.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.mst_prefc',
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: mst_prefc_mapper.MstPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is mst_prefc_mapper.MstPrefcMapper, 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_mst_prefc_update.csv'))
primary_keys = [f"'{primary_key['prefc_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.mst_prefc WHERE prefc_cd IN ({','.join(primary_keys)})"
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['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:
都道府県マスタテーブルのレコードを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, 'mst_prefc_delete.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.mst_prefc', {'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_mst_prefc_before_delete.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.mst_prefc',
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: mst_prefc_mapper.MstPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is mst_prefc_mapper.MstPrefcMapper, 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_mst_prefc_delete.csv'))
primary_keys = [f"'{primary_key['prefc_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.mst_prefc WHERE prefc_cd IN ({','.join(primary_keys)})"
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['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}が、期待値以降であること'