feat: DatFileクラスを使ってテストするように修正

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2023-04-07 08:47:33 +09:00
parent e9dad1aecf
commit 6cc2ef5ca0
4 changed files with 34 additions and 33 deletions

View File

@ -56,7 +56,7 @@ def dat_insert_control():
mapper_class = mapper_factory.create(
line.layout_class,
line.record_id,
line.record,
line.records,
db
)
mapper_class.make_query()
@ -69,7 +69,7 @@ def dat_insert_control():
except Exception as e:
# TODO: ログちゃんとする
logger.warning(e)
record = line.record
record = line.records
log_message = ','.join([f'"{r}"' for r in record])
logger.warning(log_message)
dat_file.count_up_error()

View File

@ -5,12 +5,12 @@ from io import TextIOWrapper
class DatFileLine:
layout_class: str
record_id: str
record: list[str]
records: list[str]
def __init__(self, dat_line: list[str]) -> None:
self.layout_class = dat_line[0]
self.record_id = dat_line[1]
self.record = dat_line
self.records = dat_line
class DatFile:

View File

@ -51,35 +51,36 @@ class TestComAlmaMapper:
# 処理日設定
self.batch_config.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
# テストデータ1件作成
test_csv = create_ultmarc_test_csv(
test_dat_file = create_ultmarc_test_csv(
'"004","001","A","20141113","20141114","北大","1","2014/11/21 22:53","VANLOAD",,,"2014/11/21 22:53"'
)[0]
)
# テスト対象のデータをDBから削除
self.db.execute("DELETE FROM src05.com_alma WHERE alma_cd = '001'")
# sut(system under test)作成
layout_class = test_csv[0]
record_id = test_csv[1]
factory = UltmarcTableMapperFactory()
sut: com_alma_mapper.ComAlmaMapper = factory.create(
layout_class=layout_class,
record_id=record_id,
records=test_csv,
db=self.db
)
assert type(sut) is com_alma_mapper.ComAlmaMapper, 'マッパークラスが期待通りか'
for line in test_dat_file:
layout_class = line.layout_class
record_id = line.record_id
factory = UltmarcTableMapperFactory()
sut: com_alma_mapper.ComAlmaMapper = factory.create(
layout_class=layout_class,
record_id=record_id,
records=line.records,
db=self.db
)
assert type(sut) is com_alma_mapper.ComAlmaMapper, 'マッパークラスが期待通りか'
# Act
sut.make_query()
sut.execute_queries()
# Act
sut.make_query()
sut.execute_queries()
# Assert
# 期待値となるモジュール名
module_name = get_module_name(com_alma_mapper)
# 実行日時
expect_row = ["001", "北大"] + create_ultmarc_common_column_values(expect_datetime, expect_date_str, module_name)
expect_rows = [{c: r for c, r in zip(self.table_columns, expect_row)}]
actual_rows = self.db.execute_select("SELECT * FROM src05.com_alma WHERE alma_cd = '001'")
# Assert
# 期待値となるモジュール名
module_name = get_module_name(com_alma_mapper)
# 実行日時
expect_row = ["001", "北大"] + create_ultmarc_common_column_values(expect_datetime, expect_date_str, module_name)
expect_rows = [{c: r for c, r in zip(self.table_columns, expect_row)}]
actual_rows = self.db.execute_select("SELECT * FROM src05.com_alma WHERE alma_cd = '001'")
# 期待値検査
assert_table_results(actual_rows, expect_rows)
# 期待値検査
assert_table_results(actual_rows, expect_rows)

View File

@ -1,12 +1,13 @@
"""テスト用共通処理関数"""
import csv
import io
from datetime import datetime
from types import ModuleType
from src.batch.ultmarc.datfile import DatFile
def create_ultmarc_test_csv(*csv_rows: str) -> list[list[str]]:
def create_ultmarc_test_csv(*csv_rows: str) -> DatFile:
"""アルトマーク取込テストのCSVを作成
Args:
csv_rows (tuple[str]): CSV文字列のリスト
@ -16,10 +17,9 @@ def create_ultmarc_test_csv(*csv_rows: str) -> list[list[str]]:
string_io = io.StringIO()
string_io.writelines(csv_rows)
string_io.seek(0)
reader = csv.reader(string_io)
test_csv = [r for r in reader]
dat_file = DatFile(string_io)
return test_csv
return dat_file
def create_ultmarc_common_column_names() -> list[str]: