1818
1919
2020@pytest .mark .parametrize (
21- "modified_date_lt, modified_date_gt, dir_name_field, expected_query" ,
21+ "modified_date_lt, modified_date_gt, dir_name_field, extra_soql_condition, expected_query" ,
2222 [
2323 (
2424 None ,
2525 None ,
2626 None ,
27- "SELECT LinkedEntityId, ContentDocumentId, LinkedEntity.Type FROM ContentDocumentLink WHERE ContentDocumentId IN (SELECT Id FROM ContentDocument )" ,
27+ None ,
28+ "SELECT LinkedEntityId, ContentDocumentId, LinkedEntity.Type FROM ContentDocumentLink "
29+ "WHERE LinkedEntityId IN (SELECT Id FROM User)" ,
2830 ),
2931 (
3032 datetime (
3941 ),
4042 None ,
4143 None ,
44+ None ,
4245 (
4346 "SELECT LinkedEntityId, ContentDocumentId, LinkedEntity.Type "
4447 "FROM ContentDocumentLink "
45- "WHERE ContentDocumentId IN (SELECT Id FROM ContentDocument WHERE ContentDocument.ContentModifiedDate < 2024-01-01T00:00:00Z)"
48+ "WHERE LinkedEntityId IN (SELECT Id FROM User) "
49+ "AND ContentDocumentId IN ("
50+ "SELECT Id FROM ContentDocument WHERE ContentDocument.ContentModifiedDate < 2024-01-01T00:00:00Z"
51+ ")"
4652 ),
4753 ),
4854 (
6773 tzinfo = timezone .utc ,
6874 ),
6975 None ,
76+ None ,
7077 (
7178 "SELECT LinkedEntityId, ContentDocumentId, LinkedEntity.Type "
7279 "FROM ContentDocumentLink "
73- "WHERE ContentDocumentId IN ("
74- "SELECT Id FROM ContentDocument WHERE ContentDocument.ContentModifiedDate < 2024-01-01T00:00:00Z AND ContentDocument.ContentModifiedDate > 2023-01-01T00:00:00Z"
80+ "WHERE LinkedEntityId IN (SELECT Id FROM User) "
81+ "AND ContentDocumentId IN ("
82+ "SELECT Id "
83+ "FROM ContentDocument "
84+ "WHERE ContentDocument.ContentModifiedDate < 2024-01-01T00:00:00Z "
85+ "AND ContentDocument.ContentModifiedDate > 2023-01-01T00:00:00Z"
86+ ")"
87+ ),
88+ ),
89+ (
90+ datetime (
91+ year = 2024 ,
92+ month = 1 ,
93+ day = 1 ,
94+ hour = 0 ,
95+ minute = 0 ,
96+ second = 0 ,
97+ microsecond = 0 ,
98+ tzinfo = timezone .utc ,
99+ ),
100+ datetime (
101+ year = 2023 ,
102+ month = 1 ,
103+ day = 1 ,
104+ hour = 0 ,
105+ minute = 0 ,
106+ second = 0 ,
107+ microsecond = 0 ,
108+ tzinfo = timezone .utc ,
109+ ),
110+ "DirField" ,
111+ None ,
112+ (
113+ "SELECT LinkedEntityId, ContentDocumentId, LinkedEntity.Type, DirField "
114+ "FROM ContentDocumentLink "
115+ "WHERE LinkedEntityId IN (SELECT Id FROM User) "
116+ "AND ContentDocumentId IN ("
117+ "SELECT Id "
118+ "FROM ContentDocument "
119+ "WHERE ContentDocument.ContentModifiedDate < 2024-01-01T00:00:00Z "
120+ "AND ContentDocument.ContentModifiedDate > 2023-01-01T00:00:00Z"
75121 ")"
76122 ),
77123 ),
97143 tzinfo = timezone .utc ,
98144 ),
99145 "DirField" ,
146+ "MyCustomField__c = 'MyValue'" ,
100147 (
101148 "SELECT LinkedEntityId, ContentDocumentId, LinkedEntity.Type, DirField "
102149 "FROM ContentDocumentLink "
103- "WHERE ContentDocumentId IN ("
104- "SELECT Id FROM ContentDocument WHERE ContentDocument.ContentModifiedDate < 2024-01-01T00:00:00Z AND ContentDocument.ContentModifiedDate > 2023-01-01T00:00:00Z"
150+ "WHERE LinkedEntityId IN (SELECT Id FROM User WHERE MyCustomField__c = 'MyValue') "
151+ "AND ContentDocumentId IN ("
152+ "SELECT Id "
153+ "FROM ContentDocument "
154+ "WHERE ContentDocument.ContentModifiedDate < 2024-01-01T00:00:00Z "
155+ "AND ContentDocument.ContentModifiedDate > 2023-01-01T00:00:00Z"
105156 ")"
106157 ),
107158 ),
@@ -111,6 +162,7 @@ def test_download_content_document_link_list_queries(
111162 modified_date_lt : datetime | None ,
112163 modified_date_gt : datetime | None ,
113164 dir_name_field : str | None ,
165+ extra_soql_condition : str | None ,
114166 expected_query : str ,
115167):
116168 client = Mock ()
@@ -123,6 +175,7 @@ def test_download_content_document_link_list_queries(
123175 modified_date_lt = modified_date_lt ,
124176 modified_date_gt = modified_date_gt ,
125177 dir_name_field = dir_name_field ,
178+ extra_soql_condition = extra_soql_condition ,
126179 )
127180 salesforce = Salesforce (archivist_obj = archivist_obj , client = client , max_api_usage_percent = 50 )
128181 salesforce .download_content_document_link_list (
@@ -136,9 +189,10 @@ def test_download_content_document_link_list_queries(
136189
137190
138191@pytest .mark .parametrize (
139- "modified_date_lt, modified_date_gt, expected_query" ,
192+ "modified_date_lt, modified_date_gt, extra_soql_condition, expected_query" ,
140193 [
141194 (
195+ None ,
142196 None ,
143197 None ,
144198 "SELECT Id, ParentId, BodyLength, Name FROM Attachment" ,
@@ -155,6 +209,7 @@ def test_download_content_document_link_list_queries(
155209 tzinfo = timezone .utc ,
156210 ),
157211 None ,
212+ None ,
158213 (
159214 "SELECT Id, ParentId, BodyLength, Name "
160215 "FROM Attachment "
@@ -182,17 +237,47 @@ def test_download_content_document_link_list_queries(
182237 microsecond = 0 ,
183238 tzinfo = timezone .utc ,
184239 ),
240+ None ,
185241 (
186242 "SELECT Id, ParentId, BodyLength, Name "
187243 "FROM Attachment "
188244 "WHERE LastModifiedDate < 2024-01-01T00:00:00Z AND LastModifiedDate > 2023-01-01T00:00:00Z"
189245 ),
190246 ),
247+ (
248+ datetime (
249+ year = 2024 ,
250+ month = 1 ,
251+ day = 1 ,
252+ hour = 0 ,
253+ minute = 0 ,
254+ second = 0 ,
255+ microsecond = 0 ,
256+ tzinfo = timezone .utc ,
257+ ),
258+ datetime (
259+ year = 2023 ,
260+ month = 1 ,
261+ day = 1 ,
262+ hour = 0 ,
263+ minute = 0 ,
264+ second = 0 ,
265+ microsecond = 0 ,
266+ tzinfo = timezone .utc ,
267+ ),
268+ "MyCustomField__c = 'MyValue'" ,
269+ (
270+ "SELECT Id, ParentId, BodyLength, Name "
271+ "FROM Attachment "
272+ "WHERE LastModifiedDate < 2024-01-01T00:00:00Z AND LastModifiedDate > 2023-01-01T00:00:00Z AND MyCustomField__c = 'MyValue'"
273+ ),
274+ ),
191275 ],
192276)
193277def test_download_attachment_list_queries (
194278 modified_date_lt : datetime | None ,
195279 modified_date_gt : datetime | None ,
280+ extra_soql_condition : str | None ,
196281 expected_query : str ,
197282):
198283 client = Mock ()
@@ -204,6 +289,7 @@ def test_download_attachment_list_queries(
204289 obj_type = "Attachment" ,
205290 modified_date_lt = modified_date_lt ,
206291 modified_date_gt = modified_date_gt ,
292+ extra_soql_condition = extra_soql_condition ,
207293 )
208294 salesforce = Salesforce (archivist_obj = archivist_obj , client = client , max_api_usage_percent = 50 )
209295 salesforce .download_attachment_list (
0 commit comments