~mvo/software-center/workaround-gtk-regression-lp986186

« back to all changes in this revision

Viewing changes to test/gtk3/test_appdetailsview.py

  • Committer: Michael Vogt
  • Date: 2012-01-18 16:32:18 UTC
  • mfrom: (2668.1.1 any-language)
  • Revision ID: michael.vogt@ubuntu.com-20120118163218-it0ng83p0to6zvtw
* lp:~elachuni/software-center/relax-origin-distroseries:
  - provide "relaxed" mode for fetching reviews if the exact
    review matcher does not find anything (LP: #766951)

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
from testutils import setup_test_env
7
7
setup_test_env()
8
8
 
9
 
from mock import Mock
 
9
from mock import Mock, patch
10
10
 
11
11
from softwarecenter.db.application import Application
12
12
from softwarecenter.testutils import get_mock_app_from_real_app, do_events
170
170
 
171
171
        self.assertEqual(1, self.view._reviews_server_page)
172
172
 
 
173
    @patch('softwarecenter.backend.reviews.rnr.ReviewLoaderSpawningRNRClient'
 
174
           '.get_reviews')
 
175
    def test_no_reviews_returned_attempts_relaxing(self, mock_get_reviews):
 
176
        """AppDetailsView._reviews_ready_callback will attempt to drop the
 
177
           origin and distroseries restriction if no reviews are returned
 
178
           with the restrictions in place.
 
179
        """
 
180
        self.view._do_load_reviews()
 
181
 
 
182
        self.assertEqual(1, mock_get_reviews.call_count)
 
183
        kwargs = mock_get_reviews.call_args[1]
 
184
        self.assertEqual(False, kwargs['relaxed'])
 
185
        self.assertEqual(1, kwargs['page'])
 
186
 
 
187
        # Now we come back with no data
 
188
        application, callback = mock_get_reviews.call_args[0]
 
189
        callback(application, [])
 
190
 
 
191
        self.assertEqual(2, mock_get_reviews.call_count)
 
192
        kwargs = mock_get_reviews.call_args[1]
 
193
        self.assertEqual(True, kwargs['relaxed'])
 
194
        self.assertEqual(1, kwargs['page'])
 
195
 
 
196
    @patch('softwarecenter.backend.reviews.rnr.ReviewLoaderSpawningRNRClient'
 
197
           '.get_reviews')
 
198
    def test_all_duplicate_reviews_keeps_going(self, mock_get_reviews):
 
199
        """AppDetailsView._reviews_ready_callback will fetch another page if
 
200
           all data returned was already displayed in the reviews list.
 
201
        """
 
202
        # Fixme: Do we have a test factory?
 
203
        review = Mock()
 
204
        review.rating = 3
 
205
        review.date_created = "2011-01-01 18:00:00"
 
206
        review.version = "1.0"
 
207
        review.summary = 'some summary'
 
208
        review.review_text = 'Some text'
 
209
        review.reviewer_username = "name"
 
210
        review.reviewer_displayname = "displayname"
 
211
 
 
212
        reviews = [review]
 
213
        self.view.reviews.reviews = reviews
 
214
        self.view._do_load_reviews()
 
215
 
 
216
        self.assertEqual(1, mock_get_reviews.call_count)
 
217
        kwargs = mock_get_reviews.call_args[1]
 
218
        self.assertEqual(False, kwargs['relaxed'])
 
219
        self.assertEqual(1, kwargs['page'])
 
220
 
 
221
        # Now we come back with no NEW data
 
222
        application, callback = mock_get_reviews.call_args[0]
 
223
        callback(application, reviews)
 
224
 
 
225
        self.assertEqual(2, mock_get_reviews.call_count)
 
226
        kwargs = mock_get_reviews.call_args[1]
 
227
        self.assertEqual(False, kwargs['relaxed'])
 
228
        self.assertEqual(2, kwargs['page'])
 
229
 
173
230
 
174
231
if __name__ == "__main__":
175
232
    import logging