198 lines
6.6 KiB
Python
198 lines
6.6 KiB
Python
import pytest
|
|
|
|
from src.db.database import Database
|
|
from src.error.exceptions import BatchOperationException
|
|
from src.manager.jskult_hdke_tbl_manager import JskultHdkeTblManager
|
|
|
|
|
|
class TestJskultHdkeTblManager:
|
|
@pytest.fixture(scope='function', autouse=True)
|
|
def backup_hdke_tbl_record(self):
|
|
"""
|
|
テスト実行前にテーブルのバックアップを取得する。
|
|
テスト実行後にバックアップから復元する。
|
|
"""
|
|
# Setup
|
|
db = Database.get_instance()
|
|
db.connect()
|
|
backup_hdke_tbl = db.execute_select('SELECT * FROM src07.hdke_tbl')
|
|
db.execute('DELETE FROM src07.hdke_tbl')
|
|
|
|
yield
|
|
|
|
# Teardown
|
|
if len(backup_hdke_tbl) != 0:
|
|
db.execute('DELETE FROM src07.hdke_tbl')
|
|
db.execute("""
|
|
INSERT INTO src07.hdke_tbl
|
|
(syor_date, bch_actf, dump_sts_kbn, creater, create_date, updater, update_date)
|
|
VALUES
|
|
(:syor_date, :bch_actf, :dump_sts_kbn, CURRENT_USER(), CURRENT_TIMESTAMP(), NULL, NULL)
|
|
""", {
|
|
'syor_date': backup_hdke_tbl[0]['syor_date'],
|
|
'bch_actf': backup_hdke_tbl[0]['bch_actf'],
|
|
'dump_sts_kbn': backup_hdke_tbl[0]['dump_sts_kbn'],
|
|
})
|
|
db.disconnect()
|
|
|
|
def test_get_batch_statuses(self):
|
|
"""
|
|
日付テーブルから以下を取得できること
|
|
- 日次バッチ処理中フラグ
|
|
- dump取得状況区分
|
|
- 処理日(yyyy/mm/dd)
|
|
"""
|
|
# Arrange
|
|
# 日付テーブルを作成
|
|
db = Database.get_instance()
|
|
db.connect()
|
|
db.execute("""
|
|
INSERT INTO src07.hdke_tbl
|
|
(syor_date, bch_actf, dump_sts_kbn, creater, create_date, updater, update_date)
|
|
VALUES
|
|
('20250530', '1', '2', CURRENT_USER(), CURRENT_TIMESTAMP(), NULL, NULL)
|
|
""")
|
|
# Act
|
|
sut = JskultHdkeTblManager()
|
|
bch_actf, dump_sts_kbn, syor_date = sut.get_batch_statuses()
|
|
|
|
# Assert
|
|
assert bch_actf == '1'
|
|
assert dump_sts_kbn == '2'
|
|
assert syor_date == '2025/05/30'
|
|
|
|
def test_get_batch_statuses_raise_exception(self):
|
|
"""
|
|
日付テーブルのレコードがない場合、例外が送出されること
|
|
"""
|
|
# Arrange
|
|
# 日付テーブルを作成しない
|
|
# Act
|
|
sut = JskultHdkeTblManager()
|
|
with pytest.raises(BatchOperationException):
|
|
sut.get_batch_statuses()
|
|
|
|
def test_update_batch_process_start(self):
|
|
"""
|
|
日付テーブルの日次バッチ処理中フラグを1(処理中)に更新できること
|
|
"""
|
|
# Arrange
|
|
# 日付テーブルを作成
|
|
db = Database.get_instance()
|
|
db.connect()
|
|
db.execute("""
|
|
INSERT INTO src07.hdke_tbl
|
|
(syor_date, bch_actf, dump_sts_kbn, creater, create_date, updater, update_date)
|
|
VALUES
|
|
('20250530', '0', '2', CURRENT_USER(), CURRENT_TIMESTAMP(), NULL, NULL)
|
|
""")
|
|
# Act
|
|
sut = JskultHdkeTblManager()
|
|
sut.update_batch_process_start()
|
|
|
|
# Assert
|
|
actual_record = db.execute_select('SELECT * FROM src07.hdke_tbl')[0]
|
|
assert actual_record['bch_actf'] == '1'
|
|
assert actual_record['dump_sts_kbn'] == '2'
|
|
|
|
def test_update_batch_process_complete(self):
|
|
"""
|
|
日付テーブルを以下の通り更新できること
|
|
- 日次バッチ処理中フラグを0(未処理)に更新
|
|
- dump取得状態区分を0(未処理)に更新
|
|
"""
|
|
# Arrange
|
|
# 日付テーブルを作成
|
|
db = Database.get_instance()
|
|
db.connect()
|
|
db.execute("""
|
|
INSERT INTO src07.hdke_tbl
|
|
(syor_date, bch_actf, dump_sts_kbn, creater, create_date, updater, update_date)
|
|
VALUES
|
|
('20250530', '1', '2', CURRENT_USER(), CURRENT_TIMESTAMP(), NULL, NULL)
|
|
""")
|
|
# Act
|
|
sut = JskultHdkeTblManager()
|
|
sut.update_batch_process_complete()
|
|
|
|
# Assert
|
|
actual_record = db.execute_select('SELECT * FROM src07.hdke_tbl')[0]
|
|
assert actual_record['bch_actf'] == '0'
|
|
assert actual_record['dump_sts_kbn'] == '0'
|
|
|
|
def test_can_run_process_true(self):
|
|
"""
|
|
以下の条件の時、Trueが返却されること
|
|
- 日次バッチ処理中フラグが1(処理中)
|
|
- dump取得状態区分が2(正常終了)
|
|
"""
|
|
# Arrange
|
|
# 日付テーブルを作成
|
|
db = Database.get_instance()
|
|
db.connect()
|
|
db.execute("""
|
|
INSERT INTO src07.hdke_tbl
|
|
(syor_date, bch_actf, dump_sts_kbn, creater, create_date, updater, update_date)
|
|
VALUES
|
|
('20250530', '1', '2', CURRENT_USER(), CURRENT_TIMESTAMP(), NULL, NULL)
|
|
""")
|
|
# Act
|
|
sut = JskultHdkeTblManager()
|
|
actual = sut.can_run_process()
|
|
|
|
# Assert
|
|
assert actual is True
|
|
|
|
def test_can_run_process_false_because_bch_actf_off(self):
|
|
"""
|
|
日次バッチ処理中フラグが1ではないため、Falseが返却されること
|
|
"""
|
|
# Arrange
|
|
# 日付テーブルを作成
|
|
db = Database.get_instance()
|
|
db.connect()
|
|
db.execute("""
|
|
INSERT INTO src07.hdke_tbl
|
|
(syor_date, bch_actf, dump_sts_kbn, creater, create_date, updater, update_date)
|
|
VALUES
|
|
('20250530', '0', '2', CURRENT_USER(), CURRENT_TIMESTAMP(), NULL, NULL)
|
|
""")
|
|
# Act
|
|
sut = JskultHdkeTblManager()
|
|
actual = sut.can_run_process()
|
|
|
|
# Assert
|
|
assert actual is False
|
|
|
|
def test_can_run_process_false_because_dump_sts_kbn_not_complete(self):
|
|
"""
|
|
dump取得状態区分が2ではないため、Falseが返却されること
|
|
"""
|
|
# Arrange
|
|
# 日付テーブルを作成
|
|
db = Database.get_instance()
|
|
db.connect()
|
|
db.execute("""
|
|
INSERT INTO src07.hdke_tbl
|
|
(syor_date, bch_actf, dump_sts_kbn, creater, create_date, updater, update_date)
|
|
VALUES
|
|
('20250530', '1', '0', CURRENT_USER(), CURRENT_TIMESTAMP(), NULL, NULL)
|
|
""")
|
|
# Act
|
|
sut = JskultHdkeTblManager()
|
|
actual = sut.can_run_process()
|
|
|
|
# Assert
|
|
assert actual is False
|
|
|
|
def test_can_run_process_raise_exception(self):
|
|
"""
|
|
日付テーブルのレコードがない場合、例外が送出されること
|
|
"""
|
|
# Arrange
|
|
# 日付テーブルを作成しない
|
|
# Act
|
|
sut = JskultHdkeTblManager()
|
|
with pytest.raises(BatchOperationException):
|
|
sut.can_run_process()
|