def test_validate_sobject__injection(self): ms = MappingStep(sf_object="Test__c", fields=["Name"], action="insert") assert ms._validate_sobject( CaseInsensitiveDict({"npsp__Test__c": { "createable": True }}), lambda obj: f"npsp__{obj}", DataOperationType.INSERT, ) assert ms.sf_object == "npsp__Test__c"
def test_validate_and_inject_namespace__fls(self, mock_field, mock_sobject): ms = MappingStep(sf_object="Test__c", fields=["Field__c"], action=DataOperationType.INSERT) org_config = mock.Mock() org_config.salesforce_client.describe.return_value = { "sobjects": [{ "name": "Test__c", "createable": True }] } org_config.salesforce_client.Test__c.describe.return_value = { "fields": [{ "name": "Field__c", "createable": True }] } assert ms.validate_and_inject_namespace(org_config, "ns", DataOperationType.INSERT) ms._validate_sobject.assert_called_once_with( CaseInsensitiveDict( {"Test__c": { "name": "Test__c", "createable": True }}), None, DataOperationType.INSERT, ) ms._validate_field_dict.assert_has_calls([ mock.call( {"Field__c": { "name": "Field__c", "createable": True }}, {"Field__c": "Field__c"}, None, False, DataOperationType.INSERT, ), mock.call( {"Field__c": { "name": "Field__c", "createable": True }}, {}, None, False, DataOperationType.INSERT, ), ])
def test_validate_field_dict__fls_checks(self): ms = MappingStep( sf_object="Account", fields=["Id", "Name", "Website"], action=DataOperationType.INSERT, ) assert ms._validate_field_dict( CaseInsensitiveDict({ "Name": { "createable": True }, "Website": { "createable": True } }), ms.fields_, None, False, DataOperationType.INSERT, ) assert not ms._validate_field_dict( CaseInsensitiveDict({ "Name": { "createable": True }, "Website": { "createable": False } }), ms.fields_, None, False, DataOperationType.INSERT, )
def test_validate_field_dict__drop_missing(self): ms = MappingStep( sf_object="Account", fields=["Id", "Name", "Website"], action=DataOperationType.INSERT, ) assert ms._validate_field_dict( describe=CaseInsensitiveDict( {"Name": {"createable": True}, "Website": {"createable": False}} ), field_dict=ms.fields_, inject=None, strip=None, drop_missing=True, data_operation_type=DataOperationType.INSERT, ) assert ms.fields_ == {"Id": "Id", "Name": "Name"}
def test_validate_field_dict__injection(self): ms = MappingStep( sf_object="Account", fields=["Id", "Name", "Test__c"], action=DataOperationType.INSERT, ) assert ms._validate_field_dict( describe=CaseInsensitiveDict( {"Name": {"createable": True}, "npsp__Test__c": {"createable": True}} ), field_dict=ms.fields_, inject=lambda field: f"npsp__{field}", strip=None, drop_missing=False, data_operation_type=DataOperationType.INSERT, ) assert ms.fields_ == {"Id": "Id", "Name": "Name", "npsp__Test__c": "Test__c"}
def test_validate_field_dict__drop_missing(self): ms = MappingStep(sf_object="Account", fields=["Id", "Name", "Website"], action="insert") assert ms._validate_field_dict( CaseInsensitiveDict({ "Name": { "createable": True }, "Website": { "createable": False } }), ms.fields_, None, True, DataOperationType.INSERT, ) assert ms.fields_ == {"Id": "Id", "Name": "Name"}
def test_validate_field_dict__injection_duplicate_fields(self): ms = MappingStep(sf_object="Account", fields=["Id", "Name", "Test__c"], action="insert") assert ms._validate_field_dict( CaseInsensitiveDict({ "Name": { "createable": True }, "npsp__Test__c": { "createable": True }, "Test__c": { "createable": True }, }), ms.fields_, lambda field: f"npsp__{field}", False, DataOperationType.INSERT, ) assert ms.fields_ == {"Id": "Id", "Name": "Name", "Test__c": "Test__c"}
def test_validate_and_inject_namespace__injection_lookups( self, mock_field, mock_sobject ): ms = parse_from_yaml( StringIO( """Insert Accounts: sf_object: Account table: Account fields: - Name lookups: Lookup__c: table: Stuff""" ) )["Insert Accounts"] org_config = mock.Mock() org_config.salesforce_client.describe.return_value = { "sobjects": [{"name": "Account", "createable": True}] } org_config.salesforce_client.Account.describe.return_value = { "fields": [ {"name": "Name", "createable": True}, {"name": "ns__Lookup__c", "updateable": False, "createable": True}, ] } assert ms.validate_and_inject_namespace( org_config, "ns", DataOperationType.INSERT, inject_namespaces=True ) ms._validate_sobject.assert_called_once_with( CaseInsensitiveDict({"Account": {"name": "Account", "createable": True}}), mock.ANY, # local function def DataOperationType.INSERT, ) ms._validate_field_dict.assert_has_calls( [ mock.call( { "Name": {"name": "Name", "createable": True}, "ns__Lookup__c": { "name": "ns__Lookup__c", "updateable": False, "createable": True, }, }, ms.fields, mock.ANY, # local function def. mock.ANY, # local function def. False, DataOperationType.INSERT, ), mock.call( { "Name": {"name": "Name", "createable": True}, "ns__Lookup__c": { "name": "ns__Lookup__c", "updateable": False, "createable": True, }, }, ms.lookups, mock.ANY, # local function def. mock.ANY, # local function def. False, DataOperationType.INSERT, ), ] )