Merge pull request #62 feature-NEWDWH2021-643-execute_datetime into develop-6crm

This commit is contained in:
下田雅人 2022-08-16 15:30:17 +09:00
commit 03b4089fd3

View File

@ -0,0 +1,81 @@
import re
from datetime import datetime, timezone
from src.util.execute_datetime import ExecuteDateTime
class TestExecuteDateTime:
def test_constructor(self):
"""
Cases:
インスタンス生成テスト
UTC時刻が文字列で設定されるかのチェック
Arranges:
- 現在時刻の保持
- 期待される値の正規表現作成
Expects:
- 作成されたクラスが保持している時刻が期待値と一致すること
- 作成されたクラスが保持している時刻が正規表現と一致すること
"""
# Arranges
datetime_now = datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.000Z')
pattern = r'[12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.000Z'
# Expects
sut = ExecuteDateTime()
assert str(sut) == datetime_now
assert re.fullmatch(pattern, str(sut))
def test_to_path(self) -> str:
"""
Cases:
生成されたパスがYYYYMMDD/HHMMSSの形式で出力されること
Arranges:
- 現在時刻をパスに変換する
- 期待される値の正規表現作成
Expects:
- 戻り値が期待値と一致する
- 戻り値が正規表現と一致すること
"""
# Arranges
datetime_now_path = datetime.now(timezone.utc).strftime(
'%Y-%m-%dT%H:%M:%S.000Z').rstrip('000Z').translate(str.maketrans({'-': '/', 'T': '/', ':': None, '.': None}))
pattern = r'[12]\d{3}\/(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])\/([01][0-9]|2[0-3])[0-5][0-9][0-5][0-9]'
# Expects
sut = ExecuteDateTime()
actual = sut.to_path()
assert actual == datetime_now_path
assert re.fullmatch(pattern, actual)
def test_format_date(self) -> str:
"""
Cases:
生成されたパスがYYYYMMDDHHMMSSの形式で出力されること
Arranges:
- 現在時刻をパスに変換する
- 期待される値の正規表現作成
Expects:
- 戻り値が期待値と一致する
- 戻り値が正規表現と一致すること
"""
# Arranges
datetime_now_path = datetime.now(timezone.utc).strftime(
'%Y-%m-%dT%H:%M:%S.000Z').rstrip('000Z').translate(str.maketrans({'-': None, 'T': None, ':': None, '.': None}))
pattern = r'[12]\d{3}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])[0-5][0-9][0-5][0-9]'
# Expects
sut = ExecuteDateTime()
actual = sut.format_date()
assert actual == datetime_now_path
assert re.fullmatch(pattern, actual)