diff --git a/test/test_dbcore.py b/test/test_dbcore.py index 39867ceb0..22e0ddf11 100644 --- a/test/test_dbcore.py +++ b/test/test_dbcore.py @@ -475,6 +475,46 @@ class SortFromStringsTest(unittest.TestCase): self.assertIsInstance(s, TestSort) +class ParseSortedQueryTest(unittest.TestCase): + def psq(self, parts): + return dbcore.parse_sorted_query( + TestModel1, + parts + ) + + def test_and_query(self): + q, s = self.psq([u'foo', u'bar']) + self.assertIsInstance(q, dbcore.query.AndQuery) + self.assertIsInstance(s, dbcore.query.NullSort) + self.assertEqual(len(q.subqueries), 2) + + def test_or_query(self): + q, s = self.psq([u'foo', u',', u'bar']) + self.assertIsInstance(q, dbcore.query.OrQuery) + self.assertIsInstance(s, dbcore.query.NullSort) + self.assertEqual(len(q.subqueries), 2) + + def test_no_space_before_comma_or_query(self): + # E.g., query `foo, bar` + q, s = self.psq([u'foo,', u'bar']) + self.assertIsInstance(q, dbcore.query.OrQuery) + self.assertIsInstance(s, dbcore.query.NullSort) + self.assertEqual(len(q.subqueries), 2) + + def test_no_spaces_or_query(self): + # E.g., query `foo, bar` + q, s = self.psq([u'foo,bar']) + self.assertIsInstance(q, dbcore.query.AndQuery) + self.assertIsInstance(s, dbcore.query.NullSort) + self.assertEqual(len(q.subqueries), 1) + + def test_trailing_comma_or_query(self): + q, s = self.psq([u'foo', u',', u'bar', u',']) + self.assertIsInstance(q, dbcore.query.OrQuery) + self.assertIsInstance(s, dbcore.query.NullSort) + self.assertEqual(len(q.subqueries), 3) + + class ResultsIteratorTest(unittest.TestCase): def setUp(self): self.db = TestDatabase1(':memory:')