From 5a5ffcd25ff4151ef5640aaaa1b17a0eb6593143 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Fri, 7 Apr 2023 09:58:22 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=82=AF=E3=82=A8=E3=83=AA=E4=BD=9C?= =?UTF-8?q?=E6=88=90=E5=87=A6=E7=90=86=E3=82=82=E5=85=B1=E9=80=9A=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/test_com_alma_mapper.py | 4 +- .../tests/testing_utility.py | 37 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) 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 0ae580b6..b5bf2f1b 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 @@ -8,6 +8,7 @@ from src.batch.ultmarc.utmp_tables.ultmarc_table_mapper_factory import \ UltmarcTableMapperFactory from src.db.database import Database from tests.testing_utility import (assert_table_results, + create_delete_sql_with_parameter, create_ultmarc_common_column_names, create_ultmarc_common_column_values, create_ultmarc_test_csv, get_module_name) @@ -55,7 +56,8 @@ class TestComAlmaMapper: '"004","001","A","20141113","20141114","北大","1","2014/11/21 22:53","VANLOAD",,,"2014/11/21 22:53"' ) # テスト対象のデータをDBから削除 - self.db.execute("DELETE FROM src05.com_alma WHERE alma_cd = '001'") + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma', {'alma_cd': '001'}) + self.db.execute(delete_sql, delete_parameter) # sut(system under test)作成 for line in test_dat_file: diff --git a/ecs/jskult-batch-daily/tests/testing_utility.py b/ecs/jskult-batch-daily/tests/testing_utility.py index 540b8ad0..f9d1aa2f 100644 --- a/ecs/jskult-batch-daily/tests/testing_utility.py +++ b/ecs/jskult-batch-daily/tests/testing_utility.py @@ -43,6 +43,43 @@ def create_ultmarc_common_column_names() -> list[str]: ] +def create_insert_sql_with_parameter(table_name: str, column_names: list[str], test_data: list[str]) -> tuple[str, dict]: + """INSERT文と登録値のパラメータを返す + + Args: + table_name (str): スキーマ完全修飾のテーブル名(例:src05.com_alma) + column_names (list[str]): カラム名のリスト + test_data (list[str]): 値のリスト + + Returns: + tuple[str, dict]: [0]→INSERT文,[1]→値のパラメータ + """ + placeholders = ','.join([f':{column_name}' for column_name in column_names]) + insert_sql = f"INSERT INTO {table_name} ({','.join(column_names)}) VALUES({placeholders})" + parameter = {k: v for k, v in zip(column_names, test_data)} + + return insert_sql, parameter + + +def create_delete_sql_with_parameter(table_name: str, delete_parameter: dict[str, str]): + """DELETE文と削除条件値のパラメータを返す + + Args: + table_name (str): スキーマ完全修飾のテーブル名(例:src05.com_alma) + delete_parameter (dict[str, str]): 削除条件に使用するカラム名と値の辞書 + + Returns: + tuple[str, dict]: [0]→DELETE文,[1]→値のパラメータ + """ + where_clause_list = [] + for k in delete_parameter: + where_clause_list.append(f'{k} = :{k}') + where_clauses = ' AND '.join(where_clause_list) + delete_sql = f"DELETE FROM {table_name} WHERE {where_clauses}" + + return delete_sql, delete_parameter + + def create_ultmarc_common_column_values(expect_datetime: datetime, expect_date_str: str, module_name: str) -> list: """アルトマークテーブル共通のカラムを作成