def setUp(self):
     self.instance = BaseQueryEngine('')
Beispiel #2
0
 def setUp(self):
     self.instance = BaseQueryEngine('')
class TestBaseQueryEngine(TestCase):
    def setUp(self):
        self.instance = BaseQueryEngine('')

    def test_fetch(self):
        with self.assertRaises(NotImplementedError):
            self.instance.fetch(QUERY)

    def test_sanitize_response(self):
        eq_(self.instance.sanitize_response(MOCK_RESULTS), MOCK_RESULTS)

    def test_get_best_result(self):
        eq_(self.instance.get_best_result(MOCK_RESULTS), MOCK_RESULTS[0])

    @patch('app.search.query.base.BaseQueryEngine.get_result_abstract')
    @patch('app.search.query.base.BaseQueryEngine.get_result_title')
    @patch('app.search.query.base.BaseQueryEngine.get_result_url')
    def test_sanitize_result(self, *args):
        result = self.instance.sanitize_result(MOCK_RESULTS[0])
        ok_(all(k in result.keys() for k in ['abstract', 'title', 'url']))
        ok_(all([mock.call_count == 1 for mock in args]))

    def test_strip_html(self):
        eq_(self.instance._strip_html('This is not HTML'), 'This is not HTML')
        eq_(self.instance._strip_html('<b>This is HTML</b>'), 'This is HTML')
        eq_(self.instance._strip_html('This <b>is</b> HTML'), 'This is HTML')
        eq_(self.instance._strip_html('This <b><i>HTML</b></i>'), 'This HTML')
        eq_(self.instance._strip_html('This <b><i>HTML</i></b>'), 'This HTML')
        eq_(self.instance._strip_html('<b>This <i>HTML</i></b>'), 'This HTML')

    def test_get_result_title(self):
        eq_(self.instance.get_result_title(MOCK_RESULTS[0]),
            MOCK_RESULT_SANITIZED['title'])

    def test_get_result_url(self):
        eq_(self.instance.get_result_url(MOCK_RESULTS[0]),
            MOCK_RESULT_SANITIZED['url'])

    def test_get_result_abstract(self):
        eq_(self.instance.get_result_abstract(MOCK_RESULTS[0]),
            MOCK_RESULT_SANITIZED['abstract'])

    @patch('app.search.query.base.BaseQueryEngine.fetch')
    @patch('app.memorize.memcached', mock_memcached)
    def test_search(self, mock_fetch):
        mock_fetch.return_value = MOCK_RESULTS
        results_cold = self.instance.search(QUERY)
        results_warm = self.instance.search(QUERY)
        ok_(not results_cold.from_cache)
        ok_(results_warm.from_cache)
        eq_(results_cold.cache_key, results_warm.cache_key)
        eq_(results_cold, results_warm, MOCK_RESULT_SANITIZED)
Beispiel #4
0
class TestBaseQueryEngine(TestCase):
    def setUp(self):
        self.instance = BaseQueryEngine('')

    def test_fetch(self):
        with self.assertRaises(NotImplementedError):
            self.instance.fetch(QUERY)

    def test_sanitize_response(self):
        eq_(self.instance.sanitize_response(MOCK_RESULTS), MOCK_RESULTS)

    def test_get_best_result(self):
        eq_(self.instance.get_best_result(MOCK_RESULTS), MOCK_RESULTS[0])

    @patch('app.search.query.base.BaseQueryEngine.get_result_abstract')
    @patch('app.search.query.base.BaseQueryEngine.get_result_title')
    @patch('app.search.query.base.BaseQueryEngine.get_result_url')
    def test_sanitize_result(self, *args):
        result = self.instance.sanitize_result(MOCK_RESULTS[0])
        ok_(all(k in result.keys() for k in ['abstract', 'title', 'url']))
        ok_(all([mock.call_count == 1 for mock in args]))

    def test_strip_html(self):
        eq_(self.instance._strip_html('This is not HTML'), 'This is not HTML')
        eq_(self.instance._strip_html('<b>This is HTML</b>'), 'This is HTML')
        eq_(self.instance._strip_html('This <b>is</b> HTML'), 'This is HTML')
        eq_(self.instance._strip_html('This <b><i>HTML</b></i>'), 'This HTML')
        eq_(self.instance._strip_html('This <b><i>HTML</i></b>'), 'This HTML')
        eq_(self.instance._strip_html('<b>This <i>HTML</i></b>'), 'This HTML')

    def test_get_result_title(self):
        eq_(self.instance.get_result_title(MOCK_RESULTS[0]),
            MOCK_RESULT_SANITIZED['title'])

    def test_get_result_url(self):
        eq_(self.instance.get_result_url(MOCK_RESULTS[0]),
            MOCK_RESULT_SANITIZED['url'])

    def test_get_result_abstract(self):
        eq_(self.instance.get_result_abstract(MOCK_RESULTS[0]),
            MOCK_RESULT_SANITIZED['abstract'])

    @patch('app.search.query.base.BaseQueryEngine.fetch')
    @patch('app.memorize.memcached', mock_memcached)
    def test_search(self, mock_fetch):
        mock_fetch.return_value = MOCK_RESULTS
        results_cold = self.instance.search(QUERY)
        results_warm = self.instance.search(QUERY)
        ok_(not results_cold.from_cache)
        ok_(results_warm.from_cache)
        eq_(results_cold.cache_key, results_warm.cache_key)
        eq_(results_cold, results_warm, MOCK_RESULT_SANITIZED)