3
3
from gi.repository import GObject
7
10
from testutils import setup_test_env
10
13
from softwarecenter.backend.recagent import RecommenderAgent
12
from softwarecenter.testutils import make_recommender_profile_upload_data
15
from softwarecenter.testutils import (
14
19
class TestRecommenderAgent(unittest.TestCase):
15
20
""" tests the recommender agent """
28
33
os.environ["SOFTWARE_CENTER_RECOMMENDER_HOST"] = self.orig_host
30
def on_query_done(self, recagent, data):
35
@patch('softwarecenter.backend.recagent.SpawnHelper'
36
'.run_generic_piston_helper')
37
def test_mocked_recagent_post_submit_profile(self, mock_spawn_helper_run):
38
def _patched_on_submit_profile_data(*args, **kwargs):
39
piston_submit_profile = {}
40
recommender_agent.emit("submit-profile-finished",
41
piston_submit_profile,
43
mock_spawn_helper_run.side_effect = _patched_on_submit_profile_data
44
recommender_agent = RecommenderAgent()
45
recommender_agent.connect("submit-profile-finished", self.on_query_done)
46
recommender_agent.connect("error", self.on_query_error)
48
recommender_agent.post_submit_profile(db)
49
self.assertFalse(self.error)
50
args, kwargs = mock_spawn_helper_run.call_args
51
self.assertNotEqual(kwargs['data'][0]['uuid'], None)
52
self.assertNotEqual(kwargs['data'][0]['package_list'], [])
54
def on_query_done(self, recagent, data, uuid=""):
31
55
print "query done, data: '%s'" % data
44
68
recommender_agent.query_server_status()
46
70
self.assertFalse(self.error)
48
# FIXME: disabled for now as the server is not quite working
49
def disabled_test_recagent_query_submit_profile(self):
72
# FIXME: disabled for now as the server is not quite working
73
def disabled_test_recagent_post_submit_profile(self):
50
74
# NOTE: This requires a working recommender host that is reachable
51
75
recommender_agent = RecommenderAgent()
52
recommender_agent.connect("submit-profile", self.on_query_done)
76
recommender_agent.connect("submit-profile-finished", self.on_query_done)
53
77
recommender_agent.connect("error", self.on_query_error)
54
recommender_agent.query_submit_profile(data=make_recommender_profile_upload_data())
79
recommender_agent.post_submit_profile(db)
56
81
self.assertFalse(self.error)
82
#print mock_request._post
84
# NOTE: this server call is currently not needed and not used
58
85
# def disabled_test_recagent_query_submit_anon_profile(self):
59
86
# # NOTE: This requires a working recommender host that is reachable
60
87
# recommender_agent = RecommenderAgent()
68
95
# self.assertFalse(self.error)
97
# FIXME: disabled for now as the server is not quite working
70
98
def disabled_test_recagent_query_profile(self):
71
99
# NOTE: This requires a working recommender host that is reachable
72
100
recommender_agent = RecommenderAgent()
116
144
def test_recagent_query_error(self):
117
145
# NOTE: This tests the error condition itself! it simply forces an error
118
146
# 'cuz there definitely isn't a server here :)
119
os.environ["SOFTWARE_CENTER_RECOMMENDER_HOST"] = "https://orange.staging.ubuntu.com"
147
os.environ["SOFTWARE_CENTER_RECOMMENDER_HOST"] = "https://test-no-server-here.staging.ubuntu.com"
120
148
recommender_agent = RecommenderAgent()
121
149
recommender_agent.connect("recommend-top", self.on_query_done)
122
150
recommender_agent.connect("error", self.on_query_error)