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,30 @@ 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
+ (
272
+ "Γλώσσα προγραμματισμού Python -'Flask και Django'" ,
273
+ "Γλωσσα προγραμματισμου Python" ,
274
+ ),
275
+ (
276
+ "Pemrograman Python -'Flask dan Django' backend" ,
277
+ "Pemrograman Python backend" ,
278
+ ),
279
+ (
280
+ "Programmazione 'Python e Django' -Flask" ,
281
+ "Programmazione Python e Django" ,
282
+ ),
283
+ ("Linguagem Python -'Django e Flask' web" , "Linguagem Python web" ),
284
+ ("Desarrollo Python -'Django y Flask' rápido" , "Desarrollo Python rapido" ),
285
+ ]:
286
+ with self .subTest (query = query ):
287
+ self .assertEqual (sanitize_for_trigram (query ), sanitized_query )
288
+
265
289
266
290
class UpdateDocTests (TestCase ):
267
291
@classmethod
@@ -548,18 +572,16 @@ def setUp(self):
548
572
def test_search (self ):
549
573
expected_list = [
550
574
(
551
- 0.96982837 ,
552
575
"releases/1.2.1" ,
553
- "<mark>Django</mark> 1.2.1 release notes" ,
576
+ "<mark>Django</mark> 1.2.1 release notes" , # Ranked: 0.96982837.
554
577
(
555
578
"<mark>Django</mark> 1.2.1 release notes ¶ \n "
556
579
"<mark>Django</mark> 1.2.1 was released almost immediately after 1.2.0 to correct two small"
557
580
),
558
581
),
559
582
(
560
- 0.9490876 ,
561
583
"releases/1.9.4" ,
562
- "<mark>Django</mark> 1.9.4 release notes" ,
584
+ "<mark>Django</mark> 1.9.4 release notes" , # Ranked: 0.9490876.
563
585
(
564
586
"<mark>Django</mark> 1.9.4 release notes ¶ \n "
565
587
"March 5, 2016 \n "
@@ -570,24 +592,24 @@ def test_search(self):
570
592
self .assertQuerySetEqual (
571
593
Document .objects .search ("django" , self .release ),
572
594
expected_list ,
573
- transform = attrgetter ("rank" , " path" , "headline" , "highlight" ),
595
+ transform = attrgetter ("path" , "headline" , "highlight" ),
574
596
)
575
597
576
598
def test_websearch (self ):
577
599
self .assertQuerySetEqual (
578
600
Document .objects .search ('django "release notes" -packaging' , self .release ),
579
- [( "Django 1.9.4 release notes" , 1.5675676 ) ],
580
- transform = attrgetter ("title" , "rank" ),
601
+ ["Django 1.9.4 release notes" ],
602
+ transform = attrgetter ("title" ),
581
603
)
582
604
583
605
def test_multilingual_search (self ):
584
606
self .assertQuerySetEqual (
585
607
Document .objects .search ("publication" , self .release_fr ),
586
608
[
587
- ( "Notes de publication de Django 1.2.1" , 1.0693262 ),
588
- ( "Notes de publication de Django 1.9.4" , 1.0458658 ),
609
+ "Notes de publication de Django 1.2.1" , # Ranked: 1.0693262.
610
+ "Notes de publication de Django 1.9.4" , # Ranked: 1.0458658.
589
611
],
590
- transform = attrgetter ("title" , "rank" ),
612
+ transform = attrgetter ("title" ),
591
613
)
592
614
593
615
def test_empty_search (self ):
@@ -642,6 +664,15 @@ def test_search_highlight_stemmed(self):
642
664
transform = attrgetter ("headline" , "highlight" ),
643
665
)
644
666
667
+ def test_search_title (self ):
668
+ misspelled_query = Document .objects .search ("viewss" , self .release )
669
+ with self .assertNumQueries (2 ):
670
+ self .assertQuerySetEqual (
671
+ misspelled_query ,
672
+ ["Generic views" ],
673
+ transform = attrgetter ("headline" ),
674
+ )
675
+
645
676
646
677
class TemplateTestCase (TestCase ):
647
678
def _assertOGTitleEqual (self , doc , expected ):
0 commit comments