def test_simple_before(self): v = FakeTask(due_date="2012-02-14") self.assertTrue(search_filter(v, {'q': [("before", True, d('2022-01-01')) ]})) self.assertTrue(search_filter(v, {'q': [("before", True, d('2012-03-01')) ]})) self.assertTrue(search_filter(v, {'q': [("before", True, d('2012-02-20')) ]})) self.assertTrue(search_filter(v, {'q': [("before", True, d('2012-02-15')) ]})) self.assertFalse(search_filter(v, {'q': [("before", True, d('2012-02-14')) ]})) self.assertFalse(search_filter(v, {'q': [("before", True, d('2012-02-13')) ]})) self.assertFalse(search_filter(v, {'q': [("before", True, d('2000-01-01') )]})) self.assertFalse(search_filter(v, {'q': [("before", False, d('2012-03-01' ))]})) self.assertTrue(search_filter(v, {'q': [("before", False, d('2012-02-14') )]})) self.assertTrue(search_filter(v, {'q': [("before", False, d('2002-02-20') )]}))
def test_simple_after(self): t = FakeTask(due_date="2012-06-01") self.assertTrue( search_filter(t, {'q': [("after", True, d('2002-01-01'))]})) self.assertTrue( search_filter(t, {'q': [("after", True, d('2012-05-30'))]})) self.assertFalse( search_filter(t, {'q': [("after", True, d('2013-02-20'))]})) self.assertTrue( search_filter(t, {'q': [("after", False, d('2022-02-15'))]}))
def test_simple_after(self): t = FakeTask(due_date="2012-06-01") self.assertTrue(search_filter(t, {'q': [("after", True, d('2002-01-01'))] })) self.assertTrue(search_filter(t, {'q': [("after", True, d('2012-05-30'))] })) self.assertFalse(search_filter(t, {'q': [("after", True, d('2013-02-20')) ]})) self.assertTrue(search_filter(t, {'q': [("after", False, d('2022-02-15')) ]}))
def test_simple_tag_or(self): task = FakeTask(tags=['@a', '@b']) self.assertTrue( search_filter(task, { "q": [('or', True, [("tag", True, "@a"), ("tag", True, "@b")])] })) self.assertTrue( search_filter(task, { "q": [('or', True, [("tag", True, "@a"), ("tag", True, "@n")])] })) self.assertTrue( search_filter(task, { "q": [('or', True, [("tag", True, "@n"), ("tag", True, "@b")])] })) self.assertFalse( search_filter(task, { "q": [('or', True, [("tag", True, "@n"), ("tag", True, "@n")])] }))
def test_simple_tag_or(self): task = FakeTask(tags=['@a', '@b']) self.assertTrue(search_filter(task, {"q": [('or', True, [("tag", True, "@a"), ("tag", True, "@b")])]})) self.assertTrue(search_filter(task, {"q": [('or', True, [("tag", True, "@a"), ("tag", True, "@n")])]})) self.assertTrue(search_filter(task, {"q": [('or', True, [("tag", True, "@n"), ("tag", True, "@b")])]})) self.assertFalse(search_filter(task, {"q": [('or', True, [("tag", True, "@n"), ("tag", True, "@n")])]}))
def task_tags_column(self, node): tags = node.get_tags() search_parent = self.req.get_tag(CoreConfig.SEARCH_TAG) for search_tag in search_parent.get_children(): tag = self.req.get_tag(search_tag) match = search_filter(node, parse_search_query( tag.get_attribute('query'))) if match and search_tag not in tags: tags.append(tag) tags.sort(key=lambda x: x.get_name()) return tags
def get_task_tags_column_contents(self, node): """Returns an ordered list of tags of a task""" tags = node.get_tags() search_parent = self.req.get_tag(SEARCH_TAG) for search_tag in search_parent.get_children(): tag = self.req.get_tag(search_tag) match = search_filter( node, parse_search_query(tag.get_attribute('query')), ) if match and search_tag not in tags: tags.append(tag) tags.sort(key=lambda x: x.get_name()) return tags
def test_dates(self): self.assertTrue(search_filter(FakeTask(due_date="today"), {'q': [("today", True)]})) self.assertTrue(search_filter(FakeTask(due_date="tomorrow"), {'q': [("tomorrow", True)]})) self.assertTrue(search_filter(FakeTask(due_date=""), {'q': [("nodate", True)]})) self.assertTrue(search_filter(FakeTask(due_date="now"), {'q': [("now", True)]})) self.assertTrue(search_filter(FakeTask(due_date="soon"), {'q': [("soon", True)]})) self.assertTrue(search_filter(FakeTask(due_date="someday"), {'q': [("someday", True)]}))
def test_double_tag(self): p = {"q": [("tag", True, "@a"), ("tag", True, "@b")]} self.assertTrue(search_filter(FakeTask(tags=['@a', '@b']), p)) self.assertTrue(search_filter(FakeTask(tags=['@b', '@a']), p)) self.assertTrue(search_filter(FakeTask(tags=['@b', '@a', '@a']), p)) self.assertTrue( search_filter(FakeTask(tags=['@b', '@a', '@c', '@d']), p)) self.assertTrue(search_filter(FakeTask(tags=['@b', 'search', '@a']), p)) self.assertTrue( search_filter( FakeTask(tags=['gtg-tags-all', '@b', 'search', '@a']), p)) self.assertTrue( search_filter( FakeTask(tags=[ 'gtg-tags-all', 'gtg-tags-none', '@b', 'search', '@a' ]), p)) self.assertFalse(search_filter(FakeTask(tags=['@n', '@b']), p)) self.assertFalse(search_filter(FakeTask(tags=['@b', '@n']), p)) self.assertFalse(search_filter(FakeTask(tags=['@a']), p)) self.assertFalse(search_filter(FakeTask(tags=['@b']), p)) self.assertFalse( search_filter(FakeTask(tags=['@b', '@b', '@c', '@d']), p)) self.assertFalse( search_filter(FakeTask(tags=['@b', 'search', '@d']), p)) self.assertFalse( search_filter( FakeTask(tags=['gtg-tags-all', '@g', 'search', '@a']), p)) self.assertFalse( search_filter( FakeTask(tags=[ 'gtg-tags-all', 'gtg-tags-none', '@@b', 'search', '@a' ]), p))
def test_single_tag(self): task = FakeTask(tags=['@a']) self.assertTrue(search_filter(task, {"q": [("tag", True, "@a")]})) self.assertFalse(search_filter(task, {"q": [("tag", True, "@b")]})) self.assertFalse(search_filter(task, {"q": [("tag", True, "@n")]}))
def test_empty(self): self.assertFalse(search_filter(FakeTask()))
def test_simple_word_in_title(self): task = FakeTask(title="GTG is the best ToDo manager for GNOME") # Test the lowercasing self.assertTrue(search_filter(task, {'q': [("word", True, 'GTG')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'gtg')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'GtG')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'Gtg')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'gTg')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'GTG')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'is')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'the')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'best')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'todo')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'manager')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'for')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'GNOME')]})) # test literals self.assertTrue(search_filter(task, {'q': [("word", True, 'GTG is')]}) ) self.assertTrue(search_filter(task, {'q': [("word", True, 'for GNOME')]})) self.assertTrue(search_filter(task, {'q': [("word", False, 'GTG for GNOME')] })) self.assertFalse(search_filter(task, {'q': [("word", True, 'GTG for GNOME')] }))
def test_simple_word_in_title(self): task = FakeTask(title="GTG is the best ToDo manager for GNOME") # Test the lowercasing self.assertTrue(search_filter(task, {'q': [("word", True, 'GTG')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'gtg')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'GtG')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'Gtg')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'gTg')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'GTG')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'is')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'the')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'best')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'todo')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'manager')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'for')]})) self.assertTrue(search_filter(task, {'q': [("word", True, 'GNOME')]})) # test literals self.assertTrue(search_filter(task, {'q': [("word", True, 'GTG is')]})) self.assertTrue( search_filter(task, {'q': [("word", True, 'for GNOME')]})) self.assertTrue( search_filter(task, {'q': [("word", False, 'GTG for GNOME')]})) self.assertFalse( search_filter(task, {'q': [("word", True, 'GTG for GNOME')]}))
def test_double_tag(self): p = {"q": [("tag", True, "@a"), ("tag", True, "@b")]} self.assertTrue(search_filter(FakeTask(tags=['@a', '@b']), p)) self.assertTrue(search_filter(FakeTask(tags=['@b', '@a']), p)) self.assertTrue(search_filter(FakeTask(tags=['@b', '@a', '@a']), p)) self.assertTrue(search_filter( FakeTask(tags=['@b', '@a', '@c', '@d']), p)) self.assertTrue(search_filter( FakeTask(tags=['@b', 'search', '@a']), p)) self.assertTrue(search_filter( FakeTask(tags=['gtg-tags-all', '@b', 'search', '@a']), p)) self.assertTrue(search_filter(FakeTask(tags=['gtg-tags-all', 'gtg-tags-none', '@b', 'search', '@a']), p)) self.assertFalse(search_filter(FakeTask(tags=['@n', '@b']), p)) self.assertFalse(search_filter(FakeTask(tags=['@b', '@n']), p)) self.assertFalse(search_filter(FakeTask(tags=['@a']), p)) self.assertFalse(search_filter(FakeTask(tags=['@b']), p)) self.assertFalse(search_filter( FakeTask(tags=['@b', '@b', '@c', '@d']), p)) self.assertFalse(search_filter( FakeTask(tags=['@b', 'search', '@d']), p)) self.assertFalse(search_filter( FakeTask(tags=['gtg-tags-all', '@g', 'search', '@a']), p)) self.assertFalse(search_filter(FakeTask(tags=['gtg-tags-all', 'gtg-tags-none', '@@b', 'search', '@a']), p))