feat:ケースの追加・修正。ドキュメントコメントを追加
This commit is contained in:
parent
e3cd0dbb10
commit
8373ccc456
@ -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()
|
||||
|
||||
@ -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(' ', '')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user