mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	bugfix, tests
This commit is contained in:
		@@ -164,7 +164,7 @@ class SavedViewSerializer(serializers.ModelSerializer):
 | 
			
		||||
        else:
 | 
			
		||||
            rules_data = None
 | 
			
		||||
        super(SavedViewSerializer, self).update(instance, validated_data)
 | 
			
		||||
        if rules_data:
 | 
			
		||||
        if rules_data is not None:
 | 
			
		||||
            SavedViewFilterRule.objects.filter(saved_view=instance).delete()
 | 
			
		||||
            for rule_data in rules_data:
 | 
			
		||||
                SavedViewFilterRule.objects.create(
 | 
			
		||||
 
 | 
			
		||||
@@ -4,12 +4,11 @@ import tempfile
 | 
			
		||||
from unittest import mock
 | 
			
		||||
 | 
			
		||||
from django.contrib.auth.models import User
 | 
			
		||||
from pathvalidate import ValidationError
 | 
			
		||||
from rest_framework.test import APITestCase
 | 
			
		||||
from whoosh.writing import AsyncWriter
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -18,8 +17,8 @@ class TestDocumentApi(DirectoriesMixin, APITestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        super(TestDocumentApi, self).setUp()
 | 
			
		||||
 | 
			
		||||
        user = User.objects.create_superuser(username="temp_admin")
 | 
			
		||||
        self.client.force_login(user=user)
 | 
			
		||||
        self.user = User.objects.create_superuser(username="temp_admin")
 | 
			
		||||
        self.client.force_login(user=self.user)
 | 
			
		||||
 | 
			
		||||
    def testDocuments(self):
 | 
			
		||||
 | 
			
		||||
@@ -515,3 +514,87 @@ class TestDocumentApi(DirectoriesMixin, APITestCase):
 | 
			
		||||
        self.assertFalse(meta['has_archive_version'])
 | 
			
		||||
        self.assertGreater(len(meta['original_metadata']), 0)
 | 
			
		||||
        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 documents import index
 | 
			
		||||
from documents.index import JsonFormatter
 | 
			
		||||
from documents.models import Document
 | 
			
		||||
from documents.tests.utils import DirectoriesMixin
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class JsonFormatterTest(TestCase):
 | 
			
		||||
@@ -12,3 +15,21 @@ class JsonFormatterTest(TestCase):
 | 
			
		||||
        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