~nataliabidart/software-center/winged-migration

« back to all changes in this revision

Viewing changes to test/test_categories.py

  • Committer: Michael Vogt
  • Date: 2012-02-02 08:47:10 UTC
  • mfrom: (2690.1.36 software-center)
  • Revision ID: michael.vogt@ubuntu.com-20120202084710-aed7137jdd9zwpny
* lp:~gary-lasker/software-center/recommends-ui-lobby:
  - initial recommends UI implementation, limited to non-personalized
    recommends currently

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
import os
4
4
import unittest
 
5
import xapian
 
6
from mock import patch
5
7
 
6
8
from testutils import setup_test_env
7
9
setup_test_env()
10
12
 
11
13
from softwarecenter.db.database import StoreDatabase
12
14
from softwarecenter.db.pkginfo import get_pkg_info
13
 
from softwarecenter.db.categories import CategoriesParser, get_category_by_name
14
 
 
 
15
from softwarecenter.db.categories import (
 
16
    CategoriesParser, RecommendedForYouCategory,
 
17
    get_category_by_name, get_query_for_category)
 
18
from softwarecenter.testutils import (get_test_db,
 
19
                                      make_recommender_agent_recommend_top_dict)
 
20
 
 
21
class TestCategories(unittest.TestCase):
 
22
    
 
23
    def setUp(self):
 
24
        self.db = get_test_db()
 
25
 
 
26
    @patch('softwarecenter.db.categories.RecommenderAgent')
 
27
    def test_recommends_category(self, AgentMockCls):
 
28
        # ensure we use the same instance in test and code
 
29
        agent_mock_instance = AgentMockCls.return_value
 
30
        recommends_cat = RecommendedForYouCategory()
 
31
        docids = recommends_cat.get_documents(self.db)
 
32
        self.assertEqual(docids, [])
 
33
        self.assertTrue(agent_mock_instance.query_recommend_top.called)
 
34
        # ensure we get a query when the callback is called
 
35
        recommends_cat._recommend_top_result(
 
36
                                None, 
 
37
                                make_recommender_agent_recommend_top_dict())
 
38
        self.assertNotEqual(recommends_cat.get_documents(self.db), [])
 
39
   
 
40
    def test_get_query(self):
 
41
        query = get_query_for_category(self.db, "Education")
 
42
        self.assertNotEqual(query, None)
15
43
 
16
44
class TestCatParsing(unittest.TestCase):
17
45
    """ tests the "where is it in the menu" code """
25
53
        self.db.open()
26
54
        self.catview = CategoriesParser(self.db)
27
55
        self.catview.db = self.db
28
 
        self.cats = self.catview.parse_applications_menu('/usr/share/app-install')
 
56
        self.cats = self.catview.parse_applications_menu(
 
57
            '/usr/share/app-install')
29
58
 
30
59
    def test_get_cat_by_name(self):
31
60
        cat = get_category_by_name(self.cats, 'Games')
37
66
        cat = get_category_by_name(self.cats, 'Featured')
38
67
        self.assertEqual(cat.flags[0], 'carousel-only')
39
68
 
 
69
    def test_get_documents(self):
 
70
        cat = get_category_by_name(self.cats, 'Featured')
 
71
        docs = cat.get_documents(self.db)
 
72
        self.assertNotEqual(docs, [])
 
73
        for doc in docs:
 
74
            self.assertEqual(type(doc), xapian.Document)
 
75
 
40
76
 
41
77
if __name__ == "__main__":
42
78
    import logging