From d49188c1f0a5797eacf4882a83f4d1ef81f63207 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Fri, 7 Apr 2023 11:16:42 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AB=96=E7=90=86=E5=89=8A=E9=99=A4?= =?UTF-8?q?=E3=81=AE=E3=82=B1=E3=83=BC=E3=82=B9=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/test_com_alma_mapper.py | 87 ++++++++++++++++++- 1 file changed, 85 insertions(+), 2 deletions(-) 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 26c182b2..8b90bb8c 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 @@ -102,7 +102,7 @@ class TestComAlmaMapper: def test_update_record_one(self, expect_datetime: datetime, expect_date_str: str): """ Cases: - COM_出身校テーブルにレコードを1件更新する + COM_出身校テーブルのレコードを1件更新する Arranges: - CSVデータを用意する - 追加対象となるレコードを登録する @@ -163,7 +163,90 @@ class TestComAlmaMapper: # 実行日時 expect_row = ["001", "テスト大"] + create_ultmarc_common_column_values( regist_ymd=expect_date_str, - update_ymd=expect_date_str, + update_ymd=expect_date_str, # 更新日時が登録される + sys_regist_date=expect_datetime.replace(microsecond=0), + regist_prgm_id=module_name, + sys_update_date=datetime.now(), + update_prgm_id=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, line_number=i, ignore_col_name=['sys_update_date', 'sys_regist_date']) + # 動的日付項目の個別確認 + for actual_row, expect_row in zip(actual_rows, expect_rows): + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name == 'sys_regist_date': + assert actual_row[actual_col_name] == expect_row[expect_col_name], f'{actual_col_name}が、期待値の日時と一致すること' + if actual_col_name == 'sys_update_date': + assert actual_row[actual_col_name] < expect_row[expect_col_name], f'{actual_col_name}が、期待値の日時以前であること' + + def test_logical_delete_record_one(self, expect_datetime: datetime, expect_date_str: str): + """ + Cases: + COM_出身校テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意する + - 追加対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_config.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テストデータ1件作成 + test_dat_file = create_ultmarc_test_csv( + '"004","001","C","20141113","20141114","北大","1","2014/11/21 22:53","VANLOAD",,,"2014/11/21 22:53"' + ) + + # モジュール名 + module_name = get_module_name(com_alma_mapper) + # DBに登録するテストデータ + test_sql_data = ["001", "北大"] + create_ultmarc_common_column_values( + regist_ymd=expect_date_str, + sys_regist_date=expect_datetime.replace(microsecond=0), + regist_prgm_id=module_name, + sys_update_date=expect_datetime, + update_prgm_id=module_name + ) + + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テスト対象のデータをDBに登録 + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_alma', + self.table_columns, + test_sql_data + ) + self.db.execute(insert_sql, insert_parameter) + + # sut(system under test)作成 + for i, line in enumerate(test_dat_file, start=1): + 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, f'{i}行目: マッパークラスが期待通りか' + + # Act + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値となるモジュール名 + module_name = get_module_name(com_alma_mapper) + # 実行日時 + expect_row = ["001", "北大"] + create_ultmarc_common_column_values( + regist_ymd=expect_date_str, + delete_ymd=expect_date_str, # 削除日が登録される sys_regist_date=expect_datetime.replace(microsecond=0), regist_prgm_id=module_name, sys_update_date=datetime.now(),