20
20
from .models import DOCUMENT_SEARCH_VECTOR , Document , DocumentRelease
21
21
from .sitemaps import DocsSitemap
22
22
from .templatetags .docs import get_all_doc_versions
23
- from .utils import get_doc_path
23
+ from .utils import get_doc_path , sanitize_for_trigram
24
24
25
25
26
26
class ModelsTests (TestCase ):
@@ -262,6 +262,21 @@ def test_get_doc_path(self):
262
262
path , filename = __file__ .rsplit (os .path .sep , 1 )
263
263
self .assertEqual (get_doc_path (Path (path ), filename ), None )
264
264
265
+ def test_sanitize_for_trigram (self ):
266
+ for query , sanitized_query in [
267
+ ("simple search" , "simple search" ),
268
+ ("Python Django -Flask" , "Python Django" ),
269
+ ('Python "Django Framework" -Flask' , "Python Django Framework" ),
270
+ ("Développement -'Framework Django' web" , "Developpement web" ),
271
+ ("Γλώσσα προγραμματισμού Python -'Flask και Django'" , 'Γλωσσα προγραμματισμου Python' ),
272
+ ("Pemrograman Python -'Flask dan Django' backend" , "Pemrograman Python backend" ),
273
+ ("Programmazione 'Python e Django' -Flask" , "Programmazione Python e Django" ),
274
+ ("Linguagem Python -'Django e Flask' web" , "Linguagem Python web" ),
275
+ ("Desarrollo Python -'Django y Flask' rápido" , "Desarrollo Python rapido" ),
276
+ ]:
277
+ with self .subTest (query = query ):
278
+ self .assertEqual (sanitize_for_trigram (query ), sanitized_query )
279
+
265
280
266
281
class UpdateDocTests (TestCase ):
267
282
@classmethod
@@ -548,18 +563,16 @@ def setUp(self):
548
563
def test_search (self ):
549
564
expected_list = [
550
565
(
551
- 0.96982837 ,
552
566
"releases/1.2.1" ,
553
- "<mark>Django</mark> 1.2.1 release notes" ,
567
+ "<mark>Django</mark> 1.2.1 release notes" , # Ranked: 0.96982837.
554
568
(
555
569
"<mark>Django</mark> 1.2.1 release notes ¶ \n "
556
570
"<mark>Django</mark> 1.2.1 was released almost immediately after 1.2.0 to correct two small"
557
571
),
558
572
),
559
573
(
560
- 0.9490876 ,
561
574
"releases/1.9.4" ,
562
- "<mark>Django</mark> 1.9.4 release notes" ,
575
+ "<mark>Django</mark> 1.9.4 release notes" , # Ranked: 0.9490876.
563
576
(
564
577
"<mark>Django</mark> 1.9.4 release notes ¶ \n "
565
578
"March 5, 2016 \n "
@@ -570,24 +583,24 @@ def test_search(self):
570
583
self .assertQuerySetEqual (
571
584
Document .objects .search ("django" , self .release ),
572
585
expected_list ,
573
- transform = attrgetter ("rank" , " path" , "headline" , "highlight" ),
586
+ transform = attrgetter ("path" , "headline" , "highlight" ),
574
587
)
575
588
576
589
def test_websearch (self ):
577
590
self .assertQuerySetEqual (
578
591
Document .objects .search ('django "release notes" -packaging' , self .release ),
579
- [( "Django 1.9.4 release notes" , 1.5675676 ) ],
580
- transform = attrgetter ("title" , "rank" ),
592
+ ["Django 1.9.4 release notes" ],
593
+ transform = attrgetter ("title" ),
581
594
)
582
595
583
596
def test_multilingual_search (self ):
584
597
self .assertQuerySetEqual (
585
598
Document .objects .search ("publication" , self .release_fr ),
586
599
[
587
- ( "Notes de publication de Django 1.2.1" , 1.0693262 ),
588
- ( "Notes de publication de Django 1.9.4" , 1.0458658 ),
600
+ "Notes de publication de Django 1.2.1" , # Ranked: 1.0693262.
601
+ "Notes de publication de Django 1.9.4" , # Ranked: 1.0458658.
589
602
],
590
- transform = attrgetter ("title" , "rank" ),
603
+ transform = attrgetter ("title" ),
591
604
)
592
605
593
606
def test_empty_search (self ):
@@ -642,6 +655,15 @@ def test_search_highlight_stemmed(self):
642
655
transform = attrgetter ("headline" , "highlight" ),
643
656
)
644
657
658
+ def test_search_title (self ):
659
+ misspelled_query = Document .objects .search ("viewss" , self .release )
660
+ with self .assertNumQueries (2 ):
661
+ self .assertQuerySetEqual (
662
+ misspelled_query ,
663
+ ["Generic views" ],
664
+ transform = attrgetter ("headline" ),
665
+ )
666
+
645
667
646
668
class TemplateTestCase (TestCase ):
647
669
def _assertOGTitleEqual (self , doc , expected ):
0 commit comments