mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-28 03:46:06 -05:00 
			
		
		
		
	bugfix, tests
This commit is contained in:
		| @@ -164,7 +164,7 @@ class SavedViewSerializer(serializers.ModelSerializer): | |||||||
|         else: |         else: | ||||||
|             rules_data = None |             rules_data = None | ||||||
|         super(SavedViewSerializer, self).update(instance, validated_data) |         super(SavedViewSerializer, self).update(instance, validated_data) | ||||||
|         if rules_data: |         if rules_data is not None: | ||||||
|             SavedViewFilterRule.objects.filter(saved_view=instance).delete() |             SavedViewFilterRule.objects.filter(saved_view=instance).delete() | ||||||
|             for rule_data in rules_data: |             for rule_data in rules_data: | ||||||
|                 SavedViewFilterRule.objects.create( |                 SavedViewFilterRule.objects.create( | ||||||
|   | |||||||
| @@ -4,12 +4,11 @@ import tempfile | |||||||
| from unittest import mock | from unittest import mock | ||||||
|  |  | ||||||
| from django.contrib.auth.models import User | from django.contrib.auth.models import User | ||||||
| from pathvalidate import ValidationError |  | ||||||
| from rest_framework.test import APITestCase | from rest_framework.test import APITestCase | ||||||
| from whoosh.writing import AsyncWriter | from whoosh.writing import AsyncWriter | ||||||
|  |  | ||||||
| from documents import index | from documents import index | ||||||
| from documents.models import Document, Correspondent, DocumentType, Tag | from documents.models import Document, Correspondent, DocumentType, Tag, SavedView | ||||||
| from documents.tests.utils import DirectoriesMixin | from documents.tests.utils import DirectoriesMixin | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -18,8 +17,8 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): | |||||||
|     def setUp(self): |     def setUp(self): | ||||||
|         super(TestDocumentApi, self).setUp() |         super(TestDocumentApi, self).setUp() | ||||||
|  |  | ||||||
|         user = User.objects.create_superuser(username="temp_admin") |         self.user = User.objects.create_superuser(username="temp_admin") | ||||||
|         self.client.force_login(user=user) |         self.client.force_login(user=self.user) | ||||||
|  |  | ||||||
|     def testDocuments(self): |     def testDocuments(self): | ||||||
|  |  | ||||||
| @@ -515,3 +514,87 @@ class TestDocumentApi(DirectoriesMixin, APITestCase): | |||||||
|         self.assertFalse(meta['has_archive_version']) |         self.assertFalse(meta['has_archive_version']) | ||||||
|         self.assertGreater(len(meta['original_metadata']), 0) |         self.assertGreater(len(meta['original_metadata']), 0) | ||||||
|         self.assertIsNone(meta['archive_metadata']) |         self.assertIsNone(meta['archive_metadata']) | ||||||
|  |  | ||||||
|  |     def test_saved_views(self): | ||||||
|  |         u1 = User.objects.create_user("user1") | ||||||
|  |         u2 = User.objects.create_user("user2") | ||||||
|  |  | ||||||
|  |         v1 = SavedView.objects.create(user=u1, name="test1", sort_field="", show_on_dashboard=False, show_in_sidebar=False) | ||||||
|  |         v2 = SavedView.objects.create(user=u2, name="test2", sort_field="", show_on_dashboard=False, show_in_sidebar=False) | ||||||
|  |         v3 = SavedView.objects.create(user=u2, name="test3", sort_field="", show_on_dashboard=False, show_in_sidebar=False) | ||||||
|  |  | ||||||
|  |         response = self.client.get("/api/saved_views/") | ||||||
|  |         self.assertEqual(response.status_code, 200) | ||||||
|  |         self.assertEqual(response.data['count'], 0) | ||||||
|  |  | ||||||
|  |         self.assertEqual(self.client.get(f"/api/saved_views/{v1.id}/").status_code, 404) | ||||||
|  |  | ||||||
|  |         self.client.force_login(user=u1) | ||||||
|  |  | ||||||
|  |         response = self.client.get("/api/saved_views/") | ||||||
|  |         self.assertEqual(response.status_code, 200) | ||||||
|  |         self.assertEqual(response.data['count'], 1) | ||||||
|  |  | ||||||
|  |         self.assertEqual(self.client.get(f"/api/saved_views/{v1.id}/").status_code, 200) | ||||||
|  |  | ||||||
|  |         self.client.force_login(user=u2) | ||||||
|  |  | ||||||
|  |         response = self.client.get("/api/saved_views/") | ||||||
|  |         self.assertEqual(response.status_code, 200) | ||||||
|  |         self.assertEqual(response.data['count'], 2) | ||||||
|  |  | ||||||
|  |         self.assertEqual(self.client.get(f"/api/saved_views/{v1.id}/").status_code, 404) | ||||||
|  |  | ||||||
|  |     def test_create_update_patch(self): | ||||||
|  |  | ||||||
|  |         u1 = User.objects.create_user("user1") | ||||||
|  |  | ||||||
|  |         view = { | ||||||
|  |             "name": "test", | ||||||
|  |             "show_on_dashboard": True, | ||||||
|  |             "show_in_sidebar": True, | ||||||
|  |             "sort_field": "created2", | ||||||
|  |             "filter_rules": [ | ||||||
|  |                 { | ||||||
|  |                     "rule_type": 4, | ||||||
|  |                     "value": "test" | ||||||
|  |                 } | ||||||
|  |             ] | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         response = self.client.post("/api/saved_views/", view, format='json') | ||||||
|  |         self.assertEqual(response.status_code, 201) | ||||||
|  |  | ||||||
|  |         v1 = SavedView.objects.get(name="test") | ||||||
|  |         self.assertEqual(v1.sort_field, "created2") | ||||||
|  |         self.assertEqual(v1.filter_rules.count(), 1) | ||||||
|  |         self.assertEqual(v1.user, self.user) | ||||||
|  |  | ||||||
|  |         response = self.client.patch(f"/api/saved_views/{v1.id}/", { | ||||||
|  |             "show_in_sidebar": False | ||||||
|  |         }, format='json') | ||||||
|  |  | ||||||
|  |         v1 = SavedView.objects.get(id=v1.id) | ||||||
|  |         self.assertEqual(response.status_code, 200) | ||||||
|  |         self.assertFalse(v1.show_in_sidebar) | ||||||
|  |         self.assertEqual(v1.filter_rules.count(), 1) | ||||||
|  |  | ||||||
|  |         view['filter_rules'] = [{ | ||||||
|  |             "rule_type": 12, | ||||||
|  |             "value": "secret" | ||||||
|  |         }] | ||||||
|  |  | ||||||
|  |         response = self.client.put(f"/api/saved_views/{v1.id}/", view, format='json') | ||||||
|  |         self.assertEqual(response.status_code, 200) | ||||||
|  |  | ||||||
|  |         v1 = SavedView.objects.get(id=v1.id) | ||||||
|  |         self.assertEqual(v1.filter_rules.count(), 1) | ||||||
|  |         self.assertEqual(v1.filter_rules.first().value, "secret") | ||||||
|  |  | ||||||
|  |         view['filter_rules'] = [] | ||||||
|  |  | ||||||
|  |         response = self.client.put(f"/api/saved_views/{v1.id}/", view, format='json') | ||||||
|  |         self.assertEqual(response.status_code, 200) | ||||||
|  |  | ||||||
|  |         v1 = SavedView.objects.get(id=v1.id) | ||||||
|  |         self.assertEqual(v1.filter_rules.count(), 0) | ||||||
|   | |||||||
| @@ -1,6 +1,9 @@ | |||||||
| from django.test import TestCase | from django.test import TestCase | ||||||
|  |  | ||||||
|  | from documents import index | ||||||
| from documents.index import JsonFormatter | from documents.index import JsonFormatter | ||||||
|  | from documents.models import Document | ||||||
|  | from documents.tests.utils import DirectoriesMixin | ||||||
|  |  | ||||||
|  |  | ||||||
| class JsonFormatterTest(TestCase): | class JsonFormatterTest(TestCase): | ||||||
| @@ -12,3 +15,21 @@ class JsonFormatterTest(TestCase): | |||||||
|         self.assertListEqual(self.formatter.format([]), []) |         self.assertListEqual(self.formatter.format([]), []) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestAutoComplete(DirectoriesMixin, TestCase): | ||||||
|  |  | ||||||
|  |     def test_auto_complete(self): | ||||||
|  |  | ||||||
|  |         doc1 = Document.objects.create(title="doc1", checksum="A", content="test test2 test3") | ||||||
|  |         doc2 = Document.objects.create(title="doc2", checksum="B", content="test test2") | ||||||
|  |         doc3 = Document.objects.create(title="doc3", checksum="C", content="test2") | ||||||
|  |  | ||||||
|  |         index.add_or_update_document(doc1) | ||||||
|  |         index.add_or_update_document(doc2) | ||||||
|  |         index.add_or_update_document(doc3) | ||||||
|  |  | ||||||
|  |         ix = index.open_index() | ||||||
|  |  | ||||||
|  |         self.assertListEqual(index.autocomplete(ix, "tes"), [b"test3", b"test", b"test2"]) | ||||||
|  |         self.assertListEqual(index.autocomplete(ix, "tes", limit=3), [b"test3", b"test", b"test2"]) | ||||||
|  |         self.assertListEqual(index.autocomplete(ix, "tes", limit=1), [b"test3"]) | ||||||
|  |         self.assertListEqual(index.autocomplete(ix, "tes", limit=0), []) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 jonaswinkler
					jonaswinkler