feat:ケースの追加・修正。ドキュメントコメントを追加

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2022-08-05 20:08:03 +09:00
parent e3cd0dbb10
commit 8373ccc456
2 changed files with 104 additions and 3 deletions

View File

@ -5,7 +5,14 @@ from src.salesforce.salesforce_api import SalesforceApiClient
class TestSalesforceApiClient:
def test_fetch_sf_count(self):
"""
Cases:
Salesforceからオブジェクトの件数が取得できること
Arranges:
SalesforceのAccountオブジェクトにレコードを作成する(手作業コード上では行わない)
Expects:
取得件数が1件以上になる
"""
soql = """SELECT
COUNT(Id)
FROM
@ -20,7 +27,14 @@ class TestSalesforceApiClient:
assert actual >= 1
def test_fetch_sf_data_one_record(self):
"""
Cases:
Salesforceからオブジェクトが取得できること
Arranges:
SalesforceのAccountオブジェクトにレコードを作成する(手作業コード上では行わない)
Expects:
オブジェクトが取得でき期待値と一致していること
"""
soql = """SELECT
Id,
Name,
@ -42,11 +56,42 @@ class TestSalesforceApiClient:
"""
sut = SalesforceApiClient()
expect = {
'Name': 'テスト取引先名1',
'CustomItem1__c': 'テスト',
'CustomItem2__c': 1.0,
'CustomItem3__c': True,
'CustomItem4__c': '01:15:00.000Z',
'CustomItem5__c': '1;2;3;4',
'CustomItem6__c': '改行ありの\r\nテスト\r\n項目です',
'CustomItem7__c': '2022-08-04',
'CustomItem8__c': '2022-08-04T03:00:00.000+0000',
}
actual = sut.fetch_sf_data(soql)
print(actual)
assert len(actual) >= 1
# Id, SystemModstamp, LastModifiedDateは自動生成なので、キーの有無だけ確認する
# Attributesも
assert 'Id' in actual[0].keys()
assert 'SystemModstamp' in actual[0].keys()
assert 'LastModifiedDate' in actual[0].keys()
assert 'attributes' in actual[0].keys()
del actual[0]['Id']
del actual[0]['SystemModstamp']
del actual[0]['LastModifiedDate']
del actual[0]['attributes']
assert dict(actual[0]) == expect
def test_raise_create_instance_cause_auth_failed(self, monkeypatch):
"""
Cases:
存在しないユーザを指定した場合エラーが発生すること
Arranges:
なし
Expects:
ユーザ認証でエラーが発生すること
"""
monkeypatch.setattr('src.salesforce.salesforce_api.CRM_USER_NAME', 'invalid_username')
with pytest.raises(Exception):
SalesforceApiClient()

View File

@ -6,6 +6,14 @@ from src.salesforce.soql_builder import SOQLBuilder
class TestSOQLBuilder:
def test_create_count_soql(self):
"""
Cases:
件数取得のSOQLが生成できること
Arranges:
SOQL生成用のパラメータを用意する
Expects:
期待値通りのSOQLが生成されること
"""
test_target_object_json = {
'object_name': 'Account',
'columns': [
@ -48,6 +56,14 @@ class TestSOQLBuilder:
assert actual.replace('\n', '').replace(' ', '') == expect.replace('\n', '').replace(' ', '')
def test_create_fetch_soql(self):
"""
Cases:
データ取得用のSOQLが生成できること
Arranges:
SOQL生成用のパラメータを用意する
Expects:
期待値通りのSOQLが生成されること
"""
test_target_object_json = {
'object_name': 'Account',
'columns': [
@ -102,3 +118,43 @@ class TestSOQLBuilder:
print('expect', expect)
assert actual.replace('\n', '').replace(' ', '') == expect.replace('\n', '').replace(' ', '')
def test_create_fetch_soql_no_columns(self):
"""
Cases:
データ取得用のSOQLがカラムがない状態で生成されること
Arranges:
SOQL生成用のパラメータを用意する
Expects:
取得対象のカラムがないSOQLが生成されること
"""
test_target_object_json = {
'object_name': 'Account',
'columns': []
}
test_last_fetch_datetime_json = {
'last_fetch_datetime_from': '1999-01-01T00:00:00.000Z',
'last_fetch_datetime_to': '2000-01-01T00:00:00.000Z',
}
execute_datetime = ExecuteDateTime()
target_object = TargetObject(test_target_object_json, execute_datetime)
test_last_fetch_datetime = LastFetchDatetime(test_last_fetch_datetime_json, execute_datetime)
sut = SOQLBuilder(target_object, test_last_fetch_datetime)
actual = sut.create_fetch_soql()
# TargetObjectのバリデーションで、columnsが空の場合はエラーになるため、本来は発生しない
expect = """SELECT
FROM
Account
WHERE
SystemModstamp > 1999-01-01T00:00:00.000Z AND
SystemModstamp <= 2000-01-01T00:00:00.000Z
"""
print('actual', actual)
print('expect', expect)
assert actual.replace('\n', '').replace(' ', '') == expect.replace('\n', '').replace(' ', '')