Merge pull request #1790 from erdenezul/compare_index_correct_behavior_text
Compare_indexes correct behavior for text index
This commit is contained in:
commit
d4142c2cdd
@ -967,8 +967,16 @@ class Document(BaseDocument):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
required = cls.list_indexes()
|
required = cls.list_indexes()
|
||||||
existing = [info['key']
|
|
||||||
for info in cls._get_collection().index_information().values()]
|
existing = []
|
||||||
|
for info in cls._get_collection().index_information().values():
|
||||||
|
if '_fts' in info['key'][0]:
|
||||||
|
index_type = info['key'][0][1]
|
||||||
|
text_index_fields = info.get('weights').keys()
|
||||||
|
existing.append(
|
||||||
|
[(key, index_type) for key in text_index_fields])
|
||||||
|
else:
|
||||||
|
existing.append(info['key'])
|
||||||
missing = [index for index in required if index not in existing]
|
missing = [index for index in required if index not in existing]
|
||||||
extra = [index for index in existing if index not in required]
|
extra = [index for index in existing if index not in required]
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ from mongoengine import *
|
|||||||
|
|
||||||
from mongoengine.queryset import NULLIFY, PULL
|
from mongoengine.queryset import NULLIFY, PULL
|
||||||
from mongoengine.connection import get_db
|
from mongoengine.connection import get_db
|
||||||
|
from tests.utils import needs_mongodb_v26
|
||||||
|
|
||||||
__all__ = ("ClassMethodsTest", )
|
__all__ = ("ClassMethodsTest", )
|
||||||
|
|
||||||
@ -187,6 +188,26 @@ class ClassMethodsTest(unittest.TestCase):
|
|||||||
self.assertEqual(BlogPostWithTags.compare_indexes(), { 'missing': [], 'extra': [] })
|
self.assertEqual(BlogPostWithTags.compare_indexes(), { 'missing': [], 'extra': [] })
|
||||||
self.assertEqual(BlogPostWithCustomField.compare_indexes(), { 'missing': [], 'extra': [] })
|
self.assertEqual(BlogPostWithCustomField.compare_indexes(), { 'missing': [], 'extra': [] })
|
||||||
|
|
||||||
|
@needs_mongodb_v26
|
||||||
|
def test_compare_indexes_for_text_indexes(self):
|
||||||
|
""" Ensure that compare_indexes behaves correctly for text indexes """
|
||||||
|
|
||||||
|
class Doc(Document):
|
||||||
|
a = StringField()
|
||||||
|
b = StringField()
|
||||||
|
meta = {'indexes': [
|
||||||
|
{'fields': ['$a', "$b"],
|
||||||
|
'default_language': 'english',
|
||||||
|
'weights': {'a': 10, 'b': 2}
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
|
||||||
|
Doc.drop_collection()
|
||||||
|
Doc.ensure_indexes()
|
||||||
|
actual = Doc.compare_indexes()
|
||||||
|
expected = {'missing': [], 'extra': []}
|
||||||
|
self.assertEqual(actual, expected)
|
||||||
|
|
||||||
def test_list_indexes_inheritance(self):
|
def test_list_indexes_inheritance(self):
|
||||||
""" ensure that all of the indexes are listed regardless of the super-
|
""" ensure that all of the indexes are listed regardless of the super-
|
||||||
or sub-class that we call it from
|
or sub-class that we call it from
|
||||||
|
Loading…
x
Reference in New Issue
Block a user