Added test-case for multiple datetime fields to test sorting in reference to gh-76.
This commit is contained in:
parent
710e9b7368
commit
227fb7552b
|
@ -31,6 +31,7 @@ class XapianMockModel(models.Model):
|
|||
author = models.CharField(max_length=255)
|
||||
foo = models.CharField(max_length=255, blank=True)
|
||||
pub_date = models.DateTimeField(default=datetime.datetime.now)
|
||||
exp_date = models.DateTimeField(default=datetime.datetime.now)
|
||||
tag = models.ForeignKey(MockTag)
|
||||
|
||||
value = models.IntegerField(default=0)
|
||||
|
@ -53,6 +54,7 @@ class XapianMockSearchIndex(indexes.SearchIndex):
|
|||
)
|
||||
name = indexes.CharField(model_attr='author', faceted=True)
|
||||
pub_date = indexes.DateField(model_attr='pub_date')
|
||||
exp_date = indexes.DateField(model_attr='exp_date')
|
||||
value = indexes.IntegerField(model_attr='value')
|
||||
flag = indexes.BooleanField(model_attr='flag')
|
||||
slug = indexes.CharField(indexed=False, model_attr='slug')
|
||||
|
@ -123,6 +125,7 @@ class XapianSearchBackendTestCase(TestCase):
|
|||
mock.id = i
|
||||
mock.author = 'david%s' % i
|
||||
mock.pub_date = datetime.date(2009, 2, 25) - datetime.timedelta(days=i)
|
||||
mock.exp_date = datetime.date(2009, 2, 23) + datetime.timedelta(days=i)
|
||||
mock.value = i * 5
|
||||
mock.flag = bool(i % 2)
|
||||
mock.slug = 'http://example.com/%d/' % i
|
||||
|
@ -350,6 +353,12 @@ class XapianSearchBackendTestCase(TestCase):
|
|||
results = self.backend.search(xapian.Query(''), sort_by=['-pub_date'])
|
||||
self.assertEqual([result.pk for result in results['results']], [1, 2, 3])
|
||||
|
||||
results = self.backend.search(xapian.Query(''), sort_by=['exp_date'])
|
||||
self.assertEqual([result.pk for result in results['results']], [1, 2, 3])
|
||||
|
||||
results = self.backend.search(xapian.Query(''), sort_by=['-exp_date'])
|
||||
self.assertEqual([result.pk for result in results['results']], [3, 2, 1])
|
||||
|
||||
results = self.backend.search(xapian.Query(''), sort_by=['id'])
|
||||
self.assertEqual([result.pk for result in results['results']], [1, 2, 3])
|
||||
|
||||
|
@ -397,7 +406,7 @@ class XapianSearchBackendTestCase(TestCase):
|
|||
def test_build_schema(self):
|
||||
(content_field_name, fields) = self.backend.build_schema(self.site.all_searchfields())
|
||||
self.assertEqual(content_field_name, 'text')
|
||||
self.assertEqual(len(fields), 13)
|
||||
self.assertEqual(len(fields), 14)
|
||||
self.assertEqual(fields, [
|
||||
{'column': 0, 'type': 'text', 'field_name': 'name', 'multi_valued': 'false'},
|
||||
{'column': 1, 'type': 'text', 'field_name': 'tags', 'multi_valued': 'true'},
|
||||
|
@ -409,9 +418,10 @@ class XapianSearchBackendTestCase(TestCase):
|
|||
{'column': 7, 'type': 'text', 'field_name': 'url', 'multi_valued': 'false'},
|
||||
{'column': 8, 'type': 'boolean', 'field_name': 'flag', 'multi_valued': 'false'},
|
||||
{'column': 9, 'type': 'text', 'field_name': 'titles', 'multi_valued': 'true'},
|
||||
{'column': 10, 'type': 'text', 'field_name': 'name_exact', 'multi_valued': 'false'},
|
||||
{'column': 11, 'type': 'date', 'field_name': 'pub_date', 'multi_valued': 'false'},
|
||||
{'column': 12, 'type': 'text', 'field_name': 'empty', 'multi_valued': 'false'}
|
||||
{'column': 10, 'type': 'date', 'field_name': 'exp_date', 'multi_valued': 'false'},
|
||||
{'column': 11, 'type': 'text', 'field_name': 'name_exact', 'multi_valued': 'false'},
|
||||
{'column': 12, 'type': 'date', 'field_name': 'pub_date', 'multi_valued': 'false'},
|
||||
{'column': 13, 'type': 'text', 'field_name': 'empty', 'multi_valued': 'false'}
|
||||
])
|
||||
|
||||
def test_parse_query(self):
|
||||
|
|
Loading…
Reference in New Issue