mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
bugfix, tests
This commit is contained in:
parent
49be87fe37
commit
56204933b0
@ -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), [])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user