97
97
self.assertFalse(view.whats_new_frame.get_property("visible"))
101
101
def test_subcatview_recommended_for_you_opt_in_display(self):
103
103
# patch the recommender UUID value to insure that we are not opted-in for this test
104
get_recommender_uuid_patcher = patch('softwarecenter.backend.recagent.RecommenderAgent._get_recommender_uuid')
105
self.addCleanup(get_recommender_uuid_patcher.stop)
106
mock_get_recommender_uuid = get_recommender_uuid_patcher.start()
107
mock_get_recommender_uuid.return_value = ""
104
get_recommender_opted_in_patcher = patch('softwarecenter.backend.recagent.RecommenderAgent.is_opted_in')
105
self.addCleanup(get_recommender_opted_in_patcher.stop)
106
mock_get_recommender_opted_in = get_recommender_opted_in_patcher.start()
107
mock_get_recommender_opted_in.return_value = False
109
109
from softwarecenter.ui.gtk3.views.catview_gtk import get_test_window_catview
110
110
# get the widgets we need
123
123
def test_subcatview_recommended_for_you_spinner_display(self, mock_query):
125
125
# patch the recommender UUID value to insure that we are not opted-in for this test
126
get_recommender_uuid_patcher = patch('softwarecenter.backend.recagent.RecommenderAgent._get_recommender_uuid')
127
self.addCleanup(get_recommender_uuid_patcher.stop)
128
mock_get_recommender_uuid = get_recommender_uuid_patcher.start()
129
mock_get_recommender_uuid.return_value = ""
126
get_recommender_opted_in_patcher = patch('softwarecenter.backend.recagent.RecommenderAgent.is_opted_in')
127
self.addCleanup(get_recommender_opted_in_patcher.stop)
128
mock_get_recommender_opted_in = get_recommender_opted_in_patcher.start()
129
mock_get_recommender_opted_in.return_value = False
131
131
from softwarecenter.ui.gtk3.views.catview_gtk import get_test_window_catview
132
132
# get the widgets we need
137
137
# click the opt-in button to initiate the process, this will show the spinner
138
138
rec_panel.opt_in_button.emit('clicked')
140
from softwarecenter.ui.gtk3.widgets.containers import FramedHeaderBox
141
self.assertTrue(rec_panel.spinner_notebook.get_current_page() == FramedHeaderBox.SPINNER)
140
from softwarecenter.ui.gtk3.widgets.spinner import SpinnerNotebook
141
self.assertTrue(rec_panel.spinner_notebook.get_current_page() == SpinnerNotebook.SPINNER_PAGE)
142
142
self.assertTrue(rec_panel.opt_in_vbox.get_property("visible"))
143
# now pretent that we got data and ensure its displayed
144
rec_panel._update_recommended_for_you_content()
145
rec_panel.recommended_for_you_cat._recommend_me_result(
146
None, make_recommender_agent_recommend_me_dict())
148
self.assertTrue(rec_panel.recommended_for_you_content.get_property("visible"))
149
self.assertFalse(rec_panel.opt_in_vbox.get_property("visible"))
150
# exit after brief timeout
152
GObject.timeout_add(TIMEOUT, lambda: win.destroy())
155
145
# patch out the agent query method to avoid making the actual server call
156
146
@patch('softwarecenter.backend.recagent.RecommenderAgent'
158
148
def test_subcatview_recommended_for_you_display_recommendations(self, mock_query):
160
150
# patch the recommender UUID value to insure that we are not opted-in for this test
161
get_recommender_uuid_patcher = patch('softwarecenter.backend.recagent.RecommenderAgent._get_recommender_uuid')
162
self.addCleanup(get_recommender_uuid_patcher.stop)
163
mock_get_recommender_uuid = get_recommender_uuid_patcher.start()
164
mock_get_recommender_uuid.return_value = ""
151
get_recommender_opted_in_patcher = patch('softwarecenter.backend.recagent.RecommenderAgent.is_opted_in')
152
self.addCleanup(get_recommender_opted_in_patcher.stop)
153
mock_get_recommender_opted_in = get_recommender_opted_in_patcher.start()
154
mock_get_recommender_opted_in.return_value = False
166
156
from softwarecenter.ui.gtk3.views.catview_gtk import get_test_window_catview
167
157
# get the widgets we need
180
170
make_recommender_agent_recommend_me_dict())
181
171
self.assertNotEqual(
182
172
lobby.recommended_for_you_panel.recommended_for_you_cat.get_documents(self.db), [])
183
from softwarecenter.ui.gtk3.widgets.containers import FramedHeaderBox
184
self.assertTrue(rec_panel.spinner_notebook.get_current_page() == FramedHeaderBox.CONTENT)
173
from softwarecenter.ui.gtk3.widgets.spinner import SpinnerNotebook
174
self.assertTrue(rec_panel.spinner_notebook.get_current_page() == SpinnerNotebook.CONTENT_PAGE)
186
176
# test clicking recommended_for_you More button
187
177
lobby.connect("category-selected", self._on_category_selected)
190
180
self.assertNotEqual(self._cat, None)
191
181
self.assertEqual(self._cat.name, "Recommended For You")
184
# patch out the agent query method to avoid making the actual server call
185
@patch('softwarecenter.backend.recagent.RecommenderAgent'
186
'.query_recommend_me')
187
def test_subcatview_recommended_for_you_display_recommendations_not_opted_in(self, mock_query):
189
# patch the recommender UUID value to insure that we are not opted-in for this test
190
get_recommender_opted_in_patcher = patch('softwarecenter.backend.recagent.RecommenderAgent.is_opted_in')
191
self.addCleanup(get_recommender_opted_in_patcher.stop)
192
mock_get_recommender_opted_in = get_recommender_opted_in_patcher.start()
193
mock_get_recommender_opted_in.return_value = False
195
from softwarecenter.ui.gtk3.views.catview_gtk import get_test_window_catview
196
# get the widgets we need
197
win = get_test_window_catview()
198
# we want to work in the "subcat" view
199
notebook = win.get_child()
202
subcat_view = win.get_data("subcat")
204
self.assertFalse(subcat_view.recommended_for_you_in_cat.get_property("visible"))
207
# patch out the agent query method to avoid making the actual server call
208
@patch('softwarecenter.backend.recagent.RecommenderAgent'
209
'.query_recommend_me')
210
def test_subcatview_recommended_for_you_display_recommendations_opted_in(self, mock_query):
212
# patch the recommender UUID value to insure that we are not opted-in for this test
213
get_recommender_opted_in_patcher = patch('softwarecenter.backend.recagent.RecommenderAgent.is_opted_in')
214
self.addCleanup(get_recommender_opted_in_patcher.stop)
215
mock_get_recommender_opted_in = get_recommender_opted_in_patcher.start()
216
mock_get_recommender_opted_in.return_value = True
218
from softwarecenter.ui.gtk3.views.catview_gtk import get_test_window_catview
219
# get the widgets we need
220
win = get_test_window_catview()
221
# we want to work in the "subcat" view
222
notebook = win.get_child()
225
subcat_view = win.get_data("subcat")
226
rec_cat_panel = subcat_view.recommended_for_you_in_cat
228
rec_cat_panel._update_recommended_for_you_content()
230
# we fake the callback from the agent here
231
rec_cat_panel.recommended_for_you_cat._recommend_me_result(
233
make_recommender_agent_recommend_me_dict())
234
result_docs = rec_cat_panel.recommended_for_you_cat.get_documents(self.db)
235
self.assertNotEqual(result_docs, [])
236
# check that we are getting the correct number of results, corresponding
237
# to the following Internet items:
238
# Mangler, Midori, Midori Private Browsing, Psi
239
self.assertTrue(len(result_docs) == 4)
240
from softwarecenter.ui.gtk3.widgets.spinner import SpinnerNotebook
241
self.assertTrue(rec_cat_panel.spinner_notebook.get_current_page() == SpinnerNotebook.CONTENT_PAGE)
242
# check that the tiles themselves are visible
244
self.assertTrue(rec_cat_panel.recommended_for_you_content.get_property("visible"))
245
self.assertTrue(rec_cat_panel.recommended_for_you_content.get_children()[0].title.get_property("visible"))
247
# test clicking recommended_for_you More button
248
subcat_view.connect("category-selected", self._on_category_selected)
249
rec_cat_panel.more.clicked()
251
self.assertNotEqual(self._cat, None)
252
self.assertEqual(self._cat.name, "Recommended For You in Internet")
195
256
for i in range(5):