def test_fetcher_should_parse_response_from_client_into_a_list(self): client = MockClient('cheese') fetcher = DiscussionFetcher(client) most_commented = fetcher.fetch_most_commented('cheese') expected_most_commented = [("/p/3f262", 1312), ("/p/3f244", 973), ("/p/3f26a", 469), ("/p/3fxam", 422), ("/p/3f24d", 304)] self.assertEquals(expected_most_commented, most_commented)
def test_the_fetcher_should_pass_the_right_url_to_the_client(self): base_url = 'http://discussion.com/api' client = MockClient(base_url) fetcher = DiscussionFetcher(client) fetcher.fetch_most_commented(123) expected_url = 'http://discussion.com/api/popular?pageSize=123' self.assertEquals(expected_url, client.actual_url)
def test_the_fetcher_should_be_cool_about_trailing_slashes_on_the_base_url(self): base_url = 'http://discussion.com/api/' # Different from the last test, yeah? client = MockClient(base_url) fetcher = DiscussionFetcher(client) fetcher.fetch_most_commented(123) expected_url = 'http://discussion.com/api/popular?pageSize=123' self.assertEquals(expected_url, client.actual_url)
def test_the_fetcher_should_be_cool_about_trailing_slashes_on_the_base_url( self): base_url = 'http://discussion.com/api/' # Different from the last test, yeah? client = MockClient(base_url) fetcher = DiscussionFetcher(client) fetcher.fetch_most_commented(123) expected_url = 'http://discussion.com/api/popular?pageSize=123' self.assertEquals(expected_url, client.actual_url)
class CommentIsFree(handlers.EmailTemplate): recognized_versions = immutable.make_list('v1', 'v2', 'v3') ad_tag = 'email-speakers-corner' ad_config = {'leaderboard': 'Top'} ophan_client = OphanClient(mr.ophan_base_url, mr.ophan_key) most_shared_data_source = ds.MostSharedDataSource( most_shared_fetcher=MostSharedFetcher(ophan_client, section='commentisfree'), multi_content_data_source=ds.MultiContentDataSource( client=client, name='most_shared'), shared_count_interpolator=ds.MostSharedCountInterpolator()) discussion_client = DiscussionClient(mr.discussion_base_url) most_commented_data_source = ds.MostCommentedDataSource( discussion_fetcher=DiscussionFetcher(discussion_client, 'commentisfree'), multi_content_data_source=ds.MultiContentDataSource( client=client, name='most_commented'), comment_count_interpolator=ds.CommentCountInterpolator()) data_sources = immutable.make_dict({ 'v1': { 'uk_opinion_front': container.for_id('uk/commentisfree/regular-stories'), 'cif_cartoon': ds.CommentIsFreeCartoonDataSource(client), }, 'v3': { 'cif_most_shared': most_shared_data_source, 'cif_cartoon': ds.CommentIsFreeCartoonDataSource(client), }, 'v2': { 'cif_most_commented': most_commented_data_source, 'cif_cartoon': ds.CommentIsFreeCartoonDataSource(client), } }) priority_list = { 'v3': [('cif_cartoon', 1), ('cif_most_shared', 5)], 'v2': [('cif_cartoon', 1), ('cif_most_commented', 5)], 'v1': [ ('uk_opinion_front', 10), ('cif_cartoon', 1), ], } template_names = immutable.make_dict({ 'v3': 'comment-is-free/v3', 'v2': 'comment-is-free/v2', 'v1': 'comment-is-free/v1', })
class MostCommented(handlers.EmailTemplate): recognized_versions = ['v1'] n_items = 6 discussion_client = DiscussionClient(mr.discussion_base_url) discussion_fetcher = DiscussionFetcher(discussion_client) multi_content_data_source = ds.MultiContentDataSource( client=client, name='most_commented') comment_count_interpolator = ds.CommentCountInterpolator() most_commented_data_source = ds.MostCommentedDataSource( discussion_fetcher=discussion_fetcher, multi_content_data_source=multi_content_data_source, comment_count_interpolator=comment_count_interpolator) data_sources = {} data_sources['v1'] = {'most_commented': most_commented_data_source} priority_list = {'v1': [('most_commented', n_items)]} template_names = {'v1': 'most-commented'}