mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Cover this last bit
This commit is contained in:
		| @@ -28,6 +28,7 @@ from documents.caching import CACHE_50_MINUTES | ||||
| from documents.caching import CLASSIFIER_HASH_KEY | ||||
| from documents.caching import CLASSIFIER_MODIFIED_KEY | ||||
| from documents.caching import CLASSIFIER_VERSION_KEY | ||||
| from documents.data_models import DocumentSource | ||||
| from documents.models import Correspondent | ||||
| from documents.models import CustomField | ||||
| from documents.models import CustomFieldInstance | ||||
| @@ -39,7 +40,10 @@ from documents.models import SavedView | ||||
| from documents.models import ShareLink | ||||
| from documents.models import StoragePath | ||||
| from documents.models import Tag | ||||
| from documents.models import Workflow | ||||
| from documents.models import WorkflowAction | ||||
| from documents.models import WorkflowTrigger | ||||
| from documents.signals.handlers import run_workflows | ||||
| from documents.tests.utils import DirectoriesMixin | ||||
| from documents.tests.utils import DocumentConsumeDelayMixin | ||||
|  | ||||
| @@ -1364,6 +1368,68 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): | ||||
|         self.assertEqual(overrides.filename, "simple.pdf") | ||||
|         self.assertEqual(overrides.custom_fields, {custom_field.id: None}) | ||||
|  | ||||
|     def test_upload_with_custom_fields_and_workflow(self): | ||||
|         """ | ||||
|         GIVEN: A document with a source file | ||||
|         WHEN: Upload the document with custom fields and a workflow | ||||
|         THEN: Metadata is set correctly, mimicking what happens in the real consumer plugin | ||||
|         """ | ||||
|         self.consume_file_mock.return_value = celery.result.AsyncResult( | ||||
|             id=str(uuid.uuid4()), | ||||
|         ) | ||||
|  | ||||
|         cf = CustomField.objects.create( | ||||
|             name="stringfield", | ||||
|             data_type=CustomField.FieldDataType.STRING, | ||||
|         ) | ||||
|         cf2 = CustomField.objects.create( | ||||
|             name="intfield", | ||||
|             data_type=CustomField.FieldDataType.INT, | ||||
|         ) | ||||
|  | ||||
|         trigger1 = WorkflowTrigger.objects.create( | ||||
|             type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION, | ||||
|             sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}", | ||||
|         ) | ||||
|         action1 = WorkflowAction.objects.create( | ||||
|             assign_title="Doc title", | ||||
|         ) | ||||
|         action1.assign_custom_fields.add(cf2) | ||||
|         action1.assign_custom_fields_values = {cf2.id: 123} | ||||
|         action1.save() | ||||
|  | ||||
|         w1 = Workflow.objects.create( | ||||
|             name="Workflow 1", | ||||
|             order=0, | ||||
|         ) | ||||
|         w1.triggers.add(trigger1) | ||||
|         w1.actions.add(action1) | ||||
|         w1.save() | ||||
|  | ||||
|         with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f: | ||||
|             response = self.client.post( | ||||
|                 "/api/documents/post_document/", | ||||
|                 { | ||||
|                     "document": f, | ||||
|                     "custom_fields": [cf.id], | ||||
|                 }, | ||||
|             ) | ||||
|  | ||||
|         self.assertEqual(response.status_code, status.HTTP_200_OK) | ||||
|  | ||||
|         self.consume_file_mock.assert_called_once() | ||||
|  | ||||
|         input_doc, overrides = self.get_last_consume_delay_call_args() | ||||
|  | ||||
|         new_overrides, msg = run_workflows( | ||||
|             trigger_type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION, | ||||
|             document=input_doc, | ||||
|             logging_group=None, | ||||
|             overrides=overrides, | ||||
|         ) | ||||
|         overrides.update(new_overrides) | ||||
|         self.assertEqual(overrides.custom_fields, {cf.id: None, cf2.id: 123}) | ||||
|  | ||||
|     def test_upload_with_webui_source(self): | ||||
|         """ | ||||
|         GIVEN: A document with a source file | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 shamoon
					shamoon