def test_article_iterator_with_multiple_categories_stops_at_limit(self):
     category_callback = Mock()
     callbacks = ArticleIteratorCallbacks(category_callback=category_callback)
     iterator = ArticleIterator(callbacks)
     iterator.limit = 10
     articles = [Mock()] * 10
     category = Mock()
     category.articles.return_value = articles
     iterator.categories = [category, category]
     iterator.iterate_categories()
     category_callback.assert_called_once_with(category=category, counter=10, article_iterator=iterator)
 def test_category_limit_is_respected_together_with_limit(self):
     category_callback = Mock()
     article_callback = Mock()
     callbacks = ArticleIteratorCallbacks(category_callback=category_callback, article_callback=article_callback)
     iterator = ArticleIterator(callbacks)
     iterator.limit = 5
     iterator.articles_per_category_limit = 3
     articles = [Mock()] * 10
     category = Mock()
     category.articles.return_value = articles
     iterator.categories = [category, category, category, category]
     iterator.iterate_categories()
     self.assertEqual(article_callback.call_count, 5)
     self.assertEqual(category_callback.call_count, 2)