Skip to content
Snippets Groups Projects
ParserTests.py 1.57 KiB
Newer Older
  • Learn to ignore specific revisions
  • zshan2's avatar
    zshan2 committed
    import RegularExpressionParser.Parser as Parser
    import unittest
    
    
    class DataBaseTests(unittest.TestCase):
    
        def test_safe_url(self):
            str_query = "search?q=book.rating_count<1000000&AND&book.rating>4.4"
            expected_url = "http://127.0.0.1:5000/api/search?q=book.rating_count%3C1000000%26AND%26book.rating%3E4.4"
            output_url = "http://127.0.0.1:5000/api/" + Parser.url_safe(str_query)
            self.assertEqual(output_url, expected_url)
    
        def test_valid_goodreads_url(self):
            url = "https://www.goodreads.com/book/show/35133922-educated"
            self.assertTrue(Parser.check_if_address_valid(url))
    
        def test_invalid_goodreads_url(self):
            url1 = "https://www.google.com/book/show/35133922-educated"
            self.assertFalse(Parser.check_if_address_valid(url1))
            url2 = "https://www.goodreads.com/book/show/over-35133922-educated"
            self.assertFalse(Parser.check_if_address_valid(url2))
            url3 = "https://www.goodreads.com/book/show/educated"
            self.assertFalse(Parser.check_if_address_valid(url3))
    
        def test_parse_query_to_url(self):
            query = "book.id:12345678 AND book.rating: > 4.80"
            result_url = Parser.parse_query_to_url(query)
            expect_url = "book.id%3A12345678%26AND%26book.rating%3A%3E4.80"
            self.assertEqual(result_url, expect_url)
    
        def test_parse_query_to_json(self):
            query = "book.id: NOT 12345678"
            expect_json = {"id":  {"$not": {"$regex": "12345678", "$options": "i"}}}
            output_json = Parser.parse_query_to_json(query)
            self.assertEqual(output_json, expect_json)