From d626fe4251836c59b0c84091a95b8844c9289e93 Mon Sep 17 00:00:00 2001 From: Shane Stone <12768327+shanewstone@users.noreply.github.com> Date: Wed, 6 Mar 2019 15:17:31 -0700 Subject: [PATCH] Add unit tests for CitekeyFilter --- tests/test_queries.py | 49 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/tests/test_queries.py b/tests/test_queries.py index d8cfa86..207c4fc 100644 --- a/tests/test_queries.py +++ b/tests/test_queries.py @@ -4,9 +4,9 @@ from __future__ import unicode_literals import unittest import dotdot -from pubs.query import (AuthorFilter, FieldFilter, YearFilter, - _query_block_to_filter, get_paper_filter, - InvalidQuery) +from pubs.query import (AuthorFilter, CitekeyFilter, FieldFilter, + YearFilter, _query_block_to_filter, + get_paper_filter, InvalidQuery) from pubs.paper import Paper @@ -43,6 +43,49 @@ class TestAuthorFilter(unittest.TestCase): self.assertFalse(AuthorFilter('lawrence')(page_paper)) +class TestCitekeyFilter(unittest.TestCase): + + def test_fails_if_no_citekey(self): + no_citekey = doe_paper.deepcopy() + no_citekey.citekey = '' + self.assertFalse(CitekeyFilter('whatever')(no_citekey)) + + def test_match_case(self): + self.assertTrue(CitekeyFilter('doe201')(doe_paper)) + self.assertTrue(CitekeyFilter('doe201', case_sensitive=False)(doe_paper)) + self.assertTrue(CitekeyFilter('Doe201')(doe_paper)) + + def test_do_not_match_case(self): + self.assertFalse(CitekeyFilter('dOe201')(doe_paper)) + self.assertFalse(CitekeyFilter('dOe201', case_sensitive=True)(doe_paper)) + self.assertFalse(CitekeyFilter('doe201', case_sensitive=True)(doe_paper)) + self.assertTrue(CitekeyFilter('dOe201', case_sensitive=False)(doe_paper)) + + def test_latex_enc(self): + latexenc_paper = doe_paper.deepcopy() + latexenc_paper.citekey = "{G}r{\\\"u}n2013" + self.assertTrue(CitekeyFilter('GrĂ¼n')(latexenc_paper)) + self.assertTrue(CitekeyFilter('Gr{\\\"u}n')(latexenc_paper)) + + def test_normalize_unicode(self): + latexenc_paper = doe_paper.deepcopy() + latexenc_paper.citekey = "Jalape\u00f1o2013" + self.assertTrue(CitekeyFilter("Jalapen\u0303o")(latexenc_paper)) + + def test_strict(self): + latexenc_paper = doe_paper.deepcopy() + latexenc_paper.citekey = "Jalape\u00f1o2013" + self.assertFalse(CitekeyFilter("Jalapen\u0303o", strict=True)(latexenc_paper)) + latexenc_paper.citekey = "{G}ros2013" + self.assertFalse(CitekeyFilter("Gros", strict=True)(latexenc_paper)) + + def test_strict_implies_case(self): + latexenc_paper = doe_paper.deepcopy() + latexenc_paper.citekey = "Gros2013" + self.assertFalse( + CitekeyFilter("gros", case_sensitive=False, strict=True)(latexenc_paper)) + + class TestCheckTag(unittest.TestCase): pass