From 6cc2ef5ca02ce643bfba38b65a8a7d9850e3c8bf Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Fri, 7 Apr 2023 08:47:33 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20DatFile=E3=82=AF=E3=83=A9=E3=82=B9?= =?UTF-8?q?=E3=82=92=E4=BD=BF=E3=81=A3=E3=81=A6=E3=83=86=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/ultmarc/dat_insert.py | 4 +- .../src/batch/ultmarc/datfile.py | 4 +- .../table_mapper/test_com_alma_mapper.py | 49 ++++++++++--------- .../tests/testing_utility.py | 10 ++-- 4 files changed, 34 insertions(+), 33 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py b/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py index a0884a00..96463ed5 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/dat_insert.py @@ -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() diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/datfile.py b/ecs/jskult-batch-daily/src/batch/ultmarc/datfile.py index 589d7eb3..a934a468 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/datfile.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/datfile.py @@ -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: diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/test_com_alma_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/test_com_alma_mapper.py index 3d0b31d8..0ae580b6 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/test_com_alma_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/test_com_alma_mapper.py @@ -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) diff --git a/ecs/jskult-batch-daily/tests/testing_utility.py b/ecs/jskult-batch-daily/tests/testing_utility.py index 3ede232f..540b8ad0 100644 --- a/ecs/jskult-batch-daily/tests/testing_utility.py +++ b/ecs/jskult-batch-daily/tests/testing_utility.py @@ -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]: